Contenido del curso

- Aplicación de DQN: Juegos de Atari

Aplicación de DQN: Juegos de Atari

Implementación práctica de Deep Q-Network para jugar Breakout, Space Invaders y Pong. Preprocesamiento de estados, arquitectura de red convolucional y monitoreo de entrenamiento.

Preprocesamiento de estados

La entrada del entorno Atari (imagen RGB 210×160) se transforma para reducir dimensionalidad y capturar movimiento temporal. Cada paso se procesa de la siguiente forma:

  • Conversión a escala de grises – se elimina la información cromática, reduciendo canales de 3 a 1.
  • Reducción de resolución – la imagen se redimensiona a 84×84 píxeles, equilibrando detalle y coste computacional.
  • Stacking de 4 frames consecutivos – se apilan los últimos 4 fotogramas (84×84×4) para capturar dirección y velocidad de los objetos. Esto permite que la red infiera movimiento sin recurrir a un historial explícito.
Ejemplo de flujo: Frame t → grises → resize 84×84 → concatenar con frames t-1, t-2, t-3 → tensor de entrada (84,84,4).

Arquitectura de red (DQN Atari)

La red convolucional clásica para Atari consta de 3 capas convolucionales seguidas de 2 capas fully connected. Esta estructura ha sido validada en múltiples títulos de Atari.

  • Conv1: 32 filtros 8×8, stride 4, activación ReLU.
  • Conv2: 64 filtros 4×4, stride 2, activación ReLU.
  • Conv3: 64 filtros 3×3, stride 1, activación ReLU.
  • Fully Connected 1: 512 unidades, activación ReLU.
  • Fully Connected 2 (salida): número de acciones válidas del juego (ej. 4 para Breakout: izquierda, derecha, no movimiento, disparo).

La entrada a la red es un tensor de dimensión (84, 84, 4) y la salida son los Q-valores para cada acción.

Hiperparámetros típicos

ParámetroValorNota
Batch size32estable y eficiente en GPU
Learning rate0.00025Adam (o RMSprop) con tasa baja
Factor de descuento γ0.99prioriza recompensas a largo plazo
Capacity replay buffer1,000,000(típicamente 1e6 frames)
Target network updateCada 10,000 pasoscopia de pesos de la red online
OptimizadorAdam (o RMSprop)con épsilon 1e-8
Exploration ε1.0 → 0.1 en 1M framesdecaimiento lineal

La política epsilon-greedy permite explorar al inicio y explotar después del entrenamiento.

Entrenamiento en GPU y monitoreo

El entrenamiento se realiza en GPU (CUDA) para acelerar las convoluciones. Durante el proceso se monitorean las siguientes métricas:

  • Recompensa promedio por episodio – media de las últimas 100 partidas. Para Breakout, valores superiores a 300 indican política estable.
  • Pérdida (loss) temporal – error cuadrático medio entre Q-target y Q-predicha.
  • Magnitud de Q-valores – útil para detectar saturación.
  • Frames por segundo (FPS) – rendimiento en GPU.
Ejemplo de registro: Episodio 1200, recompensa media (100 ep) = 245, pérdida = 0.021, epsilon = 0.12

Visualización de la política aprendida

Se generan mapas de calor de los Q-valores para comprender qué acciones prioriza el agente en cada estado. Por ejemplo, en Breakout, la red asigna valores altos a la acción ‘moverse a la izquierda’ cuando la pelota se dirige al lado izquierdo de la pantalla.

  • Los mapas de calor se calculan promediando Q-valores sobre múltiples episodios.
  • Se visualiza la diferencia entre la acción con máximo Q y el resto.
  • Herramientas como matplotlib o tensorboard permiten observar la evolución durante el entrenamiento.

Comparación de configuraciones: replay buffer y target network

Dos componentes clave de DQN: el replay buffer y la target network. Se experimentan distintas versiones:

ConfiguraciónBufferTarget updateRendimiento en Breakout (recompensa media)
Estándar (DQN)1M, uniformecada 10k pasos~350
Buffer pequeño + target frecuente100k, uniformecada 2k pasos~210
Buffer grande + target cada 30k2M, prioritizadocada 30k pasos~410 (con PER)
Sin target network1MN/A (online)~90 (inestable)

El uso de Prioritized Experience Replay (PER) suele mejorar la eficiencia de muestreo, y la target network estabiliza el aprendizaje al reducir correlación.

Resultados empíricos en Space Invaders y Pong

La misma arquitectura DQN se ha evaluado en múltiples juegos de Atari. A continuación se muestran resultados representativos después de 10 millones de frames (entrenamiento con GPU).

JuegoRecompensa media (100 episodios)Mejor puntuación registradaObservaciones
Breakout375 ± 45432política consistente, rompe 3 bloques por ciclo
Space Invaders1650 ± 2102010buena esquiva de disparos, uso de cobertura
Pong18.5 ± 1.221 (victoria perfecta)política casi óptima, devuelve todos los golpes

Pong es el juego más sencillo; DQN alcanza rendimiento sobrehumano. Space Invaders requiere más exploración por los movimientos laterales de los alienígenas.

Fragmento de entrenamiento (pseudocódigo conceptual)

# Entrenamiento DQN para Atari (simplificado)
for episodio in range(num_episodios):
    estado = entorno.reset()
    estado = preprocesar(estado)  # grises + resize + stacking
    while True:
        accion = agente.seleccionar_accion(estado, epsilon)
        siguiente, recompensa, terminado = entorno.ejecutar(accion)
        siguiente_proc = preprocesar(siguiente)
        buffer.almacenar(estado, accion, recompensa, siguiente_proc)
        if len(buffer) > batch_size:
            batch = buffer.muestrear(batch_size)
            perdida = agente.actualizar_red(batch)  # minimiza MSE(Q_target - Q)
            if paso % 10000 == 0:
                agente.actualizar_target()
        estado = siguiente_proc
        if terminado: break

El código anterior usa un buffer de replay y una target network actualizada periódicamente.

Conclusiones y siguientes pasos

La implementación de DQN con preprocesamiento de frames, arquitectura convolucional y ajuste de hiperparámetros permite resolver juegos de Atari con alta efectividad. La visualización de Q-valores y la comparación de configuraciones (buffer, target) son herramientas clave para depuración y mejora del agente.

Para profundizar, se recomienda explorar variantes como Double DQN, Dueling DQN o Rainbow, que integran múltiples mejoras sobre la base presentada.

Implementación práctica de DQN para jugar al juego Breakout de Atari. Preprocesamiento de estados: conversión a escala de grises, reducción de resolución (84x84), stacking de 4 frames consecutivos para capturar movimiento. Arquitectura de red neuronal específica para Atari (ej. 3 capas convolucionales + 2 fully connected). Hiperparámetros típicos: batch size=32, learning rate=0.00025, factor de descuento γ=0.99. Entrenamiento en GPU y monitoreo de la recompensa promedio por episodio. Visualización de la política aprendida mediante mapas de calor de Q-values. Comparación de rendimiento con diferentes configuraciones de replay buffer y target network. Resultados empíricos en otros juegos como Space Invaders y Pong.
Calificación
0 0

No hay comentarios por ahora.