🧬 ¿Qué es un DQN?
Un Deep Q-Network es una combinación entre:
- 🔁 Q-Learning (aprendizaje por refuerzo tradicional)
- 🧠 Redes Neuronales (aprenden funciones complejas)
El resultado es un agente que puede aprender a tomar decisiones en entornos complejos, como videojuegos o robots, donde el número de estados es tan grande que una tabla Q ya no es suficiente.
Si Q-Learning era como una libreta de apuntes, DQN es un cerebro que generaliza y predice qué hacer en estados que nunca ha visto antes.
📦 ¿Cuándo se usa?
- Juegos (Atari, Flappy Bird, etc.)
- Robots navegando o moviéndose
- Estrategias en tiempo real
- Trading algorítmico
- Cualquier entorno con muchos estados posibles
🎮 ¿Cómo funciona?
- En vez de usar una tabla Q, usa una red neuronal que recibe el estado y predice el valor Q para cada acción posible.
- El agente elige acciones como en Q-Learning:
- A veces explora (elige aleatorio).
- A veces explota (elige la mejor acción según su red).
- La red se entrena con los resultados que va obteniendo, usando como «objetivo» la misma fórmula de Q-Learning:
Qtarget=r+γ⋅maxaQ(s′,a)Q_{\text{target}} = r + \gamma \cdot \max_a Q(s’, a)Qtarget=r+γ⋅amaxQ(s′,a)
🧰 ¿Qué cosas nuevas añade?
- Experience Replay: guarda sus experiencias en memoria y entrena con ellas varias veces (como repasar apuntes).
- Target Network: usa una copia de la red para estabilizar el aprendizaje.
- Exploración vs. Explotación mejor equilibrada.
📊 Ventajas
✅ Escalable: puede trabajar con millones de estados
✅ Generaliza a situaciones nuevas
✅ Muy buenos resultados en tareas visuales y complejas
✅ Base de muchos algoritmos modernos (como AlphaGo, DDPG, etc.)
🚨 Desventajas
❌ Más complejo de implementar
❌ Requiere muchos recursos (GPU, tiempo)
❌ Necesita mucha interacción para aprender bien
❌ No siempre converge rápido
🧑💻 ¿Y cómo se ve un DQN?
La red neuronal tiene como entrada el estado y como salida los valores Q para cada acción:
scssCopyEditEstado (ej. imagen, vector) ➜ [Red neuronal] ➜ [Q1, Q2, Q3, ..., Qn]
Y el agente simplemente:
pythonCopyEditaccion = argmax(model.predict(estado))
📚 Herramientas comunes para implementar DQN:
- TensorFlow o PyTorch
- Entornos como OpenAI Gym
- Algoritmos listos en librerías como
stable-baselines3
,RLlib
, etc.
🎮 Ejemplo real: jugar Atari
Un DQN bien entrenado puede jugar juegos como Breakout, Pong, o incluso Pac-Man usando solo la imagen de la pantalla y sin saber reglas.
Aprendió solo, ¡como un humano viendo y jugando miles de veces!
🧩 En resumen
Aspecto | Detalle |
---|---|
Tipo de modelo | Aprendizaje por refuerzo + red neuronal |
Reemplaza tabla Q | Sí, con una red que generaliza |
Ideal para | Juegos, navegación, problemas complejos |
Escalabilidad | Muy alta |
Precisión | Alta (con mucho entrenamiento) |
Implementación | Avanzada (usa librerías de deep learning) |