4 · El problema del gradiente desvanecido
Por qué las redes sigmoid profundas fallaban antes de ReLU — y las tres soluciones que desbloquearon el deep learning moderno.
En redes profundas con activaciones sigmoid, los gradientes se reducen exponencialmente al propagarse hacia atrás — las capas tempranas reciben ~0 señal y no aprenden.
Sin esto:
Entrenas redes sigmoid de 50 capas y te preguntas por qué nunca convergen. El artículo de ReLU de 2012 desbloqueó las redes profundas.
¿Por qué tardó hasta 2012 que el deep learning dominara? Las matemáticas estaban desde 1986 (backprop). Las GPUs existían. Pero entrenar redes más profundas que ~5 capas con activaciones sigmoid era casi imposible — y ahora sabemos exactamente por qué.
El problema del gradiente desvanecido: durante el backprop, cada capa multiplica el gradiente por la derivada de la activación local. La derivada de sigmoid es σ(z)(1-σ(z)), que alcanza un máximo de 0.25 (cuando z=0). Apila 10 capas y el gradiente se multiplica por al menos 0.25^10 ≈ 9 × 10^{-7} — esencialmente cero.
Las capas tempranas — que aprenden las representaciones más fundamentales — reciben casi ninguna señal de gradiente. No se actualizan. La red efectivamente solo tiene unas pocas capas funcionales cerca de la salida.
La solución llegó en tres formas, todas aún usadas hoy:
- Activaciones ReLU — la derivada es 1 para entradas positivas, por lo que los gradientes no se reducen
- Inicialización cuidadosa (He / Xavier) — mantiene la varianza de activación estable entre capas
- Conexiones residuales (skip connections, ResNet) — proporcionan un bypass de gradiente alrededor de caminos profundos
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).
Las 3 soluciones al gradiente desvanecido: ReLU, inicialización He/Xavier, conexiones residuales
Descenso de gradiente — el optimizador que usa estos gradientes para actualizar los pesos
¿Por qué las redes sigmoid profundas no logran entrenarse eficazmente?
- La derivada máxima de sigmoid es 0.25 — apilar 10 capas reduce el gradiente a ~1e-6, cortando efectivamente el aprendizaje en las capas tempranas.
- La derivada de ReLU es 1 para neuronas activas — los gradientes fluyen hacia atrás sin disminuir, permitiendo entrenar redes de más de 100 capas.
- Las tres soluciones estándar: activaciones ReLU, inicialización de pesos He/Xavier y conexiones residuales (skip).
- El gradiente explosivo (el problema opuesto) se maneja con el recorte de gradientes.
Toda arquitectura moderna (CNN, ResNet, Transformer) tiene decisiones de diseño específicamente para combatir los gradientes desvanecidos/explosivos: ReLU/GELU, batch norm, conexiones skip, layer norm. Entender el problema hace que estas decisiones de diseño sean obvias.
Si lo quitas: Entrenas redes profundas con sigmoid y te preguntas por qué no convergen — y no tendrías un marco para entender por qué las ResNets usan conexiones skip o por qué los Transformers usan layer norm.