El gradiente explosivo aparece cuando el gradiente de la pérdida crece sin control durante la retropropagación y hace que el entrenamiento se dispare. En lugar de dar pasos pequeños, la red aplica correcciones enormes a sus pesos, la pérdida oscila o se convierte en NaN y el modelo deja de aprender. Es el problema simétrico al gradiente que se desvanece y afecta sobre todo a redes profundas y recurrentes. La buena noticia: se controla con técnicas sencillas y bien probadas. La misma explicación está disponible en inglés.

Fórmula clave $\mathbf{W}\leftarrow\mathbf{W}-\eta\nabla L,\quad \|\nabla L\|\to\infty$

Puntos clave

  • El gradiente explosivo se produce cuando la norma del gradiente $|\nabla L|$ crece de forma exponencial capa a capa hasta desbordar el rango numérico.
  • La causa principal son pesos grandes combinados con muchas capas: el error se multiplica repetidamente durante la retropropagación.
  • Los síntomas típicos son una pérdida que salta a NaN o inf, valores de peso enormes y un entrenamiento que nunca converge.
  • El recorte de gradiente (gradient clipping) es la solución más directa: limita la norma del gradiente a un umbral, normalmente entre 1 y 5.
  • Una buena inicialización de pesos y capas de normalización previenen el problema desde el diseño de la red.

¿Qué es el gradiente explosivo?

Entrenar una red neuronal consiste en ajustar sus pesos con el descenso de gradiente: se calcula el gradiente $\nabla L$ de la pérdida respecto a cada peso y se da un paso proporcional a la tasa de aprendizaje $\eta$. El problema del gradiente explosivo aparece cuando ese gradiente, en lugar de mantenerse en un rango razonable, crece de forma descontrolada al propagarse hacia atrás por la red.

En términos formales, la actualización de un peso es $\mathbf{W}\leftarrow\mathbf{W}-\eta\nabla L$. Si $|\nabla L|$ alcanza valores del orden de $10^{10}$ o incluso $10^{30}$, el paso deja de ser una corrección fina y se convierte en un salto que arroja al peso a una región inútil del espacio. Cuando ese número supera el máximo representable en coma flotante de 32 bits (unos $3{,}4\cdot10^{38}$), aparece inf, y cualquier operación posterior produce NaN. A partir de ahí la red ya no puede recuperarse.

Este fenómeno es el reverso del gradiente que se desvanece: en un caso el gradiente tiende a cero y la red no aprende, en el otro tiende a infinito y la red aprende demasiado y mal. Ambos son consecuencia de la misma multiplicación repetida durante la retropropagación, descrita en detalle en la Wikipedia sobre el problema del gradiente[1].

Causas: pesos grandes y redes profundas

La retropropagación calcula el gradiente aplicando la regla de la cadena a lo largo de todas las capas. En cada capa $^{(l)}$ intervienen dos factores: la derivada de la activación $f'(z)$ y la matriz de pesos $\mathbf{W}$. Si los valores propios de esas matrices son mayores que 1, el gradiente se multiplica por un factor superior a la unidad en cada capa que atraviesa hacia atrás.

El efecto es exponencial. Con un factor de crecimiento de $\lambda=1{,}5$ por capa, una red de $L=20$ capas multiplica el gradiente por $\lambda^{L}=1{,}5^{20}$, es decir, unas 3.325 veces; con 50 capas el factor supera los 600 millones. Por eso el problema se agrava con la profundidad y golpea con especial dureza a las redes recurrentes, donde la misma matriz de pesos se aplica una vez por cada paso temporal de la secuencia.

Ver la derivación

Por la regla de la cadena, el gradiente que llega a la capa $l$ es el producto de los factores de todas las capas posteriores: $\nabla L^{(l)}=\left(\prod_{k=l}^{L}\mathbf{W}_k^{\top}\operatorname{diag}(f'(z_k))\right)\nabla L^{(L)}$. Si cada factor multiplica la norma por un valor propio dominante $\lambda$, entonces $\|\nabla L^{(l)}\|\approx\lambda^{L-l}\,\|\nabla L^{(L)}\|$. Con $\lambda>1$ ese término crece de forma exponencial al retropropagar (explosión); con $\lambda<1$ tiende a cero (desvanecimiento). El umbral está justo en $\lambda=1$.

Las causas concretas más habituales son tres: una inicialización de pesos con valores demasiado grandes, una tasa de aprendizaje $\eta$ excesiva y arquitecturas muy profundas sin mecanismos de estabilización. El artículo de referencia sobre este tema, «On the difficulty of training recurrent neural networks»[2] de Pascanu, Mikolov y Bengio (2013), demuestra que en las redes recurrentes basta con que un valor propio dominante supere 1 para que el gradiente explote con el tiempo.

Recorte de gradiente (gradient clipping)

La solución más directa y usada es el recorte de gradiente. La idea es geométrica y elegante: cuando el gradiente explota, su dirección suele seguir siendo correcta, lo que falla es su longitud. Por tanto no hace falta cambiar la dirección, solo acortar el vector.

El método más recomendado es el recorte por norma. Se fija un umbral $c$ (un valor típico entre 1 y 5) y, si la norma del gradiente lo supera, se reescala el vector completo para que su norma sea exactamente $c$, conservando la dirección:

$$\text{si } |\nabla L|>c:\quad \nabla L\leftarrow c\cdot\frac{\nabla L}{|\nabla L|}$$

El recorte por norma no cambia la dirección del gradiente, solo su longitud: al dividir por $\|\nabla L\|$ y multiplicar por $c$ se obtiene un vector que apunta al mismo sitio pero con norma exactamente $c$. Por eso conserva la información de hacia dónde descender.

Como resumen Pascanu, Mikolov y Bengio, «proponemos una estrategia de recorte de la norma del gradiente para tratar los gradientes explosivos». Existe también el recorte por valor, que limita cada componente por separado a un rango [-c, c], pero tiene peor justificación teórica porque altera la dirección del gradiente. En la práctica, frameworks como PyTorch y TensorFlow ofrecen ambas variantes en una sola línea de código, y el recorte por norma es la opción por defecto en la mayoría de recetas de entrenamiento de modelos de lenguaje.

Inicialización y normalización como prevención

El recorte trata el síntoma; la inicialización y la normalización atacan la causa. Empezar el entrenamiento con pesos del tamaño adecuado evita que el gradiente crezca desde el principio. Las estrategias de Xavier (Glorot) y He escalan la varianza inicial de los pesos en función del número de entradas y salidas de cada capa, de modo que la señal ni se apaga ni se dispara al atravesar la red.

La normalización por lotes (batch normalization), presentada en 2015, reescala las activaciones de cada capa para que tengan media 0 y varianza 1, lo que mantiene los gradientes en un rango estable y permite entrenar redes de cientos de capas. Las conexiones residuales de ResNet, que en 2015 hicieron viables redes de 152 capas, cumplen una función parecida al crear atajos por los que el gradiente fluye sin multiplicarse. El manual Deep Learning[3] de Goodfellow, Bengio y Courville dedica su capítulo 8 a estas estrategias de optimización. Combinar una buena inicialización, normalización y recorte de gradiente es hoy la receta estándar para entrenar redes profundas sin sobresaltos.

Ejemplo

Imagina una red recurrente que procesa una secuencia de 100 pasos y cuya matriz de pesos tiene un valor propio dominante de $1{,}2$. Al retropropagar el error desde el último paso hasta el primero, el gradiente se multiplica aproximadamente por $1{,}2^{100}$, un número cercano a $8{,}3\cdot10^{7}$. Un gradiente que debería valer $0{,}5$ llega al primer paso convertido en más de 40 millones.

Con una tasa de aprendizaje $\eta$ de $0{,}01$, la actualización del peso sería de unos 400.000 en un solo paso: el peso pasa de un valor sano cercano a 0 a una cifra descomunal, la activación $a=f(z)$ se satura y en la siguiente iteración la pérdida $L$ se convierte en NaN. Si aplicamos recorte de gradiente con umbral $c=1$, ese gradiente de 40 millones se reescala a norma 1 antes de la actualización, el paso vuelve a ser una corrección fina y el entrenamiento continúa estable. Este contraste, medido en cualquier cuaderno de prácticas, es la mejor forma de interiorizar por qué el recorte es tan efectivo. Puedes repasar la mecánica de la actualización en nuestro artículo sobre las derivadas parciales y el gradiente y situar la pieza dentro del mapa de las matemáticas de las redes neuronales.

Preguntas frecuentes

¿Cómo sé si mi red sufre gradiente explosivo?

Los indicios son claros: la pérdida salta de golpe a NaN o inf, los valores de los pesos crecen sin control entre iteraciones y las curvas de entrenamiento muestran picos bruscos en lugar de un descenso suave. Registrar la norma del gradiente en cada paso confirma el diagnóstico: si ves valores que superan varios órdenes de magnitud, estás ante un gradiente explosivo.

¿Es lo mismo el gradiente explosivo que el que se desvanece?

No, son los dos extremos del mismo mecanismo. En el gradiente que se desvanece la norma tiende a cero y las primeras capas dejan de aprender; en el explosivo la norma tiende a infinito y el entrenamiento se desestabiliza. Ambos nacen de multiplicar muchos factores durante la retropropagación, pero se combaten con técnicas distintas.

¿Qué umbral de recorte debo usar?

No hay un valor universal, pero umbrales entre 1 y 5 funcionan bien en la mayoría de los casos y son los más habituales al entrenar modelos de lenguaje. Conviene empezar por un valor como 1, observar la norma del gradiente durante las primeras iteraciones y ajustar si el entrenamiento sigue inestable o, al contrario, avanza demasiado despacio.

Conclusión

El gradiente explosivo no es un misterio, sino la consecuencia matemática de multiplicar factores mayores que 1 a lo largo de una red profunda. Sus síntomas (pérdida en NaN, pesos descomunales, entrenamiento inestable) son fáciles de reconocer, y sus remedios están bien establecidos: recorte de gradiente para el síntoma inmediato, e inicialización y normalización cuidadas para prevenirlo desde el diseño. Con estas herramientas, entrenar redes de decenas o cientos de capas deja de ser una lotería. El siguiente paso natural es entender su gemelo, el gradiente que se desvanece.

Fuentes

  1. Wikipedia sobre el problema del gradiente
  2. «On the difficulty of training recurrent neural networks»
  3. Deep Learning
  4. On the difficulty of training Recurrent Neural Networks (arXiv:1211.5063)

Ruta: La neurona y las funciones de activación