Algoritmo neuroevolucionario aprende a jugar Mario
SethBling es conocido por su canal en el que publica varios consejos e inventos para el mundo de Minecraft. A menudo aparece otro contenido. Por ejemplo, Mario está en la lista de intereses del vlogger. Fue SethBling quien primero pasó a Super Mario World en la consola usando un error con memoria de edición al mover elementos en el juego. Sus últimos videos y transmisiones todavía tienen el mismo juego. Pero no es una persona la que juega, sino un algoritmo neuroevolutivo, que el mismo SethBling escribió.La implementación se llama MarI / O. Se realiza una representación gráfica de la red neuronal en la parte superior de la pantalla. A la izquierda se muestra cómo el algoritmo ve el nivel: comprende el entorno y la posición del jugador. Los cuadrados blancos son bloques sobre los que el jugador puede pararse, los negros son objetos en movimiento. A la derecha hay botones en los que puede hacer clic una red neuronal. Las conexiones neuronales se encuentran en el medio, solo una parte de ellas se usa en un momento dado.La estructura es compleja, pero SethBling no creó una red neuronal. Esto fue hecho por su implementación del algoritmo neuroevolutivo. El programa intentó realizar acciones, luego su efectividad fue evaluada por la distancia recorrida. El entrenamiento tomó un día. La generación cero fue muy estúpida, algunas personas simplemente se quedaron quietas. Si el jugador permaneció demasiado tiempo, la simulación terminó. Algunos han aprendido a avanzar, ignorando la presencia de obstáculos y enemigos. Esto llevó a una reunión con enemigos y balas, pero hubo al menos algún progreso. Uno de los individuos de generación cero. La línea verde es una conexión positiva. Si entra un bloque, se transmitirá el mismo color a la salida. Esta neurona obliga al jugador a avanzar mientras hay una plataforma frente a él. La línea roja es negativa y la salida es opuesta al color obtenido.
Después de encontrarse con varios enemigos por encima de su cabeza, el jugador salta varias veces y se encuentra en una plataforma que termina en un acantilado. Como ya no hay un bloque en el lugar correcto, este individuo se detiene aquí. Las personas más complejas y posiblemente más exitosas tienen más neuronas, pero el principio de funcionamiento sigue siendo el mismo.Para que la red neuronal aprenda, se aplica la selección. El rendimiento de cada individuo se estima por la distancia recorrida y la velocidad. Solo los individuos más efectivos se cruzan en la próxima generación, luego ocurren mutaciones. El proceso se repite tantas veces como sea necesario. Se necesitaron 35 generaciones para completar un nivel. El individuo más perfecto recibió un valor de aptitud del orden de 4000.
SethBling no ideó un principio de funcionamiento desde cero. Al crearlo, utilizó el trabajo científico ya existente sobre NEAT (NeuroEvolution of Augmenting Topologies), la neuroevolución de las topologías en crecimiento. También describe cómo las generaciones se pueden dividir en especies, lo que no todos los algoritmos genéticos están tratando de hacer. MarI / O fue escrito en Lua usando el emulador BizHawk . SethBling no se detuvo allí. Obligó al algoritmo a pasar por otros juegos de plataformas, transmitiendo el proceso de aprendizaje en su cuenta de Twitch. Entre los juegos estaba el clásico Super Mario Brothers. MarI / O pudo pasar el primer nivel, pero ya se detuvo en el segundo. Incluso a pesar de la falla, el algoritmo descubrió accidentalmente un pequeño error que podría ser útil para los speedraners.
Algunas personas se atascaron en una de las paredes en el nivel Donut Plains 4 en Super Mario World. Tardó un tiempo en comprender que debes chocar contra la pared, no necesitas saltar sobre ella. La próxima generación ya pudo correr hacia la pared, pero en el siguiente obstáculo, las personas se detuvieron; olvidaron cómo saltar frente al obstáculo. Después de algunas generaciones, el algoritmo se dio cuenta de dónde presionar el botón a la izquierda y dónde saltar. MarI / O nunca pudo completar ese nivel. Una de las tuberías es demasiado alta para saltar. En cambio, usa la plataforma de uno de los Hammer Brothers. SethBling interrumpió el proceso de aprendizaje, creyendo que el algoritmo nunca aprendería esto.
En el tercer video, MarI / O juega Super Mario Kart en modo Time Trial sin enemigos. Winterbunny ayudó a modificar el guión para trabajar en este juego. Aunque Super Mario Kart es diferente de los juegos de plataformas, el proceso de aprendizaje es el mismo. Al principio, el algoritmo es estúpido y no puede hacer nada. Las personas solo intentan hacer clic en ciertos botones. Pero incluso en la generación cero hubo personas que aprendieron a montar bastante bien.Ya en la séptima generación, se encontró un individuo que condujo 5 vueltas en 2.5 minutos. Esta cifra es mala, el récord mundial es de aproximadamente un minuto. Un individuo constantemente se topaba con obstáculos y, a veces, envolvía círculos. Una persona de la novena generación mostró un buen resultado de 1,5 minutos, incluso trató de mantenerse en el camino sin ir al margen.Código fuente Pastebin MarI / OOtro canal de Twitch donde MarI / O aprende a jugar varios juegosSource: https://habr.com/ru/post/es381315/
All Articles