Inicio · Parte 15 — Matemática de Deep Learning
c_t = f_t·c_{t−1} + i_t·g_t
h_t = o_t·tanh(c_t)
si f ≈ 1, ∂c_t/∂c_{t−1} ≈ 1
La LSTM introduce un estado de celda separado del estado oculto, cuya actualización es fundamentalmente aditiva. Tres puertas —olvido, entrada y salida— controlan qué se descarta del pasado, qué se incorpora del presente y qué se expone al exterior.
La clave está en la forma de la actualización. En una RNN simple, la derivada de un estado respecto del anterior involucra la matriz de pesos y la derivada de la activación, y se multiplica en cada paso. En la LSTM, si la puerta de olvido está cerca de 1, la derivada ∂c_t/∂c_{t−1} es aproximadamente 1, y el gradiente atraviesa el tiempo sin atenuarse.
Ese camino se conoce como el carrusel de error constante, y es la misma idea que las conexiones residuales de ResNet: crear una vía por la que el gradiente pase intacto. La diferencia con una RNN no es de capacidad de representación sino de entrenabilidad.
Un detalle práctico que ilustra bien el diseño: el sesgo de la puerta de olvido se inicializa en 1, no en 0. Así la puerta empieza abierta y la celda recuerda por defecto, dejando que el entrenamiento aprenda cuándo olvidar en vez de tener que aprender a recordar desde cero. Cuesta doce parámetros por celda frente a los tres de una RNN simple, y durante veinte años ese coste mereció la pena.
Traza de una celda LSTM sobre una secuencia corta.
puertas: forget, input, output
t x c h forget input
1 1,0 0,42874 0,270127 0,8176 0,6xxx
2 ... ... ... ... ...
El sesgo de forget se inicializa en 1:
la puerta arranca en 0,82, cerca de abierta.
Camino del gradiente:
c_t = f·c_{t−1} + i·g
∂c_t/∂c_{t−1} = f ≈ 0,82
Con 50 pasos y f ≈ 1: 0,98⁵⁰ ≈ 0,36
Con una RNN y factor 0,5: 0,5⁵⁰ ≈ 1e-15
12 parámetros por celda, frente a 3 de la RNN simple.
LSTM: la celda mantiene un camino aditivo para el gradiente.
python classes/part-15-matematica-de-deep-learning/315-lstm-y-compuertas/lab.py
compmath run 315
puertastrazabf_inicializado_en_1camino_del_gradientesi_f≈1_el_gradiente_no_se_atenuaparametros_por_celdareferencia{
"puertas": [
"forget",
"input",
"output"
],
"traza": [
{
"t": 1,
"x": 1.0,
"c": 0.42874,
"h": 0.270127,
"forget": 0.8176,
"input": 0.6457
},
{
"t": 2,
"x": 0.0,
"c": 0.352901,
"h": 0.176336,
"forget": 0.7568,
"input": 0.527
},
{
"t": 3,
"x": 0.0,
"c": 0.282231,
"h": 0.14112,
"forget": 0.748,
"input": 0.5176
},
{
"t": 4,
"x": 0.0,
"c": 0.224684,
"h": 0.112828,
"forget": 0.7447,
"input": 0.5141
},
{
"t": 5,
"x": 0.5,
"c": 0.410448,
"h": 0.23129,
"forget": 0.7869,
"input": 0.5854
}
],
"bf_inicializado_en_1": "sesgo alto en forget: la celda recuerda por defecto",
"camino_del_gradiente": "c_t = f·c_{t-1} + i·g",
"si_f≈1_el_gradiente_no_se_atenua": true,
"parametros_por_celda": 12
}
Modelado de secuencias largas, reconocimiento de voz, traducción automática anterior a los Transformers y series temporales con dependencias lejanas.
Toda arquitectura moderna, incluido el Transformer, se construye sobre estos bloques y sobre este mismo mecanismo de derivación.
10.1162/neco.1997.9.8.1735 verificado en Crossref (2026-08-19).