Cómo aplicar el aprendizaje automático al desafío Vindinium AI

* A2A *

Mi herramienta preferida para los juegos suele ser el algoritmo TD-Learning [1]. Es más fácil codificar (pero es un poco más difícil hacerlo bien, ya que debe decidir el espacio de estado y el espacio de acción correctos). En estos días, el aprendizaje de refuerzo de conjunto se está volviendo más popular. [2] muestra una IA siendo entrenada para jugar a Mario usando el aprendizaje de refuerzo de conjunto y gradualmente ser bueno en eso.

Mi segunda herramienta de elección suele ser el aprendizaje por imitación. Hace varios años, solía pasar mucho tiempo jugando con Robocode [3]. Con robocode, tenía acceso al repositorio de robocode donde muchas personas habían subido sus bots para que otras personas los descargaran y usaran. Descargué uno de los bot de mayor rendimiento y cambié su código para registrar todo el estado y las acciones que tomó. Luego, ejecuté este bot contra varios jugadores diferentes y comencé a crear el registro. Una vez que tuve suficiente cantidad de datos, modifiqué estos datos (discreticé el espacio de acción) para entrenar un SVM multiclase. Luego escribí un bot que tomó medidas basadas en el clasificador SVM. La idea esencialmente aquí era imitar al mejor bot pero a través de un modelo aprendido. Lo hizo bastante bien. Aprendí un par de otros buenos bots y creé algunos modelos más. Luego, simplemente combiné todos estos modelos y elegí la acción basada en la acción que tuvo la mejor puntuación entre todos los modelos.

[1] Aprendizaje de diferencia temporal
[2] Michel Tokic – Hochschule Ravensburg-Weingarten
[3] Inicio de Robocode

Aprenda algo sobre el aprendizaje por refuerzo. Hay una gran cantidad de literatura sobre el tema.

Juega un millón de veces más o menos y registra tus movimientos, así como los estados como entrada y el resultado final del juego como salida. Ahora puede aprender un clasificador (DeepNet, Gaussian Process, SVM, …) que, dado un estado, determina el mejor movimiento.