Qu’est-ce que la disparition du gradient ?

Questions d’entrevue Deep learning

Seniorgradientactivationarchitecture

La rétropropagation calcule le gradient d’une couche en le multipliant par les dérivées locales des couches suivantes. Quand ces facteurs sont inférieurs à 1, leur produit sur vingt couches tend vers zéro : les premières couches reçoivent un gradient négligeable et cessent d’apprendre. Le réseau s’entraîne, la perte descend un peu, et seules les dernières couches ont bougé.

Le symptôme inverse existe aussi : si les facteurs dépassent 1, le produit explose. L’explosion du gradient se voit immédiatement — perte en NaN, poids qui divergent — et c’est paradoxalement le cas le moins dangereux, parce qu’il ne passe pas inaperçu.

Les causes

Les activations saturantes. La dérivée de la sigmoïde vaut au maximum 0,25, et elle est quasi nulle dès que l’entrée s’écarte de zéro. Vingt couches de sigmoïdes multiplient donc au mieux 0,25 vingt fois — autant dire zéro. C’est la cause historique, et la raison pour laquelle les réseaux profonds étaient inentraînables avant les années 2010.

Une initialisation mal dimensionnée, qui fait décroître ou croître l’échelle du signal d’une couche à l’autre.

La profondeur elle-même, et particulièrement les réseaux récurrents, où la même matrice est appliquée à chaque pas de temps : sur une séquence de cent pas, le facteur est élevé à la puissance cent.

Les réponses, dans l’ordre historique

ReLU. Sa dérivée vaut exactement 1 pour toute entrée positive, donc elle ne rétrécit pas le gradient. C’est la première solution, et la plus décisive.

Une initialisation dimensionnée — He pour ReLU, Glorot pour les activations symétriques — qui maintient la variance du signal constante d’une couche à l’autre.

La normalisation par lots, qui recentre les activations de chaque couche et empêche les échelles de dériver au fil de l’entraînement.

Les connexions résiduelles, et c’est la réponse la plus importante à donner. En ajoutant l’entrée d’un bloc à sa sortie, on crée un chemin où le gradient se propage sans être multiplié — la dérivée d’une addition vaut 1. Le gradient dispose donc toujours d’une voie directe vers les premières couches. C’est ce qui a permis de passer de vingt à mille couches, et c’est pourquoi tous les modèles profonds actuels, transformeurs compris, sont bâtis sur des blocs résiduels.

Les portes des LSTM et des GRU, qui jouent le même rôle dans le temps : une cellule d’état qui traverse les pas de temps par addition plutôt que par multiplication.

L’écrêtage du gradient (gradient clipping), qui traite l’explosion et non la disparition : on borne la norme du gradient avant la mise à jour. C’est la pratique standard dans l’entraînement des grands modèles de langage.

Comment on le diagnostique

En journalisant la norme du gradient par couche. Si elle vaut 1e-2 dans les dernières couches et 1e-9 dans les premières, le diagnostic est établi, et c’est une mesure que peu de candidats pensent à citer. Le symptôme complémentaire est un réseau dont la perte descend puis se bloque à un niveau que sa capacité ne justifie pas.

Toutes les questions Deep learning