lunes

14: Inteligencia artificial


(I) INTRODUCCIÓN

En la entrada anterior de la sección “Así es la vida", dediqué mi reflexión ajedrecística al gran campéon Bobby Fischer, de quien se ha dicho en infinidad de ocasiones que jugaba como un ordenador. Pero... ¿cómo juega un ordenador?
Empecemos por el principio...


(II) PASADO

Según cuentan algunos libros, la Zarina Catalina II jugó en 1770 dos partidas contra un ajedrez mecánico, perdiendo la primera y ganando la segunda. A este ajedrez mecánico, inventado según afirmaba él mismo por Wolfgang von Kempelen, lo llamaban “El Turco”, pues el muñeco que movía las piezas iba vestido como si lo fuera.


Dejaba atónitos a quienes lo veían jugar, pues al abrir el cajón que había debajo del muñeco sólo se veían engranajes y poleas, sin que hubiera sitio para un hombre escondido. De ser cierta la historia, “El Turco” habría sido la primera inteligencia artificial capaz de jugar al ajedrez.
En realidad, sí que había un hombre escondido: era un ajedrecista polaco, de nombre Worownsky, que ya de por sí era bajito y además había perdido las dos piernas.

Hay que esperar hasta 1946 para que los matemáticos Claude Shannon y Alan Turing puedan desentenderse de sus obligaciones bélicas (colaboraron decisivamente en el cifrado y descifrado de mensajes durante la Segunda Guerra Mundial) y se tomen en serio la idea de programar una máquina capaz de jugar una partida de ajedrez, y a ser posible con un nivel de juego que esté por encima de la categoría “mono despistado”.


Trabajando casi todo el tiempo cada uno por su cuenta, llegaron a completarlo, pero en 1950 no había ordenador capaz de soportar semejante tarea. Es muy famosa la anécdota de Turing ejecutando a lápiz los pasos del programa y tardando 35 horas en completar una partida, que por cierto perdió. “El programa funciona”, dijo.

Y entonces llegó IBM...
Retomando las ideas de Shannon y Turing, fue el ingeniero Alex Bernstein quien completó en 1957 la primera versión ejecutable sobre un IBM 704.


Tristemente, Turing ya no estaba vivo para poder verlo. Las leyes británicas de la época le habían hecho la vida imposible por ser homosexual. Permanece la duda de si se envenó o lo envenenaron; yo no lo sé.

Lo que sí sé es que desde el primer momento se vio con claridad dónde estaba la clave:
“Hay que empezar por descartar las jugadas absurdas, para no perder ni un microsegundo en analizarlas.”

Esto lo hacemos los humanos de forma inconsciente: vemos que algunas jugadas son tan malas que no les dedicamos ni un parpadeo; en su lugar, analizamos qué nos deparará el futuro si hacemos alguna de las otras.
Pero a un programa de ajedrez hay que encontrar la manera de hacérselo entender.
Veamos el siguiente tablero, a modo de ejemplo.

Supongamos que en esta posición mueve el blanco.  
La jugada Cb4 es ilegal. 
Como es ilegal, no pierdo ni un instante en estudiar 
qué pasaría si la hago.
La jugada Dg4 es legal, 
pero es un disparate de tal calibre 
que tampoco debo dedicarle ni un instante.
Un buen jugador de ajedrez, 
no es que no dedique tiempo a procesar estas dos jugadas, 
es que ni las ve.
De hecho, es una de las características de los jugadores fuertes: 
al primer golpe de vista perciben cuáles son 
las tres o cuatro jugadas razonables; 
las jugadas malas ni las ven, igual que no ven las ilegales.

De modo que todo programa de ajedrez incluye dos subrutinas que deben trabajar a contrarreloj: una que genera los posibles tableros legales a partir de uno dado y otra que los evalúa.
Por ejemplo, las torres se mueven por columnas y filas; si lo hacen por columnas, no cambia la letra, y si lo hacen por filas no cambia el número. La Torre del diagrama que está en e1 podría ir a todas las casillas que conserven constante la e y a todas las que conserven constante el 1, obstáculos aparte. Luego los movimientos legales de esa Torre son e2, e3, e4, e5, e6, e7, e8, f1. Si no los he contado mal, el total de movimientos legales en la posición del ejemplo es 35, y como promedio a lo largo de una partida suele aceptarse la cifra 20, así que en cada movimiento que avanza la partida tenemos mis 20 movimientos seguidos de las 20 respuestas del rival, lo que supone que 400 tableros deben pasar al programa evaluador para que descarte lo más rápido posible aquellos en los que salgo perdiendo (por ejemplo, todos los que vengan después de Dg4 en el diagrama anterior) y ordene de mejor a peor los que sobrevivan a la criba: valorando piezas perdidas y ganadas, valorando casillas perdidas y ganadas, valorando la movilidad de las piezas...

Supongamos que el programa debe trabajar en profundidad dos: el movimiento siguiente y el siguiente del siguiente. En ese caso, tendrían que pasar al programa evaluador, redondeando, 160.000 posibles tableros antes de decidir cada jugada. Para trabajar en profundidad tres, habría que evaluar 64 millones. Para trabajar en profundidad cuatro, el número de tableros posibles supera al de seres humanos. 

Con la circuitería disponible en 1957, el programa de Shannon-Turing-Bernstein, corriendo sobre un IBM 704, invertía un promedio de 8 minutos por jugada y en casi todas decidía de entre lo que había visto en profundidad 3, con lo que no podía aspirar a ganarle más que a algún niño pequeño. 

Cuarenta años después, los jubilados Shannon y Bernstein contemplan boquiabiertos cómo ha evolucionado la criatura: IBM presenta al mundo un programa capaz de ganarle al campeón, Gari Kaspárov. Este programa, sostenido por 30 procesadores principales y 480 coprocesadores matemáticos, en algunas posiciones era capaz de bucear hasta profundidad 30. 
Con razón le pusieron de nombre Deep Blue. 
Con razón Kaspárov se dejó la piel y no pudo con el monstruo abisal.

No quiero terminar este apartado sin mencionar al “equipo” de programadores que dio el verdadero salto, el que se produjo en la década de los 80 cuando pudieron implementar sus programas evaluadores sobre los prodigiosos procesadores del momento, el Z80 de Zylog (alma del inolvidable ZX Spectrum), el 68000 de Motorola (que daba vida a la inmortal Sega Mega Drive) y el 8086 de Intel, antepasado de todos los Intel que han venido después. 
En la foto no están todos, pero está una buena parte del “equipo”. Pongo “equipo” entre comillas porque la motivación era hija de la rivalidad.


El “ganador” fue Richard Lang, cuyo método evaluador dio origen a ChessGenius, que siguió siendo el programa de ajedrez más potente para PC hasta que llegaron las arquitecturas de 64 bits. 
La versión gratuita sobre plataforma Android tiene nivel de sobra para ganar a casi todos los humanos, aunque su apariencia gráfica no sea gran cosa.



(III) PRESENTE

El nivel de juego desplegado por Deep Blue en 1997 fue suficiente para derrotar a Gari Kaspárov, uno de los campeones más sólidos de toda la historia. A partir de entonces, la labor conjunta de los programadores, elaborando bases de datos cada vez más amplias, y de los diseñadores de hardware, haciendo que esas bases se puedan leer cada vez más rápido, ha llevado a los programas de ajedrez a un nivel, nunca mejor dicho, inhumano. Así, ningún cerebro humano — y el mío menos — está en condiciones de ganarle a las últimas versiones de Fritz, Komodo o Stockfish.

Para poder ganarles de vez en cuando, hay que rebajarles el nivel de juego. Si a un programa que tiene, por ejemplo, 10 niveles de juego, le haces jugar en el nivel 10, hará siempre la jugada que su programa evaluador considere óptima. Si lo pones a jugar a nivel 9, sólo hará la jugada que considere óptima el 90% de las veces; el otro 10% de las veces “tirará un dado” y en lugar de la primera jugada de su árbol evaluador, ejecutará la segunda o la tercera o la cuarta. Si lo pones a jugar a nivel 1, “tirará muchos dados y hará muchas burradas”. Así le gano hasta yo.

Y entonces llegó Google... 
La empresa británica Deep Mind (su página web no tiene desperdicio, especialmente el blog) llevaba desde 2010 intentando desarrollar las redes neurales de Turing, cuando fue absorbida por Google, a mediados de 2014. Alan Turing, el mismo de hace ochenta líneas, el mismo que descifró los códigos de la Kriegsmarine, dejó esbozado antes de morir el diseño de unas redes neurales recurrentes, capaces de autoprogramarse: capaces de elaborar programas más elaborados a partir de un programa germen. Turing era consciente de que en su época no había hardware capaz de soportar el flujo de datos necesario, pero los matemáticos de Deep Mind pensaban que los integrados disponibles en 2010 ya eran capaces. Y en eso estaban trabajando en 2014 cuando Google — buscando lo de siempre, publicidad — les proporcionó unos recursos con los que no podían ni soñar, incluidas doce unidades de procesamiento tensorial, lo último de lo último. Como resultado, ese mismo año terminaron la red neural Alpha, capaz de enseñarse a sí misma. Empezaron por aplicarla al juego chino Go. A Alpha-Go le enseñaron única y exclusivamente el reglamento. A partir de ahí, Alpha-Go se limitó a jugar partidas contra ella misma, explorando todos los caminos posibles, encontrando patrones, elaborando planes. En octubre de 2015 le ganó a los dos mejores del mundo, al chino Fan Hui por 5 a 0, y al coreano Lee Sedol por 4 a 1. 

“Es como tirarte de cabeza contra un muro”, dijo Fan Hui. 

“Es como jugar contra un humano muy raro y muy listo”, opinó Lee Sedol.


Dos años después, el campeón mundial, prácticamente imbatible, era el jovencísimo Ke Jie, de nacionalidad china. 
"Creo que yo le habría ganado a esa máquina", dijo, cuando vio las partidas de Lee Sedol. 
Se organizó un encuentro a tres partidas y "esa máquina" derrotó a Ke Jie 3 a 0, si bien es cierto que las tres partidas estuvieron reñidísimas al límite.


 “Desesperante. Es un dios que puede ver todo el universo, yo sólo veo el trocito que está a mi alrededor", opinó Ke Jie. (Minuto 1:10 del vídeo)


Y le llegó el turno al ajedrez. 
Y nació Alpha-Chess, aunque visto y no visto le cambiaron el nombre a Alpha-Zero. Le enseñaron el reglamento y lo dejaron solo... En una mañana jugó contra sí mismo cuarenta y siete millones de partidas, observó cómo acababan y elaboró un algoritmo evaluador propio, a su gusto, aplicando sus criterios “personales”, sin que nadie se lo programase. 

¿Y cómo juega Alpha-Zero? Incomprensiblemente bien. 
Algunas de sus jugadas están más allá del entendimiento humano, no tienen explicación aparente; la explicación surge diez jugadas después, o quince o veinte. 
En 2017 el campeón mundial era Stockfish en su versión 8. Enfrentados a 100 partidas, Alpha-Zero ganó 28 y las otras 72 acabaron en empate. Marcador: 64 a 36. 

En conclusión, existe una red neural hecha de silicio que o piensa o está muy cerca de hacerlo. 
Es más, en lo que al ajedrez se refiere, piensa mejor que nosotros. 
Peter Nielsen, entrenador del campeón de los humanos, Magnus Carlsen, encontró las palabras exactas para resumir la situación: "Siempre me pregunté qué sentiría si una especie superior aterrizara en la Tierra y nos mostrara cómo juegan ellos al ajedrez. He dejado de preguntármelo: ahora ya lo sé."


(IV) FUTURO

“Si alguien no se queda perplejo ante la mecánica cuántica, es que no la ha entendido”, dijo uno de sus padres, el danés Niels Bohr.

La mecánica cuántica nos obliga a elegir entre dos opciones aterradoras. 
O las matemáticas han dejado de funcionar o las partículas subatómica son capaces de ejecutar proezas asombrosas: un fotón puede estar en dos sitios a la vez, un electrón puede estar girando simultáneamente hacia la izquierda y hacia la derecha, las partículas entrelazadas permanecen a distancia nula por mucho que dejemos una en Londres y nos llevemos la otra a Sidney... 
Y, por supuesto, el gato de Schrödinger está vivo y está muerto mientras nadie abra la caja y colapse la onda al mirar dentro.

Instituto de Física Cuántica.
"Usted se encuentra aquí o aquí".


A veces se oye hablar de los ordenadores cuánticos. 
En un ordenador normal o incluso en una red neural, los pasos lógicos deben ejecutarse secuencialmente. Muy rápido, sí, pero unos primero y otros después. Un ordenador cuántico ejecutaría simultáneamente todos los pasos de un algoritmo. 
Si jugase al ajedrez, vería en un tiempo infinitesimal — es casi el Aleph de Borges — todas las jugadas posibles, todas a la vez, y las vería con el resultado de la evaluación escrito al lado. Las evaluaciones le habrían costado un tiempo cero. Sería imbatible. Sería consciente de todos los posibles futuros y de la probabilidad asociada a cada uno. Lo sabría todo. 

Los especialistas en termodinámica oyen lo anterior y sonríen... Un ordenador que hiciera tal cosa desprendería un calor infinito, de donde se deduce que no puede existir. 
De hecho — los ingenieros de Google no suelen mencionar esta parte del asunto — lo más difícil de las redes neurales no es programarlas; lo más difícil es refrigerarlas. 
Nosotros no sabemos ganarle a Alpha-Zero, pero sabemos mantenernos a 37 grados. No somos conscientes del mérito que eso tiene.


Por mucho que la Física sea la madre de toda ciencia, debo abandonarla en este punto. Si no lo hiciese, me acusarían de haberme salido de los límites de la inteligencia artificial.





No hay comentarios:

Publicar un comentario

Contador

Flag Counter