Je suis actuellement un peu perplexe sur la façon dont la descente en gradient en mini-lot peut être piégée dans un point de selle.
La solution est peut-être trop insignifiante pour ne pas l’obtenir.
Vous obtenez un nouvel échantillon à chaque époque, et il calcule une nouvelle erreur en fonction d'un nouveau lot, de sorte que la fonction de coût est uniquement statique pour chaque lot, ce qui signifie que le gradient doit également changer pour chaque mini-lot .. mais en fonction de cela, cela devrait une implémentation vanilla a des problèmes avec les points de selle?
Un autre défi clé de la minimisation des fonctions d'erreur hautement non convexes communes aux réseaux de neurones est d'éviter d'être piégé dans leurs nombreux minima locaux sous-optimaux. Dauphin et al. [19] soutiennent que la difficulté ne vient en fait pas des minima locaux mais des points de selle, c'est-à-dire des points où une dimension s'incline vers le haut et une autre vers le bas. Ces points de selle sont généralement entourés d'un plateau de la même erreur, ce qui rend notoirement difficile pour SGD de s'échapper, car le gradient est proche de zéro dans toutes les dimensions.
Je voudrais dire que SGD en particulier aurait un avantage clair contre les points de selle, car il fluctue vers sa convergence ... Les fluctuations et l'échantillonnage aléatoire, et la fonction de coût étant différente pour chaque époque devraient être des raisons suffisantes pour ne pas être piégés dans une seule.
Pour un gradient de lot complet décent, il est logique qu'il puisse être piégé au point de selle, car la fonction d'erreur est constante.
Je suis un peu confus sur les deux autres parties.
la source
Réponses:
Jetez un œil à l'image ci-dessous de Off Convex . Dans une fonction convexe (image la plus à gauche), il n'y a qu'un minimum local, qui est aussi le minimum global. Mais dans une fonction non convexe (image la plus à droite), il peut y avoir plusieurs minima locaux et joindre souvent deux minima locaux est un point de selle. Si vous vous approchez d'un point plus élevé, le gradient est relativement plus plat et vous risquez de vous y coincer, surtout si vous vous déplacez uniquement dans une direction.
Maintenant, la chose est de savoir si vous optimisez à l'aide de mini-batchou descente de gradient stochastique, la fonction non convexe sous-jacente est la même et le gradient est une propriété de cette fonction. Lorsque vous effectuez un mini-batch, vous considérez de nombreux échantillons à la fois et effectuez la moyenne du pas de gradient sur chacun d'eux. Cela réduit la variance. Mais si la direction moyenne du gradient pointe toujours dans la même direction que le point de selle, vous risquez toujours de vous y coincer. L'analogie est que si vous faites 2 pas en avant et 1 pas en arrière, en moyenne par rapport à ceux-ci, vous finissez par faire un pas en avant. Si vous effectuez SGD à la place, vous effectuez toutes les étapes l'une après l'autre, mais si vous vous déplacez toujours dans une seule direction, vous pouvez atteindre le point de selle et constater que le dégradé de tous les côtés est assez plat et la taille de l'étape est trop petit pour passer sur cette partie plate. Ça ne marche pas
Jetez un œil à la visualisation ici . Même avec SGD, si les fluctuations ne se produisent que le long d'une seule dimension, les étapes devenant de plus en plus petites, elles convergeraient au point de selle. Dans ce cas, la méthode du mini-lot réduirait simplement la quantité de fluctuation mais ne serait pas en mesure de changer la direction du gradient.
La SGD peut parfois se détacher de simples points de selle, si les fluctuations sont dans d'autres directions et si la taille du pas est suffisamment grande pour qu'elle dépasse la planéité. Mais parfois, les régions de selle peuvent être assez complexes, comme dans l'image ci-dessous.
La façon dont les méthodes comme l'élan, ADAGRAD, Adam, etc. sont capables de sortir de cela, est de considérer les gradients passés. Considérez l'élan,
la source
Ça ne devrait pas.
[ 1 ] a montré que la descente de gradient avec une initialisation aléatoire et une taille de pas constante appropriée ne converge pas vers un point de selle. C'est une longue discussion mais pour vous donner une idée de pourquoi voir l'exemple suivant:
la source
Si vous consultez le document référencé (ils montrent également avec emphase comment leur approche sans selle améliore effectivement le SGD en mini-lot), ils déclarent:
Ils notent également la présence de "plateaux" à proximité des points de selle (en d'autres termes, la selle n'est pas raide) - dans ces cas, des pas trop petits entraîneraient en effet une convergence prématurée avant d'avoir échappé à la zone de selle. Puisqu'il s'agit d'une optimisation non convexe, la convergence du taux d'apprentissage aggraverait la situation.
Il semble possible que l'on puisse essayer une approche itérative, où l'on redémarre le mini-SGD une fois qu'il est terminé (c'est-à-dire, réinitialiser le taux d'apprentissage) pour voir si l'on peut échapper à la région problématique.
la source
Je pense que le problème est que lorsque vous approchez d'un point de selle, vous entrez dans un plateau, c'est-à-dire une zone avec de faibles gradients (en valeur absolue). Surtout lorsque vous approchez de la crête. Votre algorithme diminue donc la taille du pas. Avec une taille de pas réduite, tous les gradients (dans toutes les directions) sont désormais de petite valeur absolue. Donc l'algorithme s'arrête, pensant qu'il est au minimum.
Si vous ne diminuez pas les étapes, vous dépasserez le minimum et les manquerez beaucoup. Vous devez en quelque sorte diminuer la taille du pas.
la source