+1 vote
par (180 points) dans Séquence 2
Lorsque la fonction d'activation n'est pas différentiable partout (ReLu par exemple), comment le gradient est il défini (par morceaux par exemple) ?

Cela peut il poser problème (théorique et/ou numérique) lors de la minimisation ?

2 Réponses

+1 vote
par Vétéran du GPU 🐋 (48.7k points)
sélectionné par
 
Meilleure réponse
Pour la ReLU, on peut mettre 0 ou 1 (choisir un des deux côtés). ça importe peu car cet espace non dérivable a une mesure nulle donc on a une probabilité de 0 d'avoir le problème. Donc en pratique on tape toujours à côté donc on a jamais de soucis. Par contre on ne peut tolérer une fonction d'activation qui aura un espace non différentiable de mesure non nulle, car on a une certaine chance de tomber la dessus et ça devient un soucis, on a pas vraiment de raison de choisir une valeur plutôt qu'une autre.

La non dérivabilité de ReLU en 0 va troubler un mathématicien pur, mais dans le domaine du numérique, aucun problème ! :D
par (180 points)
Ok, c'est clair.
Cependant, dans le cas spécifique de ReLU pourquoi "choisir un des deux côtés" et non pas définir la dérivée par morceaux sur tout l'axe réel ?
par Vétéran du GPU 🐋 (48.7k points)
+1
On ne choisit pas l'un des côtés. C'est juste qu'on a une probabilité de 1 d'être sur un côté et non être rigoureusement à 0 (à la précision machine près). Donc la dérivée de relu peut être dérivée par morceau et ça va rien changer. Si jamais on a vraiment pas de chance et qu'on tombe à 0, déjà ça n'arrivera qu'une fois ou deux dans l'apprentissage (car proba de 0) et je dis qu'on choisit un côté car ça fait sens de faire un prolongement continu. En pratique ça importe peu. Même si on mettait n'importe quoi, ça ferait une itération contre-productive mais ça arrive tellement peu que c'est pas bien grave.
+1 vote
par Vétéran du GPU 🐋 (20.4k points)
Il est définit par morceaux. Cela ne pose pas problème car les valeurs ne valent jamais exactement 0.
par Vétéran du GPU 🐋 (20.4k points)
(Pour le cas de la ReLU)
...