Estas redes se basan en el funcionamiento del propio cerebro humano. Nada podría tener más potencial que eso, ¿verdad?
nNo 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 dio lugar al cerebro humano, la evolución. En otras palabras, gracias a una secuencia iterativa de cambios y selección nacieron las máquinas más complejas y capaces conocidas por la humanidad: el ojo, el ala, el cerebro, etcétera. El poder de la evolución es impresionante.
nEs por eso que los científicos informáticos llevan mucho tiempo intentando aprovecharse de su potencial. La llamada computación evolutiva ha logrado algunas proezas notables desde que se usó por primera vez hace 30 años para optimizar las líneas de producción de las fábricas de tractores.
nPero en los últimos años, esta rama de la inteligencia artificial (IA) ha tenido un papel secundario frente al enorme éxito de las técnicas de aprendizaje profundo.
nEsto podría estar a punto de cambiar gracias al trabajo del equipo del investigador de la Universidad de Toulouse (Francia) Dennis Wilson. Los investigadores han demostrado que la computación evolutiva puede igualar el rendimiento de las máquinas de aprendizaje profundo en la famosa tarea que las lanzó a la fama por primera vez en 2013: la capacidad de superar a los humanos en los videojuegos como Pong, Breakout y Space Invaders.
nLa computación evolutiva funciona de una forma completamente distinta a las redes neuronales. Su objetivo consiste en crear un código informático capaz de resolver un problema específico mediante un enfoque contrario a la intuición.
nLa forma convencional de crear un código se basa en escribirlo desde el inicio con un objetivo concreto en mente. Pero la computación evolutiva usa un enfoque diferente. Comienza con un código generado completamente al azar. Y no solo utiliza una versión, a veces puede emplear cientos de miles de fragmentos de código ensamblados aleatoriamente.
nLa técnica prueba cada uno de estos fragmentos código para ver si alcanza el objetivo requerido. Por supuesto, todo el código es horrible porque se genera de forma aleatoria. Pero por casualidad, algunos fragmentos de código resultan un poco mejores que otros. Estas piezas se reproducen en una nueva generación de código, que incluye más copias de los códigos más eficientes.
nLa siguiente generación de códigos no puede ser una copia idéntica de la primera, debe presentar alguna variación, como el cambio de dos términos en el código, una especie de mutación puntual. O pueden involucrar dos códigos cortados a la mitad cuyas mitades se combinan, como en la recombinación sexual.
nCada una de las nuevas generaciones se prueba para testear su funcionamiento. Las mejores piezas de código se reproducen de forma prioritaria en la siguiente generación, y así sucesivamente.
nDe esta forma, el código evoluciona. Va mejorando con el tiempo y, después de muchas generaciones, si las condiciones son las adecuadas, puede ser mejor que cualquier código diseñado por un codificador humano.
nLos científicos informáticos han aplicado con éxito la computación evolutiva a problemas que van desde el diseño de robots hasta la construcción de piezas de aviones. Pero fue perdiendo popularidad debido al gran interés en el aprendizaje profundo. Así que es importante averiguar si este enfoque es capaz de igualar el rendimiento de las máquinas de aprendizaje profundo. Para ello, Wilson y su equipo utilizaron el enfoque para desarrollar un código capaz de dominar algunos videojuegos típicos de las décadas de 1980 y 1990.
nEstos juegos están disponibles en una base de datos llamada Arcade Lea ing Environment, que se usa cada vez más para probar el comportamiento de aprendizaje de varios tipos de algoritmos. La base de datos consta de 61 juegos de Atari, como Pong, Space Invaders, Breakout y Kung Fu Master.
nLa tarea consiste en crear un algoritmo que aprenda a jugar al Pong mirando únicamente la pantalla, igual que hacemos los humanos. Entonces el algoritmo debe analizar cada posición del juego para decidir cómo moverse para maximizar su puntuación.
nLos controles para todos los juegos son iguales. Se componen de las ocho direcciones en las que se puede mover el controlador (arriba, abajo, izquierda y derecha más cuatro direcciones diagonales), un botón presionable, los mismos ocho movimientos combinados con el botón, y también está la opción de hacer nada en absoluto. No todos los juegos usan las 18 combinaciones posibles, de hecho, algunos usan tan solo cuatro.
nPrimero hay que crear el código. El enfoque evolutivo requiere un vocabulario de términos que pueden concatenarse para formar un código informático. Los términos van desde acciones simples como ADD (x + y) / 2, hasta otras más complejas, como "regresa el vector-x de 1 elemento si x es un escalar". La elección de los términos que componen este vocabulario es importante. Para ello, el equipo de Wilson utiliza un conjunto ya definido para la programación genética cartesiana (como se llama su técnica).
nEl proceso comienza creando aleatoriamente un código con 40 términos. Este es el "genoma" del programa. Este genoma se prueba para ver su nivel en el juego, algo que se juzga en función de la puntuación obtenida. En función del resultado, el genoma se reproduce con mutaciones y se prueba nuevamente, y así sucesivamente. En total, el equipo probó 10.000 genomas utilizando este método.
nLos resultados son interesantes. Al principio los genomas juegan fatal, pero van mejorando con el tiempo. Y después de muchas generaciones juegan bien, a veces mejor que los humanos.
nMuchos genomas acabaron desarrollando estrategias de juego completamente nuevas, a menudo complejas. Pero a veces encontraron estrategias simples que los humanos habían pasado por alto. Por ejemplo, al jugar Kung Fu Master, el algoritmo evolutivo descubrió que el ataque más potente consiste en dar un golpe mientras el personaje está agachado. Esta posición es más segura porque esquiva la mitad de las balas dirigidas al jugador mientras ataca cualquier cosa cercana. La estrategia del algoritmo consistió en limitarse a usar esta maniobra todo el rato, algo que realmente tiene sentido.
nEso sorprendió a los jugadores humanos involucrados en el estudio. "Emplear esta estrategia logró una mejor puntuación que jugar de forma normal, y ahora el algoritmo solo usa los golpes agachados cuando ataca en este juego", explican Wilson y su equipo.
nEn general, el código evolutivo obtuvo buenos resultados en muchos de los juegos, incluso superó a los humanos en el Kung Fu Master. Del mismo modo, el código evolutivo es igual de bueno que muchos enfoques de aprendizaje profundo e incluso los supera en Asteroids, Defender y Kung Fu Master.
nTambién produce un resultado más rápido. "Aunque los programas son relativamente pequeños, funcionan bien y requieren menos tiempo de entrenamiento", señalan Wilson y su equipo.
nSu pequeño tamaño ofrece otra ventaja, ya que es más ver cómo funciona. Un conocido problema con las técnicas de aprendizaje profundo es que a veces es imposible saber por qué han tomado una decisión concreta, lo que puede tener implicaciones prácticas y legales (ver El secreto más oscuro de la inteligencia artificial: ¿por qué hace lo que hace?).
nSe trata de un trabajo interesante que debería sugerir que centrarse exclusivamente en el aprendizaje profundo puede estar pasando por alto algunos enfoques muy útiles. El enfoque evolutivo es una alte ativa poderosa 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?
nRef: https://arxiv.org/abs/1806.05695: Evolving Simple Programs for Playing Atari Games
n