La pregunta es básicamente
- ¿Qué debo hacer si el vector de estado tiene una longitud variable?
- Si la acción está acotada y es continua, ¿cómo puedo obtener max(Q(estado,acción)) sin utilizar la dolorosamente lenta maximización global?
Así que estaba estudiando el aprendizaje por refuerzo en juegos tipo Space-Invader.
El juego en sí es bastante complejo, con 5 tipos de invasores (recta, círculo, persecución, paseo aleatorio y nave nodriza casi estacionaria) y mucha aleatoriedad en su interior. El jugador puede elegir su velocidad (0-1) y dirección. Una barra especial de MP se utiliza para generar el ataque AOE, con la regeneración de MP ~ (1-vel)^2
Debido a que el sistema es demasiado complejo para que Q-learning aprenda con una velocidad razonable, primero apliqué una RNA de preprocesamiento para identificar a los invasores, los láseres y el estado de los jugadores (HP, MP, puntuaciones, etc).
Así que tengo una lista de invasores identificados con características como la posición, la velocidad, la velocidad prevista, HP, ticks de láser de fuego.
Sin embargo, las características ya no son un vector de longitud fija. También la acción es continua.
Tengo algunas ideas pero no estoy seguro de si son eficientes o no.
- Una red neuronal por tamaño de entrada. Así que quizá tenga que crear docenas de RNA para cubrir todo el espacio de estados. (Sin embargo, estoy seguro de que esta no es la mejor manera. Cómo pueden ser diferentes 39 invasores de 40 invasores...)
- Discretizar la acción en, digamos, 314 puntos (así que 314 neuronas de salida) y utilizar la interpolación para obtener la función Q (pero el tamaño masivo de la red seguramente matará el rendimiento)