Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Kempy: un nuevo enfoque a la programación en ajedrez

Llevo muchos años de ajedrez y he invertido miles de horas frente al tablero, ya sea en competiciones o estudiando los secretos de este milenario...

kempy-00

Llevo muchos años de ajedrez y he invertido miles de horas frente al tablero, ya sea en competiciones o estudiando los secretos de este milenario juego. Mi preparación académica sin embargo, se ha filtrado en este estudio y he llegado a la conclusión que los programas de ajedrez actuales sí, juegan muy bien, pero lo hacen a fuerza bruta, en donde consideran jugadas y respuestas hasta profundidades escandalosas (20 ply o más). Es difícil vencer a estos ingenios de ajedrez porque en alguna medida “hacen trampa”, pues internamente, en su memoria, mueven las piezas para valorar las jugadas de acuerdo a un poderoso algoritmo alpha-beta (cuyo precursor es Minimax), inventado por John Von Neumann.

Pero los seres humanos juegan muy bien al ajedrez y de alguna manera no usan minimax ni algoritmos que profundizan 20 plys adelante. Más bien los ajedrecistas aprenden a valorar las posiciones y decidir quién tiene la ventaja. Recuerdo la anécdota de un programa, MacHack, que en una posición particular tardó 20 minutos en encontrar la jugada más precisa. Un gran maestro hace lo mismo a vuelo de pájaro, sin siquiera analizar todas las posibles jugadas, en segundos.

¿Cómo es posible hacer eso? me preguntaba un día que caminaba por las calles del centro de Vancouver y de pronto, cual iluminación, llegó al solución. En un instante percibí con claridad qué había que hacer para escribir un programa de ajedrez que fuese tan bueno como el mejor ajedrecista de la historia, sin necesidad de tener que analizar millones y millones de jugadas, como Deep Blue hizo para vencer a Kasparov en 1997. El truco estaba en el enfoque: había que usar representaciones del conocimiento, es decir, representar los patrones correspondientes a los esquemas que indican cuando una jugada es buena y cuando no. La evaluación entonces podría derivarse del conocimiento de ajedrez que podría tener la máquina, que a diferencia de los programas actuales, no tienen conocimiento interno del tablero, solamente valoran a excesivas velocidades miles de jugadas y a partir de ahí deciden la mejor. De hecho, la mayoría de las veces, los programas de ajedrez actuales usan el 99.99% de su tiempo en examinar jugadas bobas.

Con esto en mente, ya hace años, comencé a programar a Kempy, mi propio programa de ajedrez (el nombre viene de Von Kempelen, el creador de una máquina jugadora de ajedrez que tenía el tamaño de un escritorio, en donde había un maniquí con un brazo mecánico que hacía las jugadas y se dice que dentro del escritorio se escondía un fuerte jugador que ganaba la mayoría de las veces a sus eventuales rivales humanos). Este programa no usa en principio ningún algoritmo minimax o alpha-beta. No hace poda de variantes y la memoria que usa por jugada es francamente irrisoria. Lo que hace el programa es que tiene un conjunto de reglas que evalúan las mejores jugadas, igual como hacemos los seres humanos. Digámoslo así: el programa ENTIENDE ajedrez.

Me ha llevado años incorporar además una serie de patrones combinativos que definen la mayoría de los esquemas tácticos conocidos en ajedrez. Ya Kasparov incluso en un tuit puso: “Sí, el ajedrez usa el cálculo. Igual ocurre al cruzar la calle. Las computadoras juegan al ajedrez usando sumas, los humanos no. Necesitamos patrones, intuición”. (Yes, chess uses calculation. So does crossing the street. Computers play chess by doing sums; humans cannot. We need patterns, intuition).

Prueba y error, horas y horas de procesamiento exhaustivo con máquinas de 6 y 8 núcleos (la de 6 núcleos se quemó hace unas semanas), me han llevado a un conjunto de patrones que ingeniosamente he incorporado en el programa. Los patrones indican qué jugada hacer en ciertas posiciones, con los elementos adecuados dados en dichas configuraciones del tablero. Con ello ganamos tiempo, pues no hay que hacer ningún cálculo. Pareciera todo predeterminado. De alguna manera la máquina ahora sabe qué patrones son ganadores y por qué. Es importante mencionar que se han analizado casi 5 millones de partidas para crear este conjunto de patrones combinativos. Me llama la atención que nadie haya hecho esta tarea antes.

Pero una primera prueba para demostrar la viabilidad del sistema era probar a Kempy contra una suite de posiciones conocidas, la cual lleva el nombre de “Weltmeister test” (que puede descargarse de este sitio). Cabe decir que Kempy halló casi de inmediato la respuesta y sólo falló en la última prueba. Se hizo un ajuste al programa y Kempy entonces resolvió satisfactoriamente todas las posiciones. También se le puso a Kempy la popular prueba “Bratko-Kopec” y de nuevo, el programa resolvió sin duda ninguna todas las posiciones sin error.

Hoy he decidido lanzar públicamente una versión beta, con más de doce años de estudio y trabajo en esta área. Kempy puede jugar un ajedrez que puede ser equivalente al mejor jugador sobre la Tierra. Lo único que no tiene esta versión es un módulo que permite alterar algunos parámetros de Kempy de manera que juegue más agresivo, o más profiláctico, o más arriesgado. Probablemente en la versión final esté todo.

kempy01

Estoy ahora trabajando en un libro que habla de toda esta experiencia. Probablemente llegue ya a las 300 cuartillas. ¿Alguna editorial que quiera publicarlo?

A quien le interese puede pedírmelo a [email protected] y a vuelta de correo recibirá el enlace para bajarlo. Gracias.

inocente-palomita

Comentarios