Entraîner les réseaux de neurones : bonnes pratiques

Cette section explique les problèmes possibles de la rétropropagation, ainsi que la méthode la plus utilisée pour régulariser un réseau de neurones.

Problèmes possibles

La rétropropagation peut être à l'origine de plusieurs problèmes courants.

Disparition des gradients

Les gradients des couches inférieures (qui sont les plus proches de l'entrée) peuvent devenir extrêmement petits. Dans les réseaux profonds, le calcul de ces gradients peut impliquer le produit de nombreux petits termes.

Lorsque les gradients se rapprochent de 0 pour les couches inférieures, ces dernières sont entraînées très lentement, voire pas du tout.

La fonction d'activation des unités ReLU permet d'empêcher la disparition des gradients.

Explosion des gradients

Si les pondérations d'un réseau sont très importantes, les gradients des couches inférieures impliquent le produit de nombreux termes de grande taille. Dans ce cas, les gradients peuvent exploser. Autrement dit, ils sont trop grands pour que la convergence fonctionne.

La normalisation de lot, tout comme la réduction du taux d'apprentissage, peut empêcher l'explosion des gradients.

Unités ReLU inactives

Lorsque la somme pondérée d'une unité ReLU descend en dessous de 0, l'unité peut se figer. Elle génère alors 0 activation et ne contribue donc pas à la sortie du réseau, tandis que les gradients ne peuvent plus y passer lors de la rétropropagation. En cas d'élimination d'une source de gradients, il se peut même que l'entrée effectuée dans l'unité ReLU ne puisse plus jamais changer suffisamment pour que la somme pondérée repasse au-dessus de 0.

La réduction du taux d'apprentissage peut empêcher les unités ReLU de devenir inactives.

Régularisation par abandon

Une autre forme de régularisation, appelée abandon, est utile pour les réseaux de neurones. Cette méthode "abandonne" de manière aléatoire des activations d'unités dans un réseau pour un pas de gradient unique. Plus il y a d'abandons, plus la régularisation est poussée :

  • 0.0 = pas de régularisation par abandon.
  • 1.0 = abandon total (le modèle n'apprend rien).
  • Les valeurs comprises entre 0.0 et 1.0 sont plus efficaces.