🧮 Computational Mathematics

Inicio · Parte 15 — Matemática de Deep Learning

315 — LSTM y compuertas

deep-learning clase 15 de 20 4 horas demostración lstm

La celda LSTM suma en vez de multiplicar, y por eso el gradiente sobrevive.

Fórmulas

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

Desarrollo

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.

Ejemplo trabajado

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.

Qué calcula el laboratorio

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

Salidas del laboratorio (7)

Muestra de la ejecución real

{
  "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
}

Errores comunes

Dónde se usa

Modelado de secuencias largas, reconocimiento de voz, traducción automática anterior a los Transformers y series temporales con dependencias lejanas.

Idea rectora de la parte

El gradiente que se desvanece es un producto de derivadas menores que uno.

Error a evitar

Mezclar estadísticas de batch normalization entre entrenamiento e inferencia.

Conexión con IA

Toda arquitectura moderna, incluido el Transformer, se construye sobre estos bloques y sobre este mismo mecanismo de derivación.

Bibliografía de la clase

Archivos de la clase