Abandon: mise à l'échelle de l'activation par rapport à l'inversion de l'abandon

10

Lors de l'application du décrochage dans les réseaux de neurones artificiels, il faut compenser le fait qu'au moment de l'entraînement, une partie des neurones était désactivée. Pour ce faire, il existe deux stratégies communes:

  • mise à l'échelle de l'activation au moment du test
  • inverser le décrochage pendant la phase de formation

Les deux stratégies sont résumées dans les diapositives ci-dessous, tirées de Standford CS231n: Convolutional Neural Networks for Visual Recognition .

Quelle stratégie est préférable et pourquoi?


Mise à l'échelle de l'activation au moment du test:

entrez la description de l'image ici

Inverser le décrochage pendant la phase de formation:

entrez la description de l'image ici

Franck Dernoncourt
la source
Pourquoi devrions-nous mettre à l'échelle au lieu de ? Mon intuition est que plus l'abandon scolaire est important, plus nous devons compenser, non? Examinez la relation entre le taux d'abandon et le facteur de mise à l'échelle: <br> <br> <br> <br> <br> <br> <br> <br>1p11pdropout>1p>11p0.2>5>1.250.5>2>20.8>1.25>5
Ken Chan
"plus le décrochage est important, plus nous devons compenser" Correct, c'est pourquoi nous utilisons 1 / p. Si p = .1 pour que 90% des sorties soient supprimées, nous devons augmenter ces valeurs de 10. Notez que 1 / .1 = 10, tandis que 1 / (1-.1) = 1 / (. 9) = 1,1.
Tahlor

Réponses:

5

"inverser le décrochage pendant la phase de formation" devrait être préférable.

Théoriquement, si nous considérons le décrochage de Bernoulli comme une méthode pour ajouter du bruit au réseau, il est préférable que le bruit ait une moyenne nulle. Si nous effectuons la mise à l'échelle au moment de la formation pour annuler la partie des unités désactivées, la moyenne du bruit serait nulle.

Il existe d'autres types de méthodes de décrochage / bruit qui sont apparues plus tard (par exemple , décrochage multiplicatif gaussien, bruit additif gaussien ) qui possèdent également une moyenne nulle.

En termes de formation et de test des réseaux de neurones dans la pratique, il y a une raison de préférer une telle mise en œuvre également. Disons que je veux comparer les performances de deux modèles avec la même architecture, l'un est entraîné par abandon et l'autre ne l'est pas.

Si je "dimensionne l'activation au moment du test", alors j'aurai besoin de deux réseaux différents au moment du test. Si j'utilise la "version inversée", je pourrais simplement appliquer le même réseau de test (code) aux deux ensembles de paramètres formés.

dontloo
la source
Permettez-moi de m'assurer que je comprends bien: le modèle non inversé entraîné par abandon aurait en fait une architecture différente, car il aurait besoin d'implémenter la multiplication par p à chaque couche? Donc, l'ordinateur le considère comme topologiquement différent?
Eric Auld
@EricAuld salut désolé pour la réponse tardive, oui c'est essentiellement ce que je voulais dire, juste en "appliquant le même réseau de test", je voulais dire que vous n'aurez pas besoin de changer le code.
dontloo
4

Un autre avantage de faire le décrochage inversé (en plus de ne pas avoir à changer le code au moment du test) est que pendant l'entraînement, on peut avoir de la fantaisie et changer le taux de décrochage dynamiquement. Cela a été qualifié d'abandon "recuit". Essentiellement, la logique est que l'ajout de "bruit" de décrochage vers le début de la formation aide à empêcher l'optimisation de rester bloquée dans un minimum local, tout en la laissant se désintégrer à zéro à la fin, ce qui donne un réseau plus fin et plus performant.

FORMATION ANTI-SUPPRESSION DES RÉSEAUX PROFONDS

Abandon modifié pour la formation d'un réseau neuronal

JPJ
la source
3

Andrew a fait une très bonne explication dans son cours de Deep Learning sur cette session de régularisation des abandons :

  • Le décrochage inversé est plus courant car il facilite les tests
  • Le but de l'inversion est d'assurer que la valeur Z ne sera pas affectée par la réduction de W.

Dites a3 = a3 / keep_probà la dernière étape de la mise en œuvre:

Z [4] = W [4] * a [3] + b [4] , la taille de l' élément de a [3] a été réduite keep_probde D3 (un pourcentage d'éléments a été abandonné par D3), d'où la valeur de Z [4] va également être réduit, donc pour compenser cela grossièrement, nous allons inverser le changement en divisant keep_probpour nous assurer que la valeur de Z [4] ne sera pas affectée.

entrez la description de l'image ici

xmindata
la source