Je lisais sur l' optimiseur Adam pour le Deep Learning et suis tombé sur la phrase suivante dans le nouveau livre Deep Learning de Begnio, Goodfellow et Courtville:
Adam inclut des corrections de biais dans les estimations des moments du premier ordre (le terme de momentum) et des moments du second ordre (non centrés) pour tenir compte de leur initialisation à l'origine.
il semble que la principale raison d'inclure ces termes de correction de biais est qu'il supprime en quelque sorte le biais de l'initialisation de et .
- Je ne suis pas sûr à 100% de ce que cela signifie, mais il me semble que cela signifie probablement que le premier et le deuxième moment commencent à zéro et que le démarrage à zéro incline les valeurs plus près de zéro d'une manière injuste (ou utile) pour la formation ?
- Bien que j'aimerais savoir ce que cela signifie un peu plus précisément et comment cela nuit à l'apprentissage. En particulier, quels sont les avantages de la non-polarisation de l'optimiseur en termes d'optimisation?
- Comment cela aide-t-il à former des modèles d'apprentissage en profondeur?
- Aussi, qu'est-ce que cela signifie quand il est impartial? Je sais ce que signifie l'écart-type non biaisé, mais je ne comprends pas bien ce que cela signifie dans ce contexte.
- La correction du biais est-elle vraiment un gros problème ou est-ce quelque chose de sur-typé dans le papier d'optimisation Adam?
Juste pour que les gens sachent que j'ai vraiment essayé de comprendre le papier original, mais j'ai très peu retiré de la lecture et de la relecture du papier original. Je suppose que certaines de ces questions pourraient y trouver une réponse, mais je n'arrive pas à analyser les réponses.
la source
Réponses:
Le problème de NE PAS corriger le biais
Selon l'article
Normalement, dans la pratique, est défini beaucoup plus près de 1 que (comme suggéré par l'auteur , ), donc les coefficients de mise à jour sont beaucoup plus petits que .β2 β1 β2=0.999 β1=0.9 1−β2=0.001 1−β1=0.1
Dans la première étape de la formation , , le terme dans la mise à jour des paramètres peut être très important si nous utilisons directement l'estimation biaisée.m1=0.1gt v1=0.001g2t m1/(v1−−√+ϵ)
D'un autre côté, lorsque vous utilisez l'estimation corrigée du biais, et , le terme devient moins sensible à et .m1^=g1 v1^=g21 mt^/(vt^−−√+ϵ) β1 β2
Comment le biais est corrigém0 mt=βmt−1+(1−β)gt m0
L'algorithme utilise la moyenne mobile pour estimer les premier et deuxième moments. L'estimation biaisée serait, nous partons d'une estimation arbitraire , et mettons à jour l'estimation progressivement par . Il est donc évident que dans les premières étapes, notre moyenne mobile est fortement biaisée vers le initial .
Pour corriger cela, nous pouvons supprimer l'effet de la supposition initiale (biais) de la moyenne mobile. Par exemple, au temps 1, , nous le terme de et le divisons par , ce qui donne . Lorsque , . La preuve complète est donnée dans la section 3 du document.m1=βm0+(1−β)gt βm0 m1 (1−β) m1^=(m1−βm0)/(1−β) m0=0 mt^=mt/(1−βt)
Comme l'a bien dit Mark L. Stone
D'une certaine manière, ce n'est pas exactement équivalent à
(bien sûr, il peut être transformé en la même forme en changeant la règle de mise à jour (voir la mise à jour de la réponse), et je pense que cette ligne vise principalement à montrer l'inutilité d'introduire le biais, mais peut-être vaut-il la peine de remarquer la différence)
Par exemple, le premier instant corrigé à l'instant 2
Si vous utilisez tant que valeur initiale avec la même règle de mise à jour, qui plutôt au cours des premières étapes.g1 m2=βg1+(1−β)g2 g1
La correction du biais est-elle vraiment un gros problème
Comme elle n'affecte réellement que les premières étapes de la formation, cela ne semble pas être un gros problème, dans de nombreux cadres populaires (par exemple keras , caffe ), seule l'estimation biaisée est mise en œuvre.
D'après mon expérience, l'estimation biaisée conduit parfois à des situations indésirables où la perte ne diminuera pas (je ne l'ai pas testé à fond, donc je ne suis pas exactement sûr si cela est dû à l'estimation biaisée ou à autre chose), et une astuce que j'utilise utilise un plus grand pour modérer les tailles de pas initiales.ϵ
Mise à jourm^t
m^t=βt−1g1+βt−2g2+...+gtβt−1+βt−2+...+1
Si vous dépliez les règles de mise à jour récursive, est une moyenne pondérée des dégradés, Le dénominateur peut être calculé par la formule de somme géométrique, il est donc équivalent à la mise à jour suivante règle (qui n'implique pas de terme biaisé)
sans converger do (somme pondérée) (moyenne pondérée)
Par conséquent, cela peut être possible sans introduire un terme de biais et sans le corriger. Je pense que le papier l'a mis dans la forme de correction de biais pour la commodité de la comparaison avec d'autres algorithmes (par exemple RmsProp).
la source