Maison > développement back-end > Tutoriel Python > Problème de gradient de disparition et d'explosion et problème de ReLU mourant

Problème de gradient de disparition et d'explosion et problème de ReLU mourant

Linda Hamilton
Libérer: 2024-12-01 19:23:11
original
834 Les gens l'ont consulté

Vanishing & Exploding Gradient Problem & Dying ReLU Problem

Achetez-moi un café☕

*Mémos :

  • Mon article explique le surajustement et le sous-ajustement.
  • Mon article explique les couches dans PyTorch.
  • Mon article explique les fonctions d'activation dans PyTorch.
  • Mon article explique les fonctions de perte dans PyTorch.
  • Mon article explique les optimiseurs dans PyTorch.

Problème de dégradé de disparition :

  • C'est pendant la rétropropagation, un dégradé devient de plus en plus petit ou devient nul, multipliant les petits gradients plusieurs fois en passant de la couche de sortie à la couche d'entrée, alors un modèle ne peut pas être entraîné efficacement.
  • se produit plus facilement avec plus de couches dans un modèle.
  • est facilement provoqué par la fonction d'activation sigmoïde qui est Sigmoid() dans PyTorch car elle produit les petites valeurs dont les plages sont 0<=x<=1, puis elles sont multipliées plusieurs fois, créant un dégradé de plus en plus petit en passant de la couche de sortie à la couche d'entrée.
  • se produit dans :
    • CNN (Réseau de neurones convolutifs).
    • RNN (Recurrent Neural Network) qui est RNN() dans PyTorch.
  • ne se produit pas facilement dans :
    • LSTM (Long Short-Term Memory) qui est LSTM() dans PyTorch.
    • GRU (Gated Recurrent Unit) qui est GRU() dans PyTorch.
    • Resnet (réseau de neurones résiduels) qui est Resnet dans PyTorch.
    • Transformer qui est Transformer() dans PyTorch.
    • etc.
  • peut être détecté si :
    • Les paramètres changent de manière significative au niveau des couches proches de la couche de sortie, tandis que les paramètres changent légèrement ou restent inchangés au niveau des couches proches de la couche d'entrée.
    • Les poids des calques proches du calque d'entrée sont proches de 0 ou deviennent 0.
    • la convergence est lente ou arrêtée.
  • peut être atténué par :
    • Couche de normalisation par lots qui est BatchNorm1d(), BatchNorm2d() ou BatchNorm3d() dans PyTorch.
    • Fonction d'activation Leaky ReLU qui est LeakyReLU() dans PyTorch. *Vous pouvez également utiliser la Fonction d'activation ReLU qui est ReLU() dans PyTorch mais cela provoque parfois un Problème ReLU mourant que j'expliquerai plus tard.
    • Fonction d'activation PReLU qui est PReLU() dans PyTorch.
    • Fonction d'activation ELU qui est ELU() dans PyTorch.
    • Gradient Clipping qui est clip_grad_norm_() ou clip_grad_value_() dans PyTorch. *Gradient Clipping est la méthode permettant de conserver un dégradé dans une plage spécifiée.

Problème des dégradés explosifs :

  • C'est pendant la rétropropagation, un dégradé devient de plus en plus grand, multipliant plusieurs fois des dégradés plus grands ensemble en passant de la couche de sortie à la couche d'entrée, alors la convergence devient impossible.
  • se produit plus facilement avec plus de couches dans un modèle.
  • se produit dans :
    • CNN.
    • RNN.
    • LSTM.
    • GRU.
  • ne se produit pas facilement dans :
    • Resnet.
    • Transformateur.
    • etc.
  • peut être détecté si :
    • Les poids d'un modèle augmentent considérablement.
    • Les poids d'un modèle augmentant significativement deviennent finalement NaN.
    • la convergence fluctue sans finir.
  • peut être atténué par :
    • Couche de normalisation par lots.
    • Découpage de dégradé.

Problème ReLU mourant :

  • est pendant la rétropropagation, une fois que les nœuds (neurones) avec fonction d'activation ReLU reçoivent des valeurs d'entrée nulles ou négatives, ils produisent toujours zéro pour toutes les valeurs d'entrée, enfin, ils ne sont jamais récupérés pour produire des valeurs sauf zéro, alors un modèle ne peut pas être entraîné efficacement.
  • est également appelé Problème Dead ReLU.
  • se produit plus facilement avec :
    • taux d'apprentissage plus élevés.
    • biais négatif plus élevé.
  • peut être détecté si :
    • la convergence est lente ou arrêtée.
    • une fonction de perte renvoie nan.
  • peut être atténué par :
    • taux d'apprentissage inférieur.
    • un biais positif.
    • Fonction d'activation Leaky ReLU.
    • Fonction d'activation PReLU.
    • Fonction d'activation ELU.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal