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:
Inverser le décrochage pendant la phase de formation:
neural-networks
deep-learning
dropout
Franck Dernoncourt
la source
la source
Réponses:
"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.
la source
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
la source
Andrew a fait une très bonne explication dans son cours de Deep Learning sur cette session de régularisation des abandons :
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_prob
de 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 divisantkeep_prob
pour nous assurer que la valeur de Z [4] ne sera pas affectée.la source