La 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.
La 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.
La 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.
La 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.
Cada 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.
De 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.
Los 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.
Estos juegos están
disponibles en una base de datos llamada Arcade Learning 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.
La 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.
Los 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.
Primero 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).
El 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.
Los 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.
Muchos 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.
Eso 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.
En 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.
Tambié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.
Su 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?).
Se 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 alternativa 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?
Fuente:Technologyreview.es