Cómo un ordenador se pasó Civilization mediante RTFM  

Posted by Unai in , ,

Artículo de John Timmer en Ars Technica

How a computer beat <em>Civilization</em> by RTFM

Normalmente, hablar de artículos de informática me supone un gran esfuerzo, pero dos cosas sobre uno reciente le dan un atractivo personal: soy un adicto a la serie de Civil ization y rara vez me tomo la molestia de leer el manual de usuario. Éstos no parecen problemas de los que se resuelvan mediante la informática, pero algunos investigadores han decidido dejar que un ordenador aprenda solo a jugar a Freeciv y, en el proceso, aprenda a interpretar el manual del juego por su cuenta. Sencillamente determinando si los movimientos que realizaba tenían éxito o no, el software de los investigadores no sólo fue mejorando en cómo jugar al juego, sino que también llegó a entender gran parte del manual de usuario.

Civilization no es el primer juego en llamar la atención de los investigadores informáticos. Los autores del ensayo, situados en el MIT y el University College London, citan literatura pasada en la que ordenadores aprendían solos a jugar al go, al póker, al scrabble, a juegos de cartas multijugadores y a juegos de estrategia en tiempo real. Al método utilizado para todos estos se le llama búsqueda Monte Carlo. El juego ejecuta una serie de juegos simulados por cada movimiento posible, que usa para determinar la utilidad de distintos movimientos. Utiliza éstos para actualizar una función de movimiento que estima el valor de determinado movimiento para determinado estado del juego. Después de múltiples iteraciones, la función de utilidad debería mejorar a la hora de identificar el mejor movimiento, aunque el algoritmo insertará esporádicamente un movimiento aleatorio, sólo para seguir probando nuevas posibilidades.

Todo esto suena bastante simple, pero los desafíos computacionales son bastante grandes. Los autores estiman que el jugador medio tendrá unas 18 unidades en juego, y cada una de ellas puede tomar una de 15 acciones. Eso crea un "espacio de acción" de unos 10²¹ movimientos. Para medir la utilidad de alguno de ellos, se realizan pruebas de 20 movimientos y después se comprueba la puntuación del juego (para determinar si se ha ganado o perdido desde entonces). Llevaron esto a cabo 200 veces para generar sus números de rendimiento.

Para las pruebas, se establecía que la búsqueda Monte Carlo se hiciera jugando con la IA de Freeciv en un cara a cara en una rejilla de 1000 tiles. Completar una sola partida de 100 movimientos llevaba 1,5 horas en un Core i7, así que el tiempo de simulación no era trivial. Pero, en general, el algoritmo funcionó bastante bien, siendo capaz de obtener una victoria en ese breve período de tiempo en cerca del 17 porciento de las veces (si se le deja jugar una partida hasta el final, la búsqueda Monte Carlo ganaba casi la mitad de las partidas).

Aun así los autores se preguntaban si el algoritmo podría tomar decisiones mejores si tuviera acceso al manual de usuario, que contiene pistas y consejos sobre los puntos fuertes y débiles de distintas unidades, así como nociones generales de cómo construir un imperio (como por ejemplo, hacer las primeras ciudades cerca de ríos). Así que decidieron que su programa hiciese un RTFM.

La "lectura" se llevó a cabo con una red neural que recibía como datos el estado del juego, una propuesta de movimiento y el manual de usuario. Un grupo de neuronas de la red analizaba el manual en busca de parejas estado/movimiento. Estas parejas son estados como "unidad activa" o "camino completado" y movimientos como "mejorar terreno" o "fortificar unidad". Una red neural separada identificaba si alguno de los estados identificados por la primera se correspondía con la situación actual. Después se combinaban para buscar en el manual algún consejo útil, que a continuación se incorporaba a la función de utilidad.

La clave de este proceso está en que la red neural ni siquiera sabe si está identificando correctamente las parejas de estado/movimiento cuando empieza (no sabe cómo "leer"), menos aun si ha interpretado correctamente el consejo que se da (¿construir ciudades cerca -near- de los ríos, o no construirlas nunca -never- donde los ríos?). Todo lo que le importa es el resultado que haya tenido la interpretación en el devenir del juego. Resumiendo, tiene que aprender a leer el manual de usuario probando distintas interpretaciones de éste y juzgando si mejoran su forma de jugar.

Pese al desafío que supone, funciona. Cuando se incluyó el análisis del texto entero, el éxito del software de los autores se disparó; ahora ganaba más de la mitad de las partidas de menos de 100 movimientos y vencía a la IA del juego casi el 80 porciento de las veces en partidas completas.

Para evaluar cómo de bien lo hacía el software, los autores le daban una mezcla de frases sacadas del manual y del Wall Street Journal. El software identificaba correctamente las frases del manual el 90% de las veces al principio del juego. Sin embargo, al progresar la partida, el manual se volvía una ayuda menos necesaria, y la habilidad de elegir del manual descendía a en torno al 60 porciento durante el resto de ésta. En paralelo a esto, el software empezaba a depender menos del manual y más de su propia experiencia.

Eso no significa, sin embargo, que el Journal fuese inútil. Alimentar al software siempre con texto aleatorio en vez del manual de usuario también aumentaba la tasa de éxito del algoritmo, hasta el 40 porciento en las partidas de hasta 100 movimientos. No alcanza el 54 porciento obtenido con el manual, pero es bastante mejor que el 17 porciento del algoritmo a secas.

¿Qué está pasando aquí? El ensayo no lo dice, pero la cuestión es que la red neural se limita a identificar reglas que funcionen (como construir cerca de un río). No le importa cómo se transmiten las reglas, sencillamente asocia el texto con una acción al azar y determina si el resultado es bueno. Si hay suerte, puede acabar asociando una regla útil a un texto aleatorio. Tiene más probabilidades con textos no-aleatorios del manual de usuario, pero aún puede aportar una guía útil sin importar qué es lo que se le da para trabajar.

(He inquirido a los autores acerca de esta explicación, pero, en la publicación de este artículo, aún no he recibido respuesta.)

Los autores concluyen que su software aprendió exitosamente a valerse del rico lenguaje presente en el manual de usuario para funcionar mejor, aprendiendo a intepretarlo sobre la marcha. Esto es claramente cierto; el software se desempeña mejor con texto del manual de usuario que elegido al azar, y la diferencia es estadísticamente significativa. Pero el mero hecho de darle cualquier texto lo mejora considerablemente. Esto implica que es mejor tener algunas reglas con las que trabajar, sin importar de dónde se deriven, que ninguna guía en absoluto.

This entry was posted on martes, julio 26, 2011 at 11:10 and is filed under , , . You can follow any responses to this entry through the comments feed .

1 comentarios

¿Empiezo a pensar si no debería haber traducido el titular como "venció a" en vez de "se pasó"?

26 de julio de 2011, 13:57

Publicar un comentario

Publicar un comentario