16 · Deep learning para secuencias
Las RNN y LSTM leen una serie paso a paso y arrastran un estado oculto — memoria del pasado. El montaje que las hace entrenables es el windowing: rebanar la serie en pares (ventana de entrada, siguiente valor).
Las redes recurrentes (RNN/LSTM) procesan una secuencia paso a paso, actualizando un estado oculto que resume el pasado. Las entrenas sobre pares supervisados con ventana (ventana_de_entrada → siguiente_valor) — la misma ventana deslizante que consume cualquier modelo de secuencia, clásico o neuronal.
Sin esto:
Sin windowing no hay dataset supervisado que alimentar a una red neuronal, y sin estado recurrente (o atención) un modelo no puede arrastrar dependencias de largo alcance — ambos son prerrequisitos del forecasting profundo de secuencias.
Cuando los patrones se vuelven largos y no lineales, los modelos de secuencia profundos toman el control. Una red neuronal recurrente (RNN) lee la serie paso a paso y, en cada paso, actualiza un estado oculto h — un resumen aprendido de todo lo visto. Aliméntale y[t] y h[t-1], y produce h[t], que puede decodificar en una predicción. El estado oculto es la memoria del modelo.
Las RNN simples luchan por recordar lejos (gradientes que se desvanecen). La LSTM (Long Short-Term Memory) lo arregla con compuertas — pequeñas válvulas aprendidas (olvido, entrada, salida) sobre un estado de celda separado que deja fluir la información a través de muchos pasos sin decaer. Esa memoria larga es justo lo que necesitan las series estacionales y multi-escala.
Pero antes de que una red aprenda, necesitas un dataset supervisado, y la receta es el windowing (ventana deslizante). Elige una longitud de ventana w. Deslízala por la serie: cada ventana de w valores consecutivos es una entrada X, y el valor justo después es el objetivo y. Una serie de longitud n produce n - w pares de entrenamiento. Es el mismo planteo que las features de retardo de la lección anterior — solo organizado como ventanas contiguas de longitud fija que una RNN consume paso a paso.
Abajo hacemos el windowing en numpy puro para que veas las formas exactas, luego — como una red real necesita PyTorch (no disponible aquí) — lo sustituimos con un modelo autorregresivo lineal diminuto ajustado por mínimos cuadrados (np.linalg.lstsq). Cumple el papel de una red de una capa: aprende pesos que mapean la ventana al siguiente valor. Pronosticamos unos pasos e imprimimos predicho vs real.
Python (in browser)
El windowing en numpy puro convierte la serie en X de forma (muestras, ventana) y y de siguiente-valor; un modelo AR lineal por mínimos cuadrados sustituye a una red y pronostica recursivamente.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Aquí está lo real como código para leer: un forecaster LSTM en PyTorch. No puede correr en este sandbox del navegador (torch no viene en Pyodide), pero cada línea tiene forma de producción y refleja la versión en numpy de arriba — mismo windowing, misma división por tiempo, mismo pronóstico recursivo. Las únicas diferencias son la celda nn.LSTM con compuertas que arrastra estado oculto + de celda por la ventana, una cabeza lineal que decodifica el último estado oculto a un número, y un bucle de entrenamiento que minimiza MSE con retropropagación a través del tiempo. Léelo como el destino al que apuntaba el sustituto en numpy.
PARA LEER (torch no está en Pyodide): un forecaster LSTM real en PyTorch — Dataset con ventana, nn.LSTM con cabeza lineal, bucle de entrenamiento MSE y el mismo despliegue recursivo multi-paso que el sustituto en numpy.
¿Qué produce el paso de 'windowing' y por qué es necesario antes de entrenar un forecaster LSTM?
- Las RNN/LSTM leen una secuencia paso a paso y arrastran un estado oculto — una memoria aprendida del pasado; las compuertas de la LSTM dejan que esa memoria sobreviva muchos pasos.
- El windowing es el montaje requerido: desliza una ventana de longitud w para crear pares (ventana_de_entrada → siguiente_valor), dando n - w muestras supervisadas de forma (muestras, ventana).
- Un modelo AR lineal por mínimos cuadrados es una red de cero capas ocultas sobre la misma data con ventana; una LSTM mantiene dataset y despliegue idénticos pero cambia a recurrencia no lineal con compuertas.
Las LSTM y sus sucesores basados en atención (Temporal Fusion Transformer, modelos fundacionales de series temporales) impulsan el forecasting donde las secuencias son largas, multivariadas y no lineales — energía, tráfico, telemetría de sensores.
Si lo quitas: Sin windowing no tienes dataset supervisado que entrenar, y sin estado recurrente (o atención) un modelo no puede arrastrar dependencias de largo alcance — el forecasting profundo de secuencias colapsa a regresión sin memoria.