17 · Redes Q profundas (DQN)
Cuando el espacio de estados es enorme, una tabla Q no cabe. DQN la reemplaza con un aproximador de funciones y añade dos trucos — repetición de experiencia y una red objetivo — que estabilizan el entrenamiento.
DQN escala Q-learning a espacios de estados enormes aproximando Q(s,a) con una función paramétrica (una red neuronal) en vez de una tabla, y estabiliza el entrenamiento (que de otro modo diverge) con dos trucos: un buffer de repetición de experiencia (rompe la correlación, reusa datos) y una red objetivo de actualización lenta (fija el objetivo de bootstrap).
Sin esto:
Sin aproximación de funciones, el RL se queda en problemas de juguete donde cada estado cabe en una tabla; sin repetición y red objetivo, el Q-learning ingenuo con una red oscila y diverge.
El Q-learning tabular guarda un número por cada par (estado, acción). Eso está bien para un gridworld de 25 celdas, pero la pantalla de un juego de Atari tiene ~256^(210·160·3) estados posibles — ninguna tabla en la Tierra los guarda. La solución es la aproximación de funciones: en vez de una tabla de consulta, representamos el valor-acción como una función paramétrica
Q(s, a) ≈ Q_w(s, a)
donde w son parámetros aprendibles (los pesos de una red neuronal). Nunca enumeramos todos los estados; generalizamos entre ellos. Las redes Q profundas (DQN) — el método que primero resolvió Atari desde píxeles crudos — son exactamente Q-learning con una red neuronal como Q_w.
El problema: conecta una red neuronal de forma ingenua a la actualización de Q-learning y el entrenamiento diverge. Dos ideas lo arreglan:
- Repetición de experiencia. Guarda cada transición
(s, a, r, s')en un buffer de repetición y entrena con minibatches aleatorios muestreados de él. Esto rompe la fuerte correlación entre muestras consecutivas (que viola el supuesto i.i.d. del SGD) y permite reusar cada transición muchas veces — mucho más eficiente con los datos. - Una red objetivo. El objetivo de Q-learning
r + γ·max_a' Q(s', a')depende de los pesos que estamos actualizando — un blanco móvil que se persigue a sí mismo. DQN mantiene una segunda copia congelada de los pesos (w⁻) usada solo para calcular el objetivo, y copia los pesos vivos en ella cada varios cientos de pasos. Objetivo estable = entrenamiento estable.
Abajo construimos toda la maquinaria de DQN en NumPy puro con un aproximador lineal — Q_w(s,a) = w · features(s,a) — en un corredor diminuto. Lineal es el aproximador más simple, pero el buffer de repetición, el SGD por minibatch y la sincronización de la red objetivo son idénticos a la versión profunda. Observa cómo convergen los valores Q.
Python (in browser)
Toda la maquinaria de DQN en NumPy puro con un aproximador Q lineal: buffer de repetición + SGD por minibatch + pesos objetivo sincronizados periódicamente. Los valores Q convergen para que cada estado prefiera moverse hacia la meta.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
La celda de arriba es estructuralmente una DQN completa — solo el aproximador es lineal. Para convertirla en la real cambias w por una red neuronal y el producto punto por una pasada hacia adelante; la repetición, el objetivo max, ε-greedy y la sincronización periódica del objetivo se quedan exactamente como están. El bloque de lectura de abajo es la versión canónica en PyTorch: un pequeño nn.Module de red Q, una pérdida TD de MSE, un optimizador Adam y una sincronización dura de la red objetivo. Léelo para ver con qué literalidad la maquinaria de NumPy se mapea a una red profunda.
DQN real en PyTorch: una red Q nn.Module, buffer de repetición, pérdida TD de MSE y sincronización dura de la red objetivo. Compara línea por línea con la maquinaria de NumPy de arriba.
¿Por qué DQN usa una red objetivo separada y actualizada periódicamente para calcular r + γ·max_a' Q(s',a')?
- DQN = Q-learning con un aproximador de funciones (una red neuronal) para Q(s,a), así que escala a espacios de estados enormes/continuos que una tabla no puede guardar.
- La repetición de experiencia guarda transiciones y entrena con minibatches aleatorios — rompiendo la correlación entre muestras consecutivas y reusando datos.
- Una red objetivo congelada y sincronizada periódicamente provee un objetivo de bootstrap estable para que la regresión no se persiga a sí misma.
DQN resolvió Atari desde píxeles y sembró toda la ola del 'RL profundo'; repetición + redes objetivo se reusan en innumerables agentes basados en valores.
Si lo quitas: Sin aproximación de funciones el RL no puede tocar la percepción de alta dimensión; sin repetición y red objetivo, el Q-learning neuronal es inestable.