Qu’est-ce que le Dropout ? Réduisez le surajustement dans vos réseaux neuronaux

Dernière mise à jour le 17 décembre 2019

Lorsque vous formez des réseaux neuronaux, votre objectif est de produire un modèle très performant.

C’est parfaitement logique, car il n’y a aucun intérêt à utiliser un modèle qui n’est pas performant.

Cependant, il y a un équilibre relativement étroit que vous devrez maintenir lorsque vous tenterez de trouver un modèle parfaitement performant.

C’est l’équilibre entre l’underfitting et l’overfitting.

Pour éviter l’underfitting (avoir des performances prédictives moins bonnes que possible), vous pouvez continuer à vous entraîner, jusqu’à ce que vous rencontriez l’autre problème – l’overfitting, alias être trop sensible à vos données d’entraînement. Les deux nuisent aux performances du modèle.

Parfois, la plage dans laquelle votre modèle n’est ni sous-ajusté ni surajusté est vraiment petite. Heureusement, elle peut être étendue en appliquant ce que l’on appelle un régularisateur – une technique qui régularise la façon dont votre modèle se comporte pendant la formation, afin de retarder l’overfitting pendant un certain temps.

Dropout est une telle technique de régularisation. Dans ce billet de blog, nous la couvrons, en jetant un coup d’œil à deux choses. Tout d’abord, nous plongeons dans la différence entre underfitting et overfitting plus en détail, afin d’obtenir une compréhension plus profonde des deux. Deuxièmement, nous présentons le Dropout basé sur des travaux universitaires et nous vous expliquons comment il fonctionne. Troisièmement, nous examinerons s’il fonctionne vraiment, en décrivant les diverses expériences réalisées avec cette technique. Enfin, nous comparerons le Dropout traditionnel avec le Dropout gaussien – et comment cela change la formation de votre modèle.

Prêts ? Allons-y ! 😎

Comment se comporte votre modèle ? Sous-apprentissage et sur-apprentissage

Regardons d’abord ce que sont le sous-apprentissage et le sur-apprentissage.

Lorsque vous démarrez le processus d’apprentissage, les poids de vos neurones sont probablement initialisés au hasard ou avec une autre stratégie d’initialisation. Cela signifie que le taux d’erreur, ou valeur de perte, sera très élevé pendant les premières époques. Jetez un coup d’œil à ce diagramme, où la perte diminue très rapidement au cours des premières époques :

Lorsque la perte d’entraînement et la validation diminuent, on dit que le modèle est sous-adapté : il peut encore être entraîné pour faire de meilleures prédictions, c’est-à-dire pour gagner en puissance prédictive.

L’action à entreprendre est alors de continuer l’entraînement.

Cependant, cela ne peut pas continuer éternellement. L’optimisation d’un modèle implique de générer des prédictions de validation avec vos données de validation, ce qui donne des valeurs de perte et des gradients pour l’optimisation, qui est alors effectuée. Malheureusement, cela signifie que certaines des idéosyncrasies des données se retrouvent dans les poids du modèle. En effet, les données étant un échantillon et non une population complète, elles sont toujours légèrement différentes de la population complète qu’elles représentent. Lorsque vous optimisez le modèle pendant des centaines d’époques avec ces données, vous obtiendrez toujours un décalage par rapport à cette vraie population.

Si vous poursuiviez l’entraînement, votre modèle s’adapterait de plus en plus à ces idéosyncrasies, le rendant moins adapté aux données qu’il n’a jamais vues auparavant – c’est-à-dire aux autres échantillons de la population. On dit alors que le modèle est surajusté : il est trop bien adapté aux données d’entraînement et de validation.

Pause une seconde ! 👩💻

Les blogs de MachineCurve enseignent le Machine Learning pour les développeurs. Inscrivez-vous dès aujourd’hui à la mise à jour gratuite de MachineCurve sur l’apprentissage machine ! Vous apprendrez de nouvelles choses et comprendrez mieux les concepts que vous connaissez déjà.
Nous envoyons des e-mails au moins tous les vendredis. Bienvenue!

En vous inscrivant, vous consentez à ce que toute information que vous recevez puisse inclure des services et des offres spéciales par courriel.

L’overfitting peut être détecté sur des graphiques comme celui ci-dessus en inspectant la perte de validation : lorsqu’elle augmente à nouveau, alors que la perte d’entraînement reste constante ou diminue, vous savez que votre modèle est overfitting. Comme vous pouvez le voir, le réseau alimenté par ELU dans le graphique ci-dessus a commencé à s’ajuster très légèrement.

L’ajustement insuffisant et l’ajustement excessif sont tous deux à éviter, car votre modèle aura des performances inférieures à celles qu’il pourrait avoir en théorie. Heureusement, certaines techniques – appelées régularisateurs – peuvent être utilisées pour réduire l’impact de l’overfitting. Le Dropout est l’une d’entre elles – et nous allons l’aborder dans ce blog. Commençons par analyser ce qu’est le Dropout, ce qu’il fait et comment il fonctionne.

Qu’est-ce que le Dropout et comment fonctionne-t-il ?

Dans leur article « Dropout : A Simple Way to Prevent Neural Networks from Overfitting », Srivastava et al. (2014) décrivent la technique Dropout, qui est une technique de régularisation stochastique et devrait réduire l’overfitting en combinant (théoriquement) de nombreuses architectures de réseaux neuronaux différentes.

Avec Dropout, le processus de formation laisse essentiellement tomber les neurones d’un réseau neuronal. Ils sont temporairement retirés du réseau, ce qui peut être visualisé comme suit :

Notez que les connexions ou synapses sont également supprimées, et que par conséquent aucune donnée ne circule plus à travers ces neurones.

…mais seulement très brièvement ! Ce processus se répète à chaque époque (ou même à chaque minibatch ! – Srivastava et al. 2014) et donc l’échantillonnage de réseaux amincis se produit très souvent. Cela devrait conduire à des taux d’erreur de généralisation (c’est-à-dire de surajustement) nettement plus faibles, car  » la présence de neurones est rendue peu fiable  » (Srivastava et al., 2014).

Cette suppression de neurones et de synapses pendant l’apprentissage est effectuée de manière aléatoire, avec un paramètre \(p\) qui est accordable (ou, compte tenu des tests empiriques, mieux vaut le fixer à 0,5 pour les couches cachées et proche de 1,0 pour la couche d’entrée). Cela signifie effectivement que, selon les auteurs, le réseau « aminci » est échantillonné à partir de l’architecture globale, et utilisé pour la formation.

Au moment du test, « il n’est pas faisable de faire explicitement la moyenne des prédictions de modèles amincis exponentiellement nombreux » (Srivastava et al., 2014). C’est vrai : cela deviendrait une charge de calcul lorsque des centaines de milliers d’époques/minibatches doivent être moyennées, surtout lorsque les réseaux deviennent vraiment grands.

Heureusement, il existe une solution – qui est simple, mais qui produit le même résultat. En utilisant un seul réseau neuronal, où les sorties de poids sont mises à l’échelle en fonction de la \(p\) avec laquelle une unité a été retenue pendant la formation. Cela signifie que la sortie attendue au moment de la formation est la même que la sortie réelle au moment du test, ce qui résout le problème de calcul et rend le Dropout utilisable en pratique.

Variables de Bernoulli

Regardons maintenant comment le Dropout fonctionne mathématiquement. Ne vous inquiétez pas, nous ne vous enterrerons pas avec des maths, mais au lieu de cela, nous allons essayer de prendre un point de vue très intuitif.

Très simplement, c’est la façon dont un neurone reçoit son entrée : par exemple, trois neurones en amont dans une couche dense à trois neurones envoient leurs sorties à la couche suivante, où elle est reçue comme entrée. Notez que pour des raisons de simplicité, nous omettons ici les valeurs de biais.

Nevron normal (supposé sans biais)

Il est très simple de passer d’ici à un neurone Dropout, qui se présente comme suit :

Nevron Dropout (supposé sans biais)

Mathématiquement, cela implique des variables aléatoires dites de Bernoulli :

En théorie des probabilités et en statistique, la distribution de Bernoulli, du nom du mathématicien suisse Jacob Bernoulli, est la distribution de probabilité discrète d’une variable aléatoire qui prend la valeur 1 avec une probabilité \(p\).

Wikipédia sur la distribution de Bernoulli

Pour créer Dropout, Srivastava et al. (2014) ont attaché des variables de Bernoulli aux neurones du réseau (en les multipliant avec les sorties neuronales),  » chacune ayant une probabilité \(p\) d’être 1″. La valeur \(p\) est ici sélectionnée par l’ingénieur en apprentissage automatique, généralement sur la base d’un certain ensemble de validation, ou naïvement fixée à 0,5.

Ne manquez jamais les nouveaux articles sur l’apprentissage automatique ✅

Blogs de MachineCurve enseignent l’apprentissage automatique aux développeurs. Inscrivez-vous dès aujourd’hui à la mise à jour gratuite de MachineCurve sur l’apprentissage machine ! Vous apprendrez de nouvelles choses et comprendrez mieux les concepts que vous connaissez déjà.
Nous envoyons des e-mails au moins tous les vendredis. Bienvenue!

En vous inscrivant, vous consentez à ce que toute information que vous recevez puisse inclure des services et des offres spéciales par courriel.

A l’intérieur du réseau, la variable de Bernoulli et sa valeur de 1 ou 0 détermine si un neurone est  » abandonné  » pendant cette opération feedforward d’époque ou de minibatch. Ceci, en effet, conduit au  » réseau aminci  » dont parlent Srivastava et al. (2014).

Pourquoi le Dropout pourrait-il réduire l’overfitting ?

Vous pouvez maintenant vous demander : pourquoi les variables de Bernoulli attachées aux réseaux neuronaux réguliers, rendant le réseau plus mince, réduisent-elles l’overfitting ?

Pour répondre à cette question, nous devrons jeter un coup d’œil à la façon dont les réseaux neuronaux sont formés.

En général, la rétropropagation et la descente de gradient ou un optimiseur similaire sont utilisés à cette fin. Étant donné une valeur de perte, ce qu’on appelle des « gradients » sont calculés que l’optimiseur traite ensuite dans les poids du réseau. En utilisant ces gradients (par rapport au taux d’erreur) pour modifier les poids, le réseau est susceptible d’obtenir des performances légèrement meilleures lors de l’itération suivante du processus de formation.

Le calcul du gradient se fait par rapport à l’erreur, mais aussi par rapport à ce que font toutes les autres unités (Srivastava et al., 2014). Cela signifie que certains neurones, par des modifications de leurs poids, peuvent réparer les erreurs des autres neurones. Ceux-ci, selon Srivastava et al. (2014), conduisent à des co-adaptations complexes qui peuvent ne pas être généralisées à des données non vues, ce qui entraîne un sur-ajustement.

Le dropout, alors, empêche ces co-adaptations en – comme nous l’avons écrit auparavant – rendant la présence d’autres cachés peu fiable. Les neurones ne peuvent tout simplement pas compter sur d’autres unités pour corriger leurs erreurs, ce qui réduit le nombre de co-adaptations qui ne se généralisent pas aux données non vues, et donc vraisemblablement réduit également le surajustement.

Formation de réseaux de neurones avec Dropout

La formation de réseaux de neurones auxquels Dropout a été attaché est à peu près égale à la formation de réseaux de neurones sans Dropout. La descente de gradient stochastique ou des optimiseurs similaires peuvent être utilisés. La seule différence, telle que rapportée par Srivastava et al. (2014), peut être trouvée lors de l’utilisation d’une approche par mini-batch : plutôt que par époque, les réseaux amincis sont échantillonnés par mini-batch.

En outre, les méthodes qui améliorent la SGD classique – comme le momentum – peuvent également être utilisées, et montrent des améliorations similaires à celles des réseaux neuronaux réguliers (Srivastava et al, 2014).

Ce que les auteurs ont également trouvé utile pendant l’entraînement est l’application de la régularisation de la norme maximale, ce qui signifie contraindre la norme du poids entrant à être limitée par une certaine valeur maximale \(c\). Cette valeur doit être fixée par l’ingénieur en amont, et déterminée à l’aide d’un ensemble de validation (Srivastava et al…, 2014).

La combinaison du Dropout avec la régularisation max-norm améliore les performances par rapport à l’utilisation du Dropout seul, mais les auteurs ont signalé des résultats encore meilleurs lorsque le Dropout et la régularisation max-norm sont combinés avec deux autres choses :

  • Les taux d’apprentissage importants et décroissants.
  • Un momentum élevé.

Selon Srivastava et al. (2014), cela peut éventuellement être justifié par les arguments suivants :

  1. La contraction des vecteurs de poids permet d’utiliser de grands taux d’apprentissage sans faire exploser les poids.
  2. Le bruit de décrochage plus les grands taux d’apprentissage aident alors les optimiseurs « à explorer différentes régions de l’espace des poids qui auraient été autrement difficiles à atteindre ».
  3. La décroissance du taux d’apprentissage ralentit alors le caractère sauté du processus d’exploration, pour finalement « s’installer dans un minimum ».
  4. Un momentum élevé permet au réseau de surmonter les minima locaux, augmentant la probabilité que le minimum global soit trouvé.

Le décrochage fonctionne-t-il réellement ? Résultats expérimentaux

Avec toute amélioration de l’apprentissage automatique, il est agréable d’avoir une amélioration théorique – mais il est également important de tester si cela fonctionne réellement. Srivastava et al. (2014) ont effectué de multiples tests pour savoir si Dropout fonctionne. Premièrement, ils ont utilisé divers ensembles de données standard (tels que l’ensemble de données MNIST) pour tester si le Dropout améliore les performances du modèle sur un large éventail de problèmes de classification.

Deuxièmement, ils ont vérifié comment il se comporte avec une variété d’autres régularisateurs (ce qui donne la perspicacité que la régularisation max-norm avec le Dropout fonctionne le mieux – mais nous allons examiner ces résultats plus en détail plus tard), et troisièmement, Srivastava et al. (2014) ont étudié quels taux de dropout (c’est-à-dire, quel paramètre \(p\)) fonctionne le mieux et comment la taille des données a un impact sur les performances de Dropout. Jetons un coup d’œil!

Échantillons du jeu de données MNIST

Dropout vs no dropout sur des jeux de données standard

Les auteurs ont testé Dropout vs No Dropout sur ces jeux de données standard (Srivastava et al, 2014) :

  • Le jeu de données MNIST, qui contient des milliers de chiffres manuscrits ;
  • Le jeu de données de référence de la parole TIMIT pour la reconnaissance de la parole propre.
  • Les jeux de données CIFAR-10 et CIFAR-100, contenant de minuscules images naturelles dans 10 et 100 classes.
  • Le jeu de données Street View House Numbers (SVHN), avec des images de numéros de maison collectées à partir de Google Street View.
  • Le jeu de données ImageNet, qui contient de nombreuses images naturelles.
  • Le jeu de données d’articles de presse Reuters RCV1. Il s’agit d’un jeu de données de texte plutôt que d’un jeu de données d’images.
Échantillons du jeu de données CIFAR10

Pour tous les jeux de données, Dropout a amélioré le pouvoir de généralisation du modèle. Sur MNIST, des erreurs de test radicalement différentes ont pu être signalées, avec des améliorations substantielles pour toutes les différentes architectures testées.

Rejoignez des centaines d’autres apprenants ! 😎

Les blogs de MachineCurve enseignent l’apprentissage automatique pour les développeurs. Inscrivez-vous à la mise à jour gratuite de MachineCurve sur l’apprentissage machine dès aujourd’hui ! Vous apprendrez de nouvelles choses et comprendrez mieux les concepts que vous connaissez déjà.
Nous envoyons des e-mails au moins tous les vendredis. Bienvenue!

En vous inscrivant, vous consentez à ce que toute information que vous recevez puisse inclure des services et des offres spéciales par courriel.

Dropout surpasse également les réseaux neuronaux réguliers sur les ConvNets formés sur CIFAR-100, CIFAR-100, et les jeux de données ImageNet.

Pour le jeu de données SVHN, une autre observation intéressante pourrait être rapportée : lorsque Dropout est appliqué sur la couche convolutionnelle, les performances augmentent également. Selon les auteurs, cela est intéressant, car auparavant, ces couches étaient supposées ne pas être sensibles à l’overfitting car elles n’ont pas beaucoup de paramètres (Srivastava et al., 2014). Il est avancé que l’ajout de Dropout aux couches Conv fournit des entrées bruitées aux couches Dense qui les suivent, ce qui les empêche davantage de s’ajuster excessivement.

Enfin, Dropout fonctionne sur les ensembles de données de référence de la parole TIMIT et l’ensemble de données Reuters RCV1, mais ici l’amélioration était beaucoup plus faible par rapport aux ensembles de données de vision et de parole.

Dropout vs pas de dropout avec d’autres régularisateurs

Maintenant que les auteurs savaient que Dropout s’échelonne bien sur une variété de problèmes d’apprentissage automatique, ils l’ont étudié plus avant : comment se comporte-t-il par rapport à d’autres régularisateurs ?

Plusieurs méthodes de régularisation ont été testées pour prévenir le surajustement :

  • L2 weight decay;
  • Lasso;
  • KL sparsity;
  • Régularisation max-norm.

Srivastava et al. (2014) ont constaté que lorsqu’il est combiné avec la régularisation max-norm, Dropout donne des erreurs de généralisation encore plus faibles. En fait, il a fourni l’erreur la plus faible rapportée, suivi – à une certaine distance – par le Dropout + régularisation L2, et enfin les autres.

Par conséquent, lors de l’application du Dropout, il pourrait également être une bonne idée d’effectuer une régularisation max-normale en même temps.

Quand le Dropout fonctionne-t-il le mieux ? À propos du taux de décrochage et de la taille de l’ensemble de données

Une autre question à laquelle ils ont tenté de répondre : le taux de décrochage (c’est-à-dire le paramètre \(p\)) et/ou la taille de l’ensemble de données ont-ils un impact sur les performances du Dropout et des réseaux neuronaux auxquels il est attaché ?

Il faut répondre par l’affirmative à cette question.

Quelle est la meilleure valeur pour \(p\) ?

Premièrement, le paramètre \(p\). Nous pouvons maintenant nous rappeler qu’il est ajustable, et qu’il doit en fait être fixé au départ par l’ingénieur en apprentissage machine. Le fait qu’il soit accordable conduit aux mêmes erreurs que celles qui expliquent pourquoi les taux d’apprentissage fixes ne sont pas une bonne idée : vous ne savez tout simplement pas quel \(p\) s’adapte le mieux aux données.

Donc, selon les auteurs, la sélection d’une valeur pour \(p\) doit se faire par quelques tests initiaux avec un ensemble de validation.

Ils l’ont également fait – afin de voir si des modèles intéressants pouvaient être trouvés.

Et ils ont trouvé un tel modèle : à travers de multiples scénarios, une valeur de \(p \approx 0,5\) pour les couches cachées semble entraîner les meilleures performances lors de l’application de Dropout (Srivastava et al, 2014). Cela est vrai pour toutes les couches, à l’exception de la couche d’entrée, où la valeur de \(p \) doit être \(\approximativement 1,0\). Ce dernier cas est vraisemblablement dû au fait que la couche d’entrée prend les données d’entrée, et qu’il est difficile de trouver des modèles lorsque les données sont abandonnées au hasard.

Comment se comporte Dropout par rapport à la taille de l’ensemble de données ?

Selon les auteurs, un « bon régularisateur permet d’obtenir une bonne erreur de généralisation à partir de modèles avec un grand nombre de paramètres formés sur de petits ensembles de données ». C’est-à-dire qu’il est très performant sur des données qu’il n’a pas vues auparavant – même lorsqu’il est entraîné avec de petites données.

Afin de savoir si Dropout régularise bien sur différentes tailles de jeux de données, Srivastava et al. (2014) ont effectué des tests avec différentes tailles sur le jeu de données MNIST. Les tailles étaient les suivantes :  » 100, 500, 1K, 5K, 10K et 50K choisis au hasard dans l’ensemble d’entraînement MNIST  » (Srivastava et al., 2014).

Nous vous aidons avec l’apprentissage automatique ! 🧠

Les blogs de MachineCurve enseignent l’apprentissage automatique aux développeurs. Inscrivez-vous à la mise à jour gratuite de MachineCurve sur l’apprentissage machine dès aujourd’hui ! Vous apprendrez de nouvelles choses et comprendrez mieux les concepts que vous connaissez déjà.
Nous envoyons des e-mails au moins tous les vendredis. Bienvenue!

En vous inscrivant, vous consentez à ce que toute information que vous recevez puisse inclure des services et des offres spéciales par courriel.

Les auteurs ont constaté qu’il y a un compromis entre le moment où Dropout est nécessaire, et celui où il n’est plus utile. Tout d’abord, pour couvrir le cas où le jeu de données est extrêmement petit : même Dropout n’améliore pas les performances dans ce cas, simplement parce que la taille du jeu de données est trop petite. La même chose est vraie pour les ensembles de données qui sont assez grands : Dropout n’améliore alors plus le modèle, mais au contraire, la performance du modèle se dégrade.

Il existe donc un sweet spot, quand Dropout est nécessaire et quand il est intelligent de ne pas l’utiliser (ou d’augmenter la taille du dataset). Selon Srivastava et al. (2014), il n’y a pas d’heuristique pour déterminer cette taille ; elle doit plutôt être déterminée avec un ensemble de validation.

Dépôt gaussien : Variables gaussiennes au lieu de Bernoulli

Nous rappelons de ce qui précède que Dropout fonctionne avec des variables de Bernoulli qui prennent 1 avec la probabilité \(p\) et 0 avec le reste, soit \(1 – p\).

Cette idée peut être généralisée pour multiplier les activations avec des variables aléatoires d’autres distributions (Srivastava et al., 2014). Dans leurs travaux, Srivastava et al. ont constaté que la distribution gaussienne et donc les variables gaussiennes fonctionnent tout aussi bien – et peut-être même mieux.

L’application de variables gaussiennes peut se faire de manière similaire : éclaircir les réseaux au moment de la formation, et utiliser des activations pondérées au moment du test et de la production (comme avec le Dropout régulier). Cependant, les auteurs choisissent d’utiliser le Dropout gaussien différemment, c’est-à-dire de manière multiplicative. Au lieu d’éclaircir et de pondérer, le décrochage gaussien est pondéré au moment de la formation, lorsque les valeurs activées qui ne sont pas abandonnées sont multipliées par \(1/p\) au lieu de \(1\) (avec le décrochage de Bernoulli ordinaire). Elles ne sont pas modifiées au moment du test. Cela équivaut au scénario précédent.

La Dropout gaussienne doit être configurée par un certain \(\sigma\), qui dans les expériences de Srivastava et al. était fixé à \(\sqrt{(1-p)/p}\), où \(p\) est la configuration de la variante Bernoulli (c’est-à-dire, dans les cas naïfs \(p \approximativement 0,5\) pour les couches cachées et \(\approximativement 1,0\) pour la couche d’entrée).

Summary

Dans ce billet de blog, nous avons examiné l’overfitting – et comment l’éviter, avec Dropout. En examinant ce que c’est, comment cela fonctionne, et que cela fonctionne, nous avons constaté que c’est une technique intéressante à appliquer dans vos modèles d’apprentissage profond.

J’espère que vous avez appris quelque chose aujourd’hui – quelque chose d’utile pour vos modèles ML 😀 Si c’est le cas, ou lorsque vous avez des questions, n’hésitez pas à laisser un commentaire ci-dessous ⬇ ! Dans la mesure du possible, je répondrai à vos questions 😊

Merci de lire MachineCurve aujourd’hui et bonne ingénierie ! 😎

Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014, 15 juin). Dropout : Un moyen simple d’empêcher les réseaux neuronaux de s’adapter excessivement. Récupéré de http://jmlr.org/papers/v15/srivastava14a.html

Wikipedia. (2003, 20 mars). Distribution de Bernoulli. Récupéré de https://en.wikipedia.org/wiki/Bernoulli_distribution

💡 Maîtrisez votre ML – consultez aussi ces posts :

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.