Je lis maintenant un livre intitulé "Apprentissage automatique avec Scikit-Learn et TensorFlow" et au chapitre 11, il contient la description suivante de l'explication de ELU (Exponential ReLU).
Troisièmement, la fonction est fluide partout, y compris autour de z = 0, ce qui permet d'accélérer la descente de gradient, car elle ne rebondit pas autant à gauche et à droite de z = 0.
Le z
signifie l'axe des x sur le graphique ci-dessus. Je comprends que la dérivée est lisse car la z < 0
ligne a une courbe et dans ce domaine, la dérivée n'est plus égale à 0
.
Cependant, pourquoi est-il vrai que si la fonction est "lisse partout, y compris autour de z = 0", elle accélère la descente de gradient?
deep-learning
gradient-descent
Blaszard
la source
la source
Réponses:
Je suppose que cela est dû à la dérivée, car ReLU a une dérivée discontinue à 0. Par conséquent, si vous utilisez la définition:
et est très proche de 0, vous obtiendrez beaucoup de ces «sauts».x
la source
Un préliminaire: il y a trois attributs d'une fonction qui sont pertinents ici: continu, monotone et différenciable. Le RELU est un écrou continu et monotone non différenciable à z = 0. Le relu exponentiel ou ELU est tous les trois de ces attributs.
Le différentiel ou gradient vous donne une direction. Lorsque la dérivée d'une fonction n'est pas définie en un point, la direction du gradient est indéterminée en ce point.
Lors de l'application d'une descente de gradient, nous souhaitons modifier en continu les paramètres de sorte que la fonction de perte diminue régulièrement, ce qui revient à dire que nous souhaitons continuer à descendre vers le minimum.
Lorsque la dérivée d'une fonction de perte n'est pas définie à un moment donné, le gradient est indéterminé. Cela signifie que la descente du gradient pourrait potentiellement se déplacer dans la mauvaise direction. L'ampleur du retard causé par cette indétermination dépend du taux d'apprentissage et d'autres hyper-paramètres. Indépendamment des hyperparamètres, statistiquement, la dérivée non définie dans RELU à z = 0, contribue au ralentissement de la convergence de la descente de gradient.
la source
Être plus rapide ou plus bas est un terme relatif et doit être compris dans le contexte de ce à quoi il se compare. Donc, pour comprendre cela, nous devons d'abord considérer comment la descente de gradient fonctionne avec d'autres types de la fonction d'activation.
Exemple de configuration
...
Tanh et Sigmoid - Dégradé disparaissant
RELU et Dead Neuron
Leaky RELU et ELU
Je cite le papier original pour la différence entre les deux.
L'explication intuitive va comme suit. Dans ELU, chaque fois que x devenait suffisamment petit, le gradient devenait vraiment petit et saturé (de la même manière que cela se produit pour Tanh et Sigmoid). Le petit gradient signifie que l'algorithme d'apprentissage peut se concentrer sur le réglage d'autres poids sans se soucier de l'interactivité avec les neurones saturés.
Considérons un polynôme de degré 2 qui peut être représenté comme une surface lisse dans un espace 3D. Pour trouver le minimum local, un algorithme de descente de gradient devra tenir compte de la pente à la fois dans la direction x et y. Si le gradient est à la fois négatif dans la direction x et la direction y, il n'est pas clair quel chemin est le meilleur. Il est donc judicieux de choisir un chemin quelque part entre les deux. Mais que se passe-t-il si nous savons déjà que tout est plat (gradients zéro) dans la direction x, alors il devient évident de choisir la direction y. Ou en d'autres termes, votre espace de recherche devient beaucoup plus petit.
note spéciale
Dans l'apprentissage en profondeur, il y a beaucoup de revendications sans suffisamment de preuves empiriques ou de compréhension approfondie pour le soutenir. Dans le cas d'ELU, bien qu'il puisse être vrai que cela entraîne une convergence plus rapide pour certains ensembles de données, il pourrait également être vrai qu'il fait que l'algorithme d'apprentissage se bloque au maximum local pour un autre ensemble de données. Nous n'en savons tout simplement pas encore assez.
la source
J'ai une idée intuitive de la raison pour laquelle les fonctions lisses sont plus rapides à optimiser, mais aucune preuve mathématique ou quoi que ce soit.
La descente en gradient calcule la dérivée de la fonction d'activation pour déterminer le changement de poids. Lorsque la fonction d'activation a une coupe ferme (par exemple à z = 0 pour ReLu), l'activation de l'unité peut changer radicalement (c'est-à-dire toujours zéro ou linéaire) pour des points de données spécifiques lors du changement des poids.
Les autres pondérations doivent s'adapter à ce comportement radicalement différent d'une unité spécifique pour des points de données spécifiques. Si, cependant, le comportement de l'unité change radicalement à nouveau au cours de la prochaine époque, le réseau continue de s'adapter aux changements de l'époque précédente.
Avec une fonction lisse, il n'y a pas de tels changements radicaux. Et ainsi le réseau peut se stabiliser plus progressivement.
la source