🧮 Computational Mathematics

Inicio · Parte 15 — Matemática de Deep Learning

313 — RNN y recurrencia

deep-learning clase 13 de 20 4 horas demostración rnn

Una RNN procesa secuencias de cualquier longitud con un número fijo de parámetros.

Fórmulas

h_t = tanh(W_xh·x_t + W_hh·h_{t−1} + b_h)
los mismos pesos en todos los instantes
el estado resume toda la historia

Desarrollo

Una red recurrente procesa una secuencia elemento a elemento, manteniendo un estado oculto que se actualiza en cada paso combinando la entrada nueva con el estado anterior. Ese estado es el resumen de todo lo visto hasta el momento.

La propiedad decisiva es la compartición de pesos en el tiempo. Los mismos parámetros se aplican en el instante 1 y en el 1000, igual que un núcleo convolucional se aplica en todas las posiciones espaciales. Eso permite procesar secuencias de longitud arbitraria con un número fijo de parámetros: el ejemplo de esta clase usa tres.

Entrenarla requiere desplegar la red en el tiempo, convirtiéndola en una red profunda con tantas capas como pasos temporales, y aplicar backpropagation sobre esa estructura. El procedimiento se llama BPTT, y su coste de memoria crece con la longitud de la secuencia, lo que obliga a truncarlo en la práctica.

Ese despliegue es también el origen de su problema fundamental. Una secuencia de 50 pasos genera una red efectiva de 50 capas, y el gradiente que llega al primer instante ha atravesado 50 multiplicaciones. La clase siguiente cuantifica lo que eso implica. Las RNN han sido en gran medida desplazadas por los Transformers, pero entenderlas es necesario para entender por qué la atención fue una respuesta a un problema concreto.

Ejemplo trabajado

RNN de un parámetro por matriz sobre cinco pasos.

secuencia: [1,0 ; 0,5 ; −0,3 ; 0,2 ; 0,9]
parámetros: W_xh = 0,8   W_hh = 0,9   b_h = 0,05

t    x       h
1   1,0    0,691069
2   0,5    0,790199
3  −0,3    0,4xxxxx
4   0,2    0,6xxxxx
5   0,9    0,856183

estado final: 0,856183

3 parámetros procesan una secuencia de cualquier longitud.
El estado en t=5 depende de las cinco entradas, aunque
la influencia de x₁ ya está muy atenuada.

Qué calcula el laboratorio

RNN: el estado oculto acumula historia con pesos compartidos.

python classes/part-15-matematica-de-deep-learning/313-rnn-y-recurrencia/lab.py
compmath run 313

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "secuencia": [
    1.0,
    0.5,
    -0.3,
    0.2,
    0.9
  ],
  "parametros": {
    "Wxh": 0.8,
    "Whh": 0.9,
    "bh": 0.05
  },
  "estados": [
    {
      "t": 1,
      "x": 1.0,
      "h": 0.691069
    },
    {
      "t": 2,
      "x": 0.5,
      "h": 0.790199
    },
    {
      "t": 3,
      "x": -0.3,
      "h": 0.47861
    },
    {
      "t": 4,
      "x": 0.2,
      "h": 0.565409
    },
    {
      "t": 5,
      "x": 0.9,
      "h": 0.856183
    }
  ],
  "estado_final": 0.856183,
  "pesos_compartidos_en_el_tiempo": true,
  "parametros_totales": 3
}

Errores comunes

Dónde se usa

Modelado de secuencias, series temporales, procesamiento de lenguaje anterior a los Transformers y sistemas de control con estado.

Idea rectora de la parte

La inicialización controla la varianza de las activaciones y de los gradientes.

Error a evitar

Inicializar todos los pesos iguales y romper la simetría nunca.

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