211service.com
El algoritmo evolutivo supera a las máquinas de aprendizaje profundo en los videojuegos
Con todo el entusiasmo por las redes neuronales y las técnicas de aprendizaje profundo, es fácil imaginar que el mundo de la informática consiste en poco más. Después de todo, las redes neuronales han comenzado a superar a los humanos en tareas como el reconocimiento de objetos y rostros y en juegos como el ajedrez, Go y varios videojuegos de arcade.
Estas redes se basan en la forma en que funciona el cerebro humano. Nada podría tener más potencial que eso, ¿verdad?
No exactamente. Un tipo de computación completamente diferente tiene el potencial de ser significativamente más poderoso que las redes neuronales y el aprendizaje profundo. Esta técnica se basa en el proceso que creó el cerebro humano: la evolución. En otras palabras, una secuencia de cambio iterativo y selección que produjo las máquinas más complejas y capaces conocidas por la humanidad: el ojo, el ala, el cerebro, etc. El poder de la evolución es una maravilla para la vista.
Es por eso que los informáticos han intentado durante mucho tiempo aprovechar sus capacidades. La llamada computación evolutiva ha logrado algunas hazañas notables en los 30 años desde que se puso en uso por primera vez para optimizar las líneas de producción de fábrica para tractores.
Pero en los últimos años, esta área de la informática ha tenido que pasar a un segundo plano frente a las máquinas de aprendizaje profundo y su gran éxito.
Hoy, las cosas parecen cambiar gracias al trabajo de Dennis Wilson y algunos colegas de la Universidad de Toulouse en Francia. Estos muchachos han demostrado cómo la computación evolutiva puede igualar el rendimiento de las máquinas de aprendizaje profundo en el tarea emblemática que los llevó a la fama por primera vez en 2013: la capacidad de superar a los humanos en los videojuegos de arcade como Pong, Breakout y Space Invaders. El trabajo sugiere que la computación evolutiva debería recibir el mismo reconocimiento que sus relaciones basadas en el aprendizaje profundo.
La computación evolutiva funciona de una manera completamente diferente a las redes neuronales. El objetivo es crear un código de computadora que resuelva un problema específico utilizando un enfoque que es algo contradictorio.
La forma convencional de crear código es escribirlo desde los primeros principios con un objetivo específico en mente.
La computación evolutiva utiliza un enfoque diferente. Comienza con un código generado completamente al azar. Y no solo una versión, sino muchas versiones, a veces cientos de miles de piezas de código ensambladas al azar.
Cada uno de estos códigos se prueba para ver si logra el objetivo requerido. Y, por supuesto, todo el código es horrible porque se genera aleatoriamente.
Pero por casualidad, algunas piezas de código son un poco mejores que otras. Estas piezas luego se reproducen en una nueva generación de código, que incluye más copias de los mejores códigos.
Sin embargo, la próxima generación no puede ser una copia idéntica de la primera. En cambio, debe cambiar de alguna manera. Estos cambios pueden implicar cambiar dos términos en el código, una especie de mutación puntual. O pueden involucrar dos códigos que se cortan por la mitad y las mitades se intercambian, como la recombinación sexual.
Cada uno de la nueva generación se prueba luego para ver qué tan bien funciona. Las mejores piezas de código se reproducen preferentemente en otra generación, y así sucesivamente.
De esta manera, el código evoluciona. Con el tiempo, se vuelve mejor y, después de muchas generaciones, si las condiciones son las adecuadas, puede volverse mejor de lo que cualquier codificador humano puede diseñar.
Los informáticos han aplicado con éxito enfoques evolutivos a problemas que van desde el diseño de robots hasta la construcción de piezas de aeronaves.
Pero ha caído en desgracia debido al gran interés en el aprendizaje profundo. Entonces, una pregunta importante es si puede igualar el rendimiento de las máquinas de aprendizaje profundo. Para averiguarlo, Wilson y compañía utilizaron el enfoque para desarrollar un código que pudiera controlar juegos de computadora arcade que datan de las décadas de 1980 y 1990.
Estos juegos están disponibles en una base de datos llamada Arcade Learning Environment, que se utiliza cada vez más para probar el comportamiento de aprendizaje de algoritmos de varios tipos. La base de datos consta de 61 juegos de Atari, como Pong, Space Invaders, Breakout y Kung Fu Master.
La tarea es crear un algoritmo que pueda jugar un juego como Pong mirando solo la salida de la pantalla, de la misma manera que juegan los humanos. Entonces, el algoritmo debe analizar cada posición del juego y luego decidir cómo moverse para maximizar su puntaje.
Los controles para todos los juegos son los mismos. Estos corresponden a las ocho direcciones en las que se puede mover el controlador (arriba, abajo, izquierda y derecha más cuatro direcciones diagonales), presionar un botón, los mismos ocho movimientos combinados con presionar un botón y no hacer nada en absoluto. No todos los juegos usan las 18 combinaciones posibles, y algunos usan tan solo cuatro.
El código primero tiene que ser creado. El enfoque evolutivo requiere un vocabulario de términos que se pueden concatenar para formar un código de computadora. Los términos van desde acciones simples como SUMAR (x+y)/2 hasta otras más complejas, como devolver el vector x de 1 elemento si x es un escalar.
La elección de los términos que conforman este vocabulario es importante, y Wilson y compañía utilizan un conjunto ya definido para la programación genética cartesiana (como se llama su técnica).
El proceso comienza con la creación aleatoria de un código que contiene 40 términos. Este es el genoma del programa. Luego, este genoma se prueba para ver qué tan bien juega el juego, a juzgar por la puntuación. Dependiendo de qué tan bien se desempeñe, el genoma luego se reproduce con mutaciones y se prueba nuevamente, y así sucesivamente. En total, el equipo probó 10.000 genomas de esta forma.
Los resultados hacen una lectura interesante. Al principio, los genomas son terribles para jugar el juego. Pero con el tiempo, mejoran. Y después de muchas generaciones, juegan bien, a veces mejor que los humanos.
Muchos genomas terminaron jugando estrategias de juego completamente nuevas, a menudo complejas. Pero a veces encontraron algunos simples que los humanos habían pasado por alto.
Por ejemplo, cuando jugaba Kung Fu Master, el algoritmo evolutivo descubrió que el ataque más valioso era un puñetazo en cuclillas. Agacharse es más seguro porque esquiva la mitad de las balas dirigidas al jugador y también ataca cualquier cosa cercana. La estrategia del algoritmo era usar repetidamente esta maniobra sin otras acciones. En retrospectiva, usar el puñetazo en cuclillas exclusivamente tiene sentido.
Eso sorprendió a los jugadores humanos involucrados en el estudio. Emplear esta estrategia a mano logró una mejor puntuación que jugar el juego normalmente, y el autor ahora usa golpes de cuclillas exclusivamente cuando ataca en este juego, dicen Wilson y compañía.
En general, el código evolucionado jugó bien en muchos de los juegos, incluso superando a los humanos en juegos como Kung Fu Master. De manera igualmente significativa, el código evolucionado es tan bueno como muchos enfoques de aprendizaje profundo y los supera en juegos como Asteroids, Defender y Kung Fu Master.
También produce un resultado más rápidamente. Si bien los programas son relativamente pequeños, muchos controladores son competitivos con los métodos más avanzados para el conjunto de referencia de Atari y requieren menos tiempo de capacitación, dicen Wilson y compañía.
El código evolucionado tiene otra ventaja. Debido a que es pequeño, es fácil ver cómo funciona. Por el contrario, un problema bien conocido con las técnicas de aprendizaje profundo es que a veces es imposible saber por qué han tomado decisiones particulares, y esto puede tener ramificaciones prácticas y legales.
En general, este es un trabajo interesante que debería sugerir a los informáticos que se centran exclusivamente en el aprendizaje profundo que pueden estar perdiendo un truco. El enfoque evolutivo es una poderosa alternativa que se puede aplicar en un amplio conjunto de situaciones.
De hecho, algunos investigadores han comenzado a usarlo para desarrollar mejores máquinas de aprendizaje profundo. ¿Qué podría salir mal?
Ref: https://arxiv.org/abs/1806.05695 : Programas simples en evolución para jugar juegos de Atari