Aprendizaje por refuerzo profundo: Q media como métrica de evaluación

Aug 18 2020

Estoy ajustando un modelo de aprendizaje profundo para un alumno del juego Space Invaders (imagen a continuación). El estado se define como la distancia euclidiana relativa entre el jugador y los enemigos + la distancia relativa entre el jugador y los 6 láseres enemigos más cercanos normalizada por la altura de la ventana (si la posición del jugador es$(x_p,y_p)$ y la posición de un enemigo es $(x_e,y_e)$, la distancia euclidiana relativa es $\frac{\sqrt{(x_p-x_e)^2+(y_p-y_e)^2}}{HEIGHT}$y ALTURA es la altura de la ventana). Por lo tanto, la dimensión del espacio de observación es (10 + 6), lo que da como resultado una entrada de mi red neuronal profunda de 16 unidades.

Mi agente no parece aprender (la función de recompensa no aumenta) y pensé en verificar los valores medios de Q, que son la salida de mi red neuronal profunda principal y, en lugar de aumentar, he comentado que los valores medios de Q se estabilizan (como en la figura siguiente) en lugar de aumentar. He modificado muchos parámetros de ajuste (tamaño del lote, arquitectura y parámetros de la red neuronal ...) pero todavía tengo el mismo problema. ¿Alguna idea de por qué los valores medios de Q no aumentarían?

A continuación, se muestran algunos resultados sobre el alumno:

Respuestas

NeilSlater Aug 20 2020 at 04:35

Creo que su principal problema es el uso de la distancia relativa como característica principal. Tiene dos debilidades principales:

  • La distancia a un objeto no da la dirección al objeto. Las mejores opciones de acción dependen fundamentalmente de la dirección. Por ejemplo, un rayo láser enemigo de 0,1 unidades directamente sobre el jugador es un peligro inmediato que requiere una acción evasiva, mientras que uno de 0,1 unidades a la izquierda o la derecha no es un peligro y está a punto de abandonar la ventana del juego. Su característica de distancia relativa no distingue entre esos escenarios, pero es una diferencia crítica.

  • Un poco menos importante, pero la distancia bruta no captura ningún sentido de movimiento. Si los enemigos se mueven constantemente giro a giro, pero no siempre en la misma dirección exacta o con la misma velocidad, entonces sus velocidades también deberían ser parte del estado.

Una forma de mejorar las funciones es agregar un componente de velocidad para cada elemento, que muestre la rapidez con la que se acerca o se aleja del reproductor. Esto puede ayudar un poco, pero mi sensación es que necesitas más datos que distancia y velocidad.

Creo que deberías usar normalizado $x, y$posición como características para cada elemento que se rastrea, más velocidad normalizada$dx, dy$ para cualquier tipo de objeto que pueda cambiar de dirección (si los láseres enemigos siempre caen directamente hacia abajo, es posible que no necesite nada para ellos).

Adicionalmente:

  • Si los bordes de la ventana son importantes, debe incluir al menos el relativo $x$de uno de ellos, para que el agente sepa su posición absoluta en pantalla y cuánto espacio tiene para maniobrar. Esto es cierto si el jugador no puede moverse más hacia la izquierda o hacia la derecha, o si el jugador "se desplaza" al otro lado de la pantalla. Ambos tipos de efectos afectarán significativamente cómo se juega el juego cerca del borde de la pantalla.

  • Para rastrear el valor pronosticado, necesita rastrear la ubicación de los misiles del jugador. No es suficiente dejar que el agente prediga cuándo es mejor disparar; para rastrear con precisión una función de valor, necesita "ver" si el misil que disparó hace algunos pasos es probable que impacte o falle en un objetivo.

  • Tanto para los láseres enemigos como para los misiles del jugador, está bien filtrar y ordenar los datos según algunos criterios (como la distancia al jugador). Siempre que esto sea consistente, incluso puede ayudar mucho tener dicho procesamiento previo.