Recherche de site Web

Utiliser la régularisation du poids pour réduire le surajustement des modèles d'apprentissage profond


Les réseaux de neurones apprennent un ensemble de poids qui mappent au mieux les entrées aux sorties.

Un réseau avec des poids de réseau importants peut être le signe d'un réseau instable dans lequel de petits changements dans l'entrée peuvent entraîner des changements importants dans la sortie. Cela peut être le signe que le réseau a surajusté l'ensemble de données d'entraînement et qu'il fonctionnera probablement mal lors des prédictions sur de nouvelles données.

Une solution à ce problème consiste à mettre à jour l’algorithme d’apprentissage pour encourager le réseau à maintenir des pondérations faibles. C'est ce qu'on appelle la régularisation du poids et elle peut être utilisée comme technique générale pour réduire le surajustement de l'ensemble de données d'entraînement et améliorer la généralisation du modèle.

Dans cet article, vous découvrirez la régularisation du poids comme approche pour réduire le surapprentissage des réseaux neuronaux.

Après avoir lu cet article, vous saurez :

  • Des poids importants dans un réseau neuronal sont le signe d'un réseau plus complexe qui a surajusté les données d'entraînement.
  • Pénaliser un réseau en fonction de la taille des poids du réseau pendant la formation peut réduire le surapprentissage.
  • Une pénalité de norme vectorielle L1 ou L2 peut être ajoutée à l'optimisation du réseau pour encourager des poids plus petits.

Démarrez votre projet avec mon nouveau livre Better Deep Learning, comprenant des tutoriels pas à pas et les fichiers code source Python pour tous les exemples .

Commençons.

Problème avec les gros poids

Lors de l'ajustement d'un modèle de réseau neuronal, nous devons apprendre les poids du réseau (c'est-à-dire les paramètres du modèle) à l'aide de la descente de gradient stochastique et de l'ensemble de données d'entraînement.

Plus nous entraînons le réseau longtemps, plus les poids deviendront spécialisés pour les données d'entraînement, surajustant les données d'entraînement. La taille des poids augmentera afin de gérer les spécificités des exemples vus dans les données d'entraînement.

Des poids importants rendent le réseau instable. Bien que le poids soit spécialisé dans l'ensemble de données d'entraînement, une variation mineure ou un bruit statistique sur les entrées attendues entraînera de grandes différences dans les résultats.

Des poids élevés ont tendance à provoquer des transitions brusques dans les fonctions des nœuds et donc des changements importants dans la sortie pour de petits changements dans les entrées.

— Page 269 Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels à action directe, 1999.

En général, nous considérons ce modèle comme ayant une grande variance et un faible biais. Autrement dit, le modèle est sensible aux exemples spécifiques, au bruit statistique, dans l'ensemble de données d'entraînement.

Un modèle avec des poids élevés est plus complexe qu’un modèle avec des poids plus petits. C'est le signe d'un réseau peut-être trop spécialisé dans les données de formation. En pratique, on préfère choisir les modèles les plus simples pour résoudre un problème (ex. le rasoir d’Occam). Nous préférons les modèles avec des poids plus petits.

… étant donné certaines données d'entraînement et une architecture de réseau, plusieurs ensembles de valeurs de poids (plusieurs modèles) pourraient expliquer les données. Les modèles plus simples sont moins susceptibles d’être sur-ajustés que les modèles complexes. Un modèle simple dans ce contexte est un modèle où la distribution des valeurs des paramètres a moins d'entropie

— Page 107, Deep Learning avec Python, 2017.

Un autre problème possible est qu'il peut y avoir de nombreuses variables d'entrée, chacune ayant différents niveaux de pertinence par rapport à la variable de sortie. Parfois, nous pouvons utiliser des méthodes pour faciliter la sélection des variables d’entrée, mais souvent les relations entre les variables ne sont pas évidentes.

Avoir des poids faibles, voire nuls, pour les entrées moins pertinentes ou non pertinentes dans le réseau permettra au modèle de concentrer l'apprentissage. Cela également aboutira à un modèle plus simple.

Encouragez les petits poids

L'algorithme d'apprentissage peut être mis à jour pour encourager le réseau à utiliser de petits poids.

Une façon d’y parvenir consiste à modifier le calcul de perte utilisé dans l’optimisation du réseau pour tenir également compte de la taille des poids.

N'oubliez pas que lorsque nous entraînons un réseau neuronal, nous minimisons une fonction de perte, telle que la perte logarithmique en classification ou l'erreur quadratique moyenne en régression. En calculant la perte entre les valeurs prédites et attendues dans un lot, nous pouvons ajouter la taille actuelle de tous les poids du réseau ou ajouter une couche à ce calcul. C'est ce qu'on appelle une pénalité car nous pénalisons le modèle proportionnellement à la taille des poids dans le modèle.

De nombreuses approches de régularisation reposent sur la limitation de la capacité des modèles, tels que les réseaux de neurones, la régression linéaire ou la régression logistique, en ajoutant une pénalité […] à la fonction objectif.

— Page 230, Apprentissage profond, 2016.

Des poids plus élevés entraînent une pénalité plus importante, sous la forme d’un score de perte plus élevé. L'algorithme d'optimisation poussera ensuite le modèle à avoir des poids plus petits, c'est-à-dire des poids pas plus grands que nécessaire pour obtenir de bons résultats sur l'ensemble de données d'entraînement.

Les poids plus petits sont considérés comme plus réguliers ou moins spécialisés et, à ce titre, nous appelons cette pénalité la régularisation du poids.

Lorsque cette approche consistant à pénaliser les coefficients du modèle est utilisée dans d'autres modèles d'apprentissage automatique tels que la régression linéaire ou la régression logistique, on peut parler de retrait, car la pénalité encourage les coefficients à diminuer pendant le processus d'optimisation.

Rétrécissement. Cette approche consiste à ajuster un modèle impliquant tous les prédicteurs p. Cependant, les coefficients estimés se rétrécissent vers zéro […] Ce retrait (également appelé régularisation) a pour effet de réduire la variance

— Page 204, Une introduction à l'apprentissage statistique : avec des applications dans R, 2013.

L'ajout d'une pénalité de taille de poids ou d'une régularisation de poids à un réseau neuronal a pour effet de réduire l'erreur de généralisation et de permettre au modèle d'accorder moins d'attention aux variables d'entrée moins pertinentes.

1) Il supprime toutes les composantes non pertinentes du vecteur de poids en choisissant le plus petit vecteur qui résout le problème d'apprentissage. 2) Si la taille est choisie correctement, une diminution du poids peut supprimer une partie de l'effet du bruit statique sur les cibles.

— Une simple perte de poids peut améliorer la généralisation, 1992.

Comment pénaliser les gros poids

Il y a deux parties pour pénaliser le modèle en fonction de la taille des poids.

Le premier est le calcul de la taille des poids, et le second est l’attention que le processus d’optimisation doit accorder à la pénalité.

Calculer la taille du poids

Les poids des réseaux neuronaux sont des valeurs réelles qui peuvent être positives ou négatives. En tant que telles, la simple addition des poids n'est pas suffisante. Il existe deux approches principales utilisées pour calculer la taille des poids :

  • Calculez la somme des valeurs absolues des poids, appelée L1.
  • Calculez la somme des carrés des poids, appelée L2.

L1 encourage les pondérations à 0,0 si possible, ce qui entraîne des pondérations plus clairsemées (pondérations avec plus de valeurs 0,0). L2 offre plus de nuances, pénalisant plus sévèrement les poids plus élevés, mais aboutissant à des poids moins clairsemés. L'utilisation de L2 dans la régression linéaire et logistique est souvent appelée régression Ridge. Ceci est utile à connaître lorsque l’on essaie de développer une intuition de la pénalité ou des exemples de son utilisation.

Dans d'autres communautés universitaires, la régularisation L2 est également connue sous le nom de régression de crête ou régularisation de Tikhonov.

— Page 231, Apprentissage profond, 2016.

Les poids peuvent être considérés comme un vecteur et la grandeur d'un vecteur est appelée sa norme, en algèbre linéaire. En tant que tel, pénaliser le modèle en fonction de la taille des poids est également appelé pénalité de norme de poids ou de paramètre.

Il est possible d'inclure les approches L1 et L2 pour calculer la taille des poids comme pénalité. Cela s'apparente à l'utilisation des deux pénalités utilisées dans l'algorithme Elastic Net pour la régression linéaire et logistique.

L'approche L2 est peut-être la plus utilisée et est traditionnellement appelée « décroissance du poids » dans le domaine des réseaux neuronaux. C'est ce qu'on appelle « rétrécissement » en statistiques, un nom qui incite à réfléchir à l'impact de la pénalité sur les poids du modèle lors du processus d'apprentissage.

Ce choix particulier de régulariseur est connu dans la littérature sur l'apprentissage automatique sous le nom de décroissance du poids, car dans les algorithmes d'apprentissage séquentiel, il encourage les valeurs de poids à décroître vers zéro, à moins qu'elles ne soient étayées par les données. En statistiques, il fournit un exemple de méthode de réduction des paramètres car elle réduit les valeurs des paramètres vers zéro.

— Pages 144-145, Reconnaissance de formes et apprentissage automatique, 2006.

Rappelons que chaque nœud a des poids d'entrée et un poids de biais. Le poids du biais n'est généralement pas inclus dans la pénalité car la « entrée » est constante.

Contrôler l’impact de la pénalité

La taille calculée des poids est ajoutée à la fonction objectif de perte lors de la formation du réseau.

Plutôt que d’ajouter directement chaque poids à la pénalité, ils peuvent être pondérés à l’aide d’un nouvel hyperparamètre appelé alpha (a) ou parfois lambda. Cela contrôle le degré d’attention que le processus d’apprentissage doit accorder à la pénalité. Ou en d'autres termes, le montant pour pénaliser le modèle en fonction de la taille des poids.

L'hyperparamètre alpha a une valeur comprise entre 0,0 (pas de pénalité) et 1,0 (pénalité totale). Cet hyperparamètre contrôle le degré de biais dans le modèle de 0,0, ou biais faible (variance élevée), à 1,0, ou biais élevé (faible variance).

Si la pénalité est trop forte, le modèle sous-estimera les poids et sous-évaluera le problème. Si la pénalité est trop faible, le modèle sera autorisé à surajuster les données d'entraînement.

La norme vectorielle des pondérations est souvent calculée par couche plutôt que sur l’ensemble du réseau. Cela permet plus de flexibilité dans le choix du type de régularisation utilisé (par exemple L1 pour les entrées, L2 ailleurs) et une flexibilité dans la valeur alpha, bien qu'il soit courant d'utiliser la même valeur alpha sur chaque couche par défaut.

Dans le contexte des réseaux de neurones, il est parfois souhaitable d'utiliser une pénalité distincte avec un coefficient différent pour chaque couche du réseau. Comme il peut être coûteux de rechercher la valeur correcte de plusieurs hyperparamètres, il est toujours raisonnable d'utiliser la même décroissance de poids sur toutes les couches simplement pour réduire la taille de l'espace de recherche.

— Page 230, Apprentissage profond, 2016.

Conseils d’utilisation de la régularisation du poids

Cette section fournit quelques conseils pour utiliser la régularisation du poids avec votre réseau neuronal.

Utiliser avec tous les types de réseaux

La régularisation du poids est une approche générique.

Il peut être utilisé avec la plupart, peut-être tous, les types de modèles de réseaux neuronaux, notamment les types de réseaux les plus courants de perceptrons multicouches, de réseaux neuronaux convolutifs et de réseaux neuronaux récurrents à longue mémoire à court terme.

Dans le cas des LSTM, il peut être souhaitable d'utiliser différentes pénalités ou configurations de pénalité pour les connexions d'entrée et récurrentes.

Standardiser les données d'entrée

Il est généralement recommandé de mettre à jour les variables d'entrée pour qu'elles aient la même échelle.

Lorsque les variables d’entrée ont des échelles différentes, l’échelle des poids du réseau variera à son tour en conséquence. Cela introduit un problème lors de l'utilisation de la régularisation des poids, car les valeurs absolues ou carrées des poids doivent être ajoutées pour être utilisées dans la pénalité.

Ce problème peut être résolu en normalisant ou en standardisant les variables d'entrée.

Utilisez un réseau plus vaste

Il est courant que les réseaux plus grands (plus de couches ou plus de nœuds) surajustent plus facilement les données d'entraînement.

Lors de la régularisation du poids, il est possible d’utiliser des réseaux plus grands avec moins de risque de surapprentissage. Une bonne stratégie de configuration peut consister à commencer avec des réseaux plus grands et à utiliser la décroissance du poids.

Paramètres de recherche de grille

Il est courant d'utiliser de petites valeurs pour l'hyperparamètre de régularisation qui contrôle la contribution de chaque poids à la pénalité.

Commencez peut-être par tester les valeurs sur une échelle logarithmique, telle que 0,1, 0,001 et 0,0001. Utilisez ensuite une recherche par grille à l’ordre de grandeur qui s’avère le plus prometteur.

Utiliser L1 + L2 ensemble

Plutôt que d’essayer de choisir entre les pénalités L1 et L2, utilisez les deux.

Les méthodes de régression linéaire modernes et efficaces telles que Elastic Net utilisent simultanément les pénalités L1 et L2, ce qui peut être une approche utile à essayer. Cela vous donne à la fois la nuance de L2 et la parcimonie encouragée par L1.

Utilisation sur un réseau formé

Le recours à la régularisation du poids peut permettre des programmes d'entraînement plus élaborés.

Par exemple, un modèle peut d'abord être ajusté sur des données d'entraînement sans aucune régularisation, puis mis à jour ultérieurement avec l'utilisation d'une pénalité de poids pour réduire la taille des poids du modèle déjà performant.

Avez-vous des conseils pour utiliser la régularisation du poids ?
Faites-le moi savoir dans les commentaires ci-dessous.

Lectures complémentaires

Cette section fournit plus de ressources sur le sujet si vous souhaitez approfondir.

Livres

  • Section 7.1 Pénalités liées aux normes de paramètres, Deep Learning, 2016.
  • Section 5.5 Régularisation dans les réseaux de neurones, reconnaissance de formes et apprentissage automatique, 2006.
  • Section 16.5 Décroissance du poids, Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels à action directe, 1999.
  • Section 4.4.2 Ajout d'une régularisation de poids, Deep Learning avec Python, 2017.
  • Section 6.2 Méthodes de retrait, introduction à l'apprentissage statistique : avec applications dans R, 2013.

Papiers

  • Une simple perte de poids peut améliorer la généralisation, 1992.
  • Note sur la généralisation, la régularisation et la sélection d'architecture dans les systèmes d'apprentissage non linéaires, 1991.

Articles

  • Régularisation (mathématiques), Wikipédia.
  • Décroissance du poids dans les réseaux de neurones, Metacademy.
  • Pourquoi les poids importants sont interdits dans les réseaux de neurones ?

Résumé

Dans cet article, vous avez découvert la régularisation du poids comme approche pour réduire le surapprentissage des réseaux neuronaux.

Concrètement, vous avez appris :

  • Des poids importants dans un réseau neuronal sont le signe d'un réseau plus complexe qui a surajusté les données d'entraînement.
  • Pénaliser un réseau en fonction de la taille des poids du réseau pendant la formation peut réduire le surapprentissage.
  • Une pénalité de norme vectorielle L1 ou L2 peut être ajoutée à l'optimisation du réseau pour encourager des poids plus petits.

Avez-vous des questions ?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.

Articles connexes