Comprendre le décrochage et la descente du gradient

9

Je regarde comment implémenter le décrochage sur un réseau de neurones profond et j'ai trouvé quelque chose de contre-intuitif. Dans la phase avant, les activations du masque de décrochage avec un tenseur aléatoire de 1 et 0 pour forcer le filet à apprendre la moyenne des poids. Cela aide le net à mieux se généraliser. Mais pendant la phase de mise à jour de la descente de gradient, les activations ne sont pas masquées. Cela me semble contre-intuitif. Si je masque les activations de connexions avec abandon, pourquoi ne devrais-je pas masquer la phase de descente du gradient?

emanuele
la source
Je ne sais pas où vous avez trouvé une référence montrant le décrochage utilisé pour masquer les poids ? Je pense que c'est incorrect.
Neil Slater
vous avez raison, j'ai utilisé le mauvais concept.
emanuele

Réponses:

6

Dans le décrochage, comme décrit dans http://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf , les poids ne sont pas masqués. Au lieu de cela, les activations des neurones sont masquées, par exemple telles qu'elles sont présentées pour la formation (c'est-à-dire que le masque est randomisé pour chaque marche avant et backprop dégradé, jamais répété).

Les activations sont masquées lors de la passe avant et les calculs de gradient utilisent le même masque lors de la rétropropagation de cet exemple. Cela peut être implémenté en tant que modificateur dans une description de couche, ou en tant que couche de suppression séparée.

Pendant la phase de mise à jour du poids, généralement appliqué sur un mini-lot (où chaque exemple aurait eu un masque différent appliqué), il n'y a plus d'utilisation de masques de décrochage. Les valeurs de gradient utilisées pour la mise à jour ont déjà été affectées par les masques appliqués lors de la propagation arrière.

J'ai trouvé une référence utile pour apprendre comment fonctionne l'abandon, pour peut-être vous implémenter, est la boîte à outils Deep Learn pour Matlab / Octave.

Neil Slater
la source