Pourquoi l'ajout d'une couche d'abandon améliore-t-il les performances d'apprentissage profond / machine, étant donné que l'abandon supprime certains neurones du modèle?


13

Si la suppression de certains neurones donne un modèle plus performant, pourquoi ne pas utiliser un réseau neuronal plus simple avec moins de couches et moins de neurones en premier lieu? Pourquoi construire un modèle plus grand et plus compliqué au début et en supprimer des parties plus tard?

Réponses:


31

La fonction de décrochage est d'augmenter la robustesse du modèle et également de supprimer les dépendances simples entre les neurones.

Les neurones ne sont supprimés que pour une seule passe en avant et en arrière à travers le réseau - ce qui signifie que leurs poids sont synthétiquement mis à zéro pour cette passe, et donc leurs erreurs le sont aussi, ce qui signifie que les poids ne sont pas mis à jour. Le décrochage fonctionne également comme une forme de régularisation , car il pénalise quelque peu le modèle pour sa complexité.

Je recommanderais de lire la section Dropout du livre Deep Learning de Michael Nielsen (gratuit et en ligne), qui donne une bonne intuition et a également des diagrammes / explications très utiles. Il explique que:

Le décrochage est une technique radicalement différente de régularisation. Contrairement à la régularisation L1 et L2, le décrochage ne repose pas sur la modification de la fonction de coût. Au lieu de cela, dans l'abandon, nous modifions le réseau lui-même.

Voici un bel article de synthèse . De cet article:

Quelques observations:

  • Le décrochage force un réseau de neurones à apprendre des fonctionnalités plus robustes qui sont utiles en conjonction avec de nombreux sous-ensembles aléatoires différents des autres neurones.
  • Le décrochage double à peu près le nombre d'itérations nécessaires pour converger. Cependant, le temps d'entraînement pour chaque époque est moindre.
  • Avec H unités cachées, dont chacune peut être supprimée, nous avons 2 ^ H modèles possibles. En phase de test, l'ensemble du réseau est pris en compte et chaque activation est réduite d'un facteur p.

Exemple

Imaginez que je vous demande de me faire une tasse de thé - vous pouvez toujours utiliser votre main droite pour verser l'eau, votre œil gauche pour mesurer le niveau d'eau, puis votre main droite à nouveau pour remuer le thé avec une cuillère. Cela signifierait que votre main gauche et votre œil droit ne servent à rien. Utiliser le décrochage, par exemple, attacherait votre main droite derrière votre dos - vous forçant à utiliser votre main gauche. Maintenant, après m'avoir fait 20 tasses de thé, avec un œil ou une main hors service, vous êtes mieux formé à utiliser tout ce qui est disponible. Peut-être que vous serez plus tard obligé de faire du thé dans une petite cuisine, où il est uniquement possible d'utiliser la bouilloire avec votre bras gauche ... et après avoir utilisé le décrochage, vous avez de l'expérience à le faire! Vous êtes devenu plus robuste pour les données invisibles.


comment déterminer la meilleure valeur d'abandon pour la classification multi-classes? et comment déterminer le meilleur nombre de couches de décrochage?
N.IT

2
@ N.IT - pour autant que je sache, il n'y a pas de méthode bien définie qui trouvera le meilleur niveau d'abandon ou le nombre de couches - à part jsut essayant de nombreuses combinaisons. Comme pour les autres méthodes de régularisation et d'exploration de l'architecture, vous obtiendrez probablement les meilleurs résultats en entraînant un modèle et en comparant les courbes de perte de formation / validation. Découvrez cette explication autour du sujet .
n1k31t4

Très bonne réponse. Pour être plus concret en ce qui concerne l'analogie avec votre cuisine, Dropout est utilisé uniquement pendant la formation, pas pendant l'inférence. Par conséquent, le modèle complexe n'est pas partiellement utilisé.
Vaibhav Garg

J'ai écrit cette réponse avec mes yeux fermés. gyes plus besoin de formation. nwws moew seopour.
VHanded

3

Dropout ne supprime pas réellement les neurones, c'est juste que ces neurones particuliers ne jouent aucun rôle (ne sont pas activés) pour le lot de données donné.

Exemple - Supposons qu'il y ait une route à 8 voies - Quand les camions arrivent, ils passent par les voies 1,2,4,6,7, quand les voitures arrivent, ils passent par les voies 2,3,4,7,8 et quand les vélos arrivent , ils traversent les voies 1,2,5,8. Donc, quel que soit le véhicule, toutes les voies sont là, mais seules certaines d'entre elles sont utilisées.

De même, tous les neurones sont utilisés dans le modèle entier, mais seul un sous-ensemble de neurones est activé pour un lot particulier de données. Et le modèle n'est pas coupé plus tard, la complexité du modèle reste inchangée.

Pourquoi utiliser le décrochage?

Comme indiqué dans le livre d'apprentissage en profondeur par Ian Goodfellow,

le décrochage est plus efficace que d'autres régularisateurs standard peu coûteux en calcul, tels que la décroissance de poids, les contraintes de norme de filtre et la régularisation d'activité clairsemée.

Il dit aussi-

Un des avantages du décrochage est qu'il est très bon marché en termes de calcul.

Un autre avantage significatif du décrochage est qu'il ne limite pas de manière significative le type de modèle ou de procédure de formation qui peut être utilisé. Il fonctionne bien avec presque tous les modèles qui utilisent une représentation distribuée et peut être entraîné avec une descente de gradient stochastique. Cela comprend les réseaux de neurones à action directe, les modèles probabilistes tels que les machines Boltzmann restreintes (Srivastava et al., 2014) et les réseaux de neurones récurrents (Bayer et Osendorfer, 2014; Pascanu et al., 2014a).

Ce livre dit-

L'idée centrale est que l'introduction de bruit dans les valeurs de sortie d'une couche peut briser des modèles de circonstances non significatives, que le réseau commencera à mémoriser s'il n'y a pas de bruit.


J'ai modifié la question pour utiliser le mot supprimer et non supprimer. La question demeure. Pourquoi construire autant de voies alors que seules certaines d'entre elles sont finalement utilisées?
user781486

@ user781486 Par certains d'entre eux, cela signifie certains d'entre eux pour chaque lot de données, mais tous seront utilisés si vous considérez des données entières. Comme dans mon exemple, toutes les voies 1-8 sont utilisées si vous prenez un ensemble combiné de numéros de voie pour chaque véhicule.
Ankit Seth

3

Une autre façon de voir ce que l'abandon fait est que c'est comme une dalle et un pic avant pour le coefficient d'une covariable (c'est-à-dire un terme d'interaction complexe des covariables originales avec des transformations fonctionnelles compliquées) dans un modèle bayésien. C'est l'interprétation proposée par Yarin Gal dans sa thèse (voir sa liste de publications ).

Voici un bref argument de la main pour expliquer pourquoi il en est ainsi:

  • Dans ces lots, où un neurone est éliminé, le coefficient de caractéristique / covariable (construit par connexion dans le réseau neuronal entrant dans le neurone) est nul (pic à zéro).
  • Dans ces lots, où le neurone est présent, le coefficient n'est pas limité (a priori plat incorrect = dalle).
  • En moyenne sur tous les lots, vous obtenez un pic et une dalle avant.

Pourquoi voudrions-nous une dalle et une pointe avant? Il induit un modèle bayésien faisant la moyenne entre un réseau neutre sans ce neurone et un avec celui-ci. En d'autres termes, il nous permet d'exprimer une incertitude quant à savoir si le réseau neutre a vraiment besoin d'avoir toute sa complexité possible et prend correctement en compte cette incertitude dans le prévisions. Cela résout le problème majeur des réseaux neutres capables de s'adapter aux données (bien que ce ne soit bien sûr pas le seul moyen possible d'y parvenir).


Bon point. Met à jour la réponse.
Björn

2

La couche de décrochage élimine sans discernement une partie spécifiée des neurones, ce qui diminue la capacité de représentation du modèle en question. Cela empêche le réseau d'ajuster des limites de décision non linéaires complexes (c'est-à-dire le "bruit" dans l'ensemble de données), empêchant ainsi (ou améliorant) le sur-ajustement.


0

L'abandon permet d'améliorer les performances d'un modèle d'apprentissage automatique pour les raisons suivantes:

  • Rendre le réseau plus simple: il simplifie donc le réseau et empêche le sur-ajustement.
  • Mieux que d'utiliser un seul réseau simple: c'est mieux que de recréer manuellement un réseau plus simple, car une fois que vous avez conçu une architecture particulière, vous ne pouvez pas la modifier avant la fin du processus de formation, c'est-à-dire que pour toutes les époques, l'architecture du réseau est fixe. Mais en cas d'abandon, le réseau est simplifié de différentes manières à chaque époque. Dites pour 1000 époques que vous essayez réellement avec 1000 types de variations de réseau plus simples.
  • Apprenez de plusieurs façons: L'entrée et la sortie du réseau ne sont pas modifiées, la seule chose qui change est la correspondance entre elles. Imaginez donc que le réseau apprenne la même chose de différentes manières. Donc, tout comme ce réseau, pour nous, les humains - chaque fois que nous pensons au même problème de différentes manières, nous apprenons automatiquement à le généraliser et notre connaissance et notre compréhension globales s'améliorent également et la même chose se produit pour le réseau. Comme au cours du processus de décrochage à chaque époque au hasard, certains poids (connexion d'un neurone à un autre neurone de la couche suivante) sont coupés, par conséquent, nous forçons le réseau à apprendre en utilisant les connexions existantes qui sont toujours disponibles et donc le réseau apprend comment analyser le même problème sous différents angles.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.