22 · Gradientes desvanecidos y explosivos en secuencias largas
Los gradientes de la RNN vanilla se reducen o explotan exponencialmente con la longitud de la secuencia — observa empíricamente por qué, luego ve las tres rutas de escape que usan LSTM, GRU y Transformers.
Los gradientes de la RNN vanilla se reducen (o explotan) exponencialmente con la longitud de la secuencia — no pueden aprender dependencias de más de ~10 tokens. LSTM y GRU (siguiente capítulo) lo resuelven.
Sin esto:
Entrenaría una RNN en una secuencia larga y fallarías silenciosamente en aprender cualquier cosa más allá de los patrones locales — sin mensaje de error, solo precisión deficiente.
En la lección de BPTT vimos que el gradiente en el paso temporal 1 fluye a través de T multiplicaciones de matrices antes de poder actualizar cualquier peso. Esa cadena de multiplicaciones es la fuente del modo de falla más notorio de la RNN vanilla.
Recordemos la regla de la cadena aplicada a la recurrencia del estado oculto:
∂h_T / ∂h_1 = ∏_{t=2}^{T} ∂h_t / ∂h_{t-1}
Cada factor ∂h_t / ∂h_{t-1} involucra la matriz de pesos W_hh y la derivada de tanh (que es como máximo 1). Si la norma espectral (aproximadamente: el valor singular más grande) de W_hh es menor que 1, cada multiplicación reduce el gradiente. A lo largo de T = 100 pasos, una reducción de 0.9 por paso da 0.9¹⁰⁰ ≈ 2.6×10⁻⁵ — efectivamente cero. El gradiente se desvanece.
Si en cambio la norma espectral es mayor que 1, cada multiplicación hace crecer el gradiente. A lo largo de 100 pasos, un crecimiento de 1.1 por paso da 1.1¹⁰⁰ ≈ 13,780. Esto es una explosión — desbordamiento numérico y pérdida de entrenamiento salvajemente divergente.
La derivada de la activación tanh (valor máximo 1, y ≤ 0.25 en la región saturada) hace que el desvanecimiento sea el fallo dominante en la práctica. Los gradientes de palabras pronunciadas 30 tokens atrás son indistinguibles de cero.
Existen tres rutas de escape:
- Recorte de gradiente — limita la norma del gradiente antes del paso del optimizador (previene la explosión pero no soluciona el desvanecimiento).
- LSTM / GRU — las puertas controlan el flujo del gradiente; el estado de celda de LSTM proporciona una ruta de gradiente de error casi constante (próximo capítulo).
- Transformers + conexiones de salto — las conexiones de salto dan a cada paso temporal una ruta directa a la pérdida; la atención elimina la recurrencia por completo.
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Causa matemática de los gradientes desvanecidos/explosivos y las tres rutas de escape
¿Por qué una RNN vanilla no puede aprender dependencias de largo alcance?
- La magnitud del gradiente escala como ||W_hh||^T — desvanecimiento exponencial cuando ||W_hh|| < 1, explosión cuando > 1.
- La saturación de tanh hace que el desvanecimiento sea el modo de fallo predeterminado en la práctica; las RNNs vanilla no pueden aprender dependencias más allá de ~10–20 tokens.
- Tres rutas de escape: recorte de gradiente (detiene la explosión), LSTM/GRU (las puertas solucionan el desvanecimiento), Transformers (sin recurrencia en absoluto).
Cada modelo de secuencia moderno usa una de las tres rutas de escape — el recorte de gradiente es universal (clip_grad_norm_ en PyTorch); LSTM/GRU fue la respuesta dominante desde 1997 hasta 2017; los Transformers + conexiones residuales son la respuesta actual para casi todo.
Si lo quitas: Te preguntarías por qué el entrenamiento de RNN vanilla falla silenciosamente en textos largos — y no tendrías un modelo mental de por qué se inventó LSTM en 1997 o por qué los Transformers omiten la recurrencia por completo.