Problema
Q-learning tabular es inviable cuando el espacio de estados es continuo o de alta dimensión. CartPole tiene un espacio de estados 4-dimensional continuo con infinitos estados posibles — una Q-tabla no puede almacenarlos todos.
Solución
DQN (Deep Q-Network) implementado desde cero con TensorFlow/Keras: una red neuronal aproxima la función Q(s,a) en lugar de una tabla. Experience replay almacena transiciones pasadas para romper la correlación temporal, y una target network separada estabiliza el entrenamiento.
Arquitectura DQN (TensorFlow/Keras)
- q_network(): MLP con capa oculta de 128 unidades y ReLU — salida: Q-value por acción
- memory_replay: buffer de experiencia con deque — almacena (s, a, r, s', done) y muestrea en batch
- Target network (q_network_target): copia de la red de política actualizada periódicamente para estabilizar el entrenamiento
- Política ε-greedy con decaimiento: exploración inicial → explotación progresiva conforme aprende
Entrenamiento y resultados
- Gymnasium CartPole-v0: balancear un palo sobre un carro — recompensa +1 por cada paso sin caer
- Target de Bellman: r + γ·max_a'Q_target(s',a') — calculado con la target network, no la red activa
- Curva de aprendizaje: recompensa media por episodio — convergencia por encima de 150
- Entrenamiento estable gracias a la combinación de experience replay + target network separada