Cómo un gradiente desbocado puede arruinar un entrenamiento — y el tope que lo salva.

SRC·52 Source
Casi todos los pasos empujan suave. Uno descomunal puede borrar semanas.

Casi todos los pasos empujan suave. Uno descomunal puede borrar semanas.

Entrenar son millones de pasitos cuesta abajo. Pero de vez en cuando un lote produce un gradiente monstruoso, y un solo paso gigante lanza al modelo fuera del mapa, deshaciendo semanas de avance en una sola actualización. La corrida entera muere. La cura no es un mejor paso. Es una correa para el raro paso violento.
Por qué explota: multiplica suficientes pendientes mayores que uno.

Por qué explota: multiplica suficientes pendientes mayores que uno.

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}
Como el acople de un micrófono: el altavoz alimenta al micro que alimenta al altavoz, cada vuelta más fuerte, hasta que la sala chilla. La retropropagación hace lo mismo por una red profunda: multiplica una pendiente por capa. Si cada una supera apenas el uno, cincuenta se acumulan en un monstruo: con λ=1.5 en 50 capas, un susurro crece hasta ≈600 millones.
Un gradiente gigante es un salto gigante — fuera del mapa.

Un gradiente gigante es un salto gigante — fuera del mapa.

θθηg,Δθ=ηg\theta \leftarrow \theta - \eta\, g, \qquad \lVert \Delta\theta \rVert = \eta\, \lVert g \rVert
Como una honda demasiado tensada: tira lo normal y la piedra da en el blanco; tira como un loco y la piedra sale disparada por encima del cerro, perdida para siempre. El paso que das es la tasa de aprendizaje por la longitud del gradiente. Deja que esa longitud explote a millones y el modelo salta fuera de la superficie de pérdida por completo — al sinsentido, a NaN.
Primero, mide cuán grande es el gradiente entero.

Primero, mide cuán grande es el gradiente entero.

g2=igi2\lVert g \rVert_2 = \sqrt{\sum_i g_i^{2}}
Antes de poner un tope, necesitas un solo número para el tamaño de un vector de millones de partes. Como la diagonal de una caja: eleva al cuadrado cada arista, súmalas y saca la raíz — y cada lado por separado se funde en una única longitud recta. Esa es la norma del gradiente: la longitud única de todo el paso, por más millones de números que la alimenten.
El arreglo: limita la longitud, conserva el rumbo.

El arreglo: limita la longitud, conserva el rumbo.

g^=gmin ⁣(1, cg)\hat{g} = g \cdot \min\!\left(1,\ \frac{c}{\lVert g \rVert}\right)
Como frenar a un caballo desbocado: tiras de las riendas para bajar el galope salvaje a un trote seguro — pero el caballo sigue yendo exactamente a donde lo apuntas. El recorte por norma hace esto con el gradiente: por debajo del umbral, lo deja; por encima, lo encoge hasta ese límite. Misma dirección, zancada más corta. El descenso sigue apuntando cuesta abajo — solo que ya no puede abalanzarse.
El primo tosco: limita cada número y tuerces la mira.

El primo tosco: limita cada número y tuerces la mira.

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)
Hay una vía más barata: sujeta cada componente en ±v. Como serrar una cerca a ras: una hilera de estacas que subía en pendiente limpia, cortada plana por arriba, ya no se inclina como antes — impusiste 'nada demasiado alto' pero perdiste la forma. Limitar cada número por separado salva la corrida, pero gira el gradiente fuera de rumbo sin avisar. Por norma conserva el rumbo; por valor lo cambia por simplicidad.
Ahora el peor paso queda atado a un límite conocido.

Ahora el peor paso queda atado a un límite conocido.

Δθ=ηg^ηc\lVert \Delta\theta \rVert = \eta\, \lVert \hat{g} \rVert \le \eta\, c
Como una red de seguridad bajo el trapecio: el acróbata se atreve con la pieza más difícil porque la red está ahí para la única vez que falle. Tras el recorte, el paso nunca supera la tasa de aprendizaje por el tope — el gradiente violento se vuelve un empujón firme, no un salto fatal. No arregla por qué explotó el gradiente. Solo asegura que la única vez que lo haga, sobrevivas.
Silenciamos la corrección más salvaje. ¿Era una advertencia?

Silenciamos la corrección más salvaje. ¿Era una advertencia?

Un gradiente tan violento era el modelo gritando que algo — los datos, la tasa, la arquitectura — estaba muy mal. El recorte no escucha; solo convierte el grito en un empujoncito cortés para que la corrida siga. Mantuvimos el equilibrio. 🌱 Pero al limitar la señal rara y violenta, ¿curamos el problema — o solo dejamos de oírlo?
toca →desliza ↑ para másdesliza ↓ para salir