Comment un gradient emballé peut détruire un entraînement — et le plafond qui le sauve.

SRC·52 Source
Presque tous les pas effleurent. Un seul, monstrueux, peut effacer des semaines.

Presque tous les pas effleurent. Un seul, monstrueux, peut effacer des semaines.

L'entraînement, c'est des millions de petits pas vers le bas. Mais de temps en temps un lot produit un gradient monstrueux — et un seul pas géant projette le modèle hors de la carte, effaçant des semaines de progrès en une mise à jour. Tout l'entraînement meurt. Le remède n'est pas un meilleur pas. C'est une laisse sur le rare pas violent.
Pourquoi ça explose : multipliez assez de pentes supérieures à un.

Pourquoi ça explose : multipliez assez de pentes supérieures à un.

Lh0=Lhtk=1thkhk1,k=1thkhk1λt\frac{\partial \mathcal{L}}{\partial h_0} = \frac{\partial \mathcal{L}}{\partial h_t}\prod_{k=1}^{t}\frac{\partial h_k}{\partial h_{k-1}}, \qquad \left\|\prod_{k=1}^{t}\frac{\partial h_k}{\partial h_{k-1}}\right\| \sim \lambda^{t}
Comme un larsen de micro : le haut-parleur nourrit le micro qui nourrit le haut-parleur, chaque boucle plus forte, jusqu'à ce que la salle hurle. La rétropropagation fait pareil dans un réseau profond : elle multiplie une pente par couche. Si chacune dépasse à peine un, cinquante s'accumulent en monstre : à λ=1.5 sur 50 couches, un murmure enfle jusqu'à ≈600 millions.
Un gradient géant, c'est un bond géant — hors de la carte.

Un gradient géant, c'est un bond géant — hors de la carte.

θθηg,Δθ=ηg\theta \leftarrow \theta - \eta\, g, \qquad \lVert \Delta\theta \rVert = \eta\, \lVert g \rVert
Comme un lance-pierre trop bandé : tirez normalement et la pierre atteint la cible ; tirez comme un fou et la pierre file par-dessus la colline, perdue à jamais. Le pas que vous faites, c'est le taux d'apprentissage fois la longueur du gradient. Laissez cette longueur exploser en millions et le modèle bondit entièrement hors de la surface de perte — dans l'absurde, dans NaN.
D'abord, mesurer la taille du gradient tout entier.

D'abord, mesurer la taille du gradient tout entier.

g2=igi2\lVert g \rVert_2 = \sqrt{\sum_i g_i^{2}}
Avant de plafonner, il faut un seul nombre pour la taille d'un vecteur à des millions de composantes. Comme la diagonale d'une boîte : mettez chaque arête au carré, additionnez, prenez la racine — et chaque côté distinct se fond en une seule longueur droite. C'est la norme du gradient : la longueur unique du pas entier, quels que soient les millions de nombres qui l'alimentent.
La parade : plafonner la longueur, garder le cap.

La parade : plafonner la longueur, garder le cap.

g^=gmin ⁣(1, cg)\hat{g} = g \cdot \min\!\left(1,\ \frac{c}{\lVert g \rVert}\right)
Comme reprendre en main un cheval emballé : vous tirez sur les rênes pour ramener un galop fou à un petit galop sûr — mais le cheval va toujours exactement où vous le dirigez. L'écrêtage par norme fait pareil au gradient : sous le seuil, on le laisse ; au-dessus, on le ramène à cette limite. Même direction, foulée plus courte. La descente pointe toujours vers le bas — elle ne peut simplement plus bondir.
Le cousin brutal : plafonner chaque nombre, et fausser la visée.

Le cousin brutal : plafonner chaque nombre, et fausser la visée.

g^i=clip(gi,v,v)=max ⁣(v, min(v, gi))\hat{g}_i = \operatorname{clip}(g_i, -v, v) = \max\!\left(-v,\ \min(v,\ g_i)\right)
Il existe une voie moins chère : borner chaque composante à ±v. Comme scier une clôture à ras : une rangée de piquets qui montait en pente nette, sciée plate au sommet, ne penche plus comme avant — vous avez imposé « rien de trop haut » mais perdu la forme. Borner chaque nombre séparément sauve l'entraînement, mais fait pivoter le gradient hors du vrai, en douce. Par norme on garde le cap ; par valeur on l'échange contre la simplicité.
Désormais le pire pas est tenu à une limite connue.

Désormais le pire pas est tenu à une limite connue.

Δθ=ηg^ηc\lVert \Delta\theta \rVert = \eta\, \lVert \hat{g} \rVert \le \eta\, c
Comme un filet de sécurité sous un trapèze : l'acrobate ose la prise la plus dure parce que le filet est là pour la seule fois où il manquera. Après l'écrêtage, le pas ne peut jamais dépasser le taux d'apprentissage fois le plafond — le gradient violent devient une poussée ferme, non un bond fatal. Ça ne corrige pas pourquoi le gradient a explosé. Ça garantit juste que la fois où ça arrive, vous survivez.
On a fait taire la correction la plus folle. Était-ce un avertissement ?

On a fait taire la correction la plus folle. Était-ce un avertissement ?

Un gradient aussi violent, c'était le modèle qui hurlait que quelque chose — les données, le taux, l'architecture — clochait gravement. L'écrêtage n'écoute pas ; il transforme juste le cri en petit coup poli pour que l'entraînement continue. On a gardé l'équilibre. 🌱 Mais en plafonnant le signal rare et violent, soigne-t-on le mal — ou cesse-t-on seulement de l'entendre ?
touchez →balayez ↑ pour approfondirbalayez ↓ pour quitter