El día que Deep Blue pasó el test de Turing (parte I)

octubre 10, 2019

Por  Rodrigo Díaz López

Si algún día la Inteligencia Artificial se desarrolla lo suficiente y las máquinas terminan escribiendo “su historia”, está claro que la fecha del 4 de mayo de 1997 estará marcada con letras de oro en los anales de la Inteligencia Artificial. 

 

Ese día el ordenador de IBM Deep Blue pasó limpiamente el test de Turing, derrotando al ajedrez a Gary Kaspárov, a la sazón el vigente campeón de mundo, y haciéndole creer que IBM le estaba haciendo trampas y que, en lugar de contra un sofisticado programa informático, estaba compitiendo contra otro humano. 

 

Ajedrez para ordenadores 

Pero, vayamos por partes: ¿cómo es posible programar un ordenador para jugar tan prodigiosamente al ajedrez como para engañar, y de paso derrotar, al campeón del mundo? No es una respuesta sencilla. 

El juego del ajedrez es una buena medida de la efectividad de la inteligencia artificial. Es tan complejo que, en realidad, es varios juegos en uno. Habitualmente, una partida de ajedrez se divide en tres fases: 

 

  • La apertura, que comprende las primeras jugadas. 
  • El medio juego, cuando los dos bandos aún tienen muchas piezas. 
  • El final, donde quedan pocas piezas. 

 

Cada fase de la partida requiere de habilidades distintas por parte del jugador: 

 

  • Dado que la posición inicial de cada partida es siempre la misma, los distintos tipos de apertura deben ser estudiados por los jugadores profesionales hasta que sean jugados de forma “maquinal”. Existen enciclopedias de aperturas que muestran los movimientos “mejores” para cada uno de los bandos. Además, en algunas aperturas hay escondidas celadas, trampas en las que se ofrece una pieza al adversario para posteriormente obtener una compensación mayor o incluso la victoria, que deben ser conocidas. 
  • En el medio juego, se toman decisiones estratégicas que tratan de obtener una ventaja posicional o material sobre el adversario, de cara al final de la partida. No basta con mover las piezas sin cometer errores, hay que establecer un plan de juego. 
  • Por último, al final, se debe cambiar el modo de jugar y se tienen que tener en cuenta cuestiones tácticas como el zugzwang, la oposición, los mates básicos o el ahogado que, de no ser tenidas en cuenta, te pueden hacer perder o entablar una partida ganada. 

 

Es relativamente fácil programar a un ordenador para representar el tablero de juego, seguir las leyes del ajedrez (sí, el ajedrez tiene leyes, no reglas), así como para acceder a una base de datos de aperturas que muestre los movimientos óptimos de modo que el juego en la apertura sea perfecto. Asimismo, es posible programar las complejas reglas para jugar de forma correcta los finales, e incluso acceder a una base de datos de finales que muestre el valor teórico a partir de una determinada posición (victoria, derrota o tablas). Pero enseñar a jugar a un programa el medio juego es bastante más complicado. 

 

En primer lugar, hay que desarrollar un algoritmo denominado función de evaluación, que evalúe una determinada posición y determine si es ventajosa para las piezas blancas o para las negras y, sobre todo, en qué medida es ventajosa. Este algoritmo tiene que tener en cuenta factores como la ventaja material, la ventaja posicional, la estructura de peones, la protección del rey, etc. 

 

En segundo lugar, hay que utilizar un algoritmo recursivo de decisión, por ejemplo, el minimax, que permita elegir el mejor movimiento para ti mismo suponiendo que tu adversario escogerá el peor para ti. Sencillo, ¿no? El problema es que en una posición típica del medio juego es posible hacer 30 movimientos distintos. Si tenemos en cuenta las posibles respuestas del adversario, nuestros posibles movimientos siguientes, etc. al cabo de solo 4 jugadas tendríamos unas 650.000.000.000 posiciones distintas que tendríamos que evaluar.

 

Suponiendo que evaluásemos cien millones de posiciones por segundo (esa era, más o menos, la potencia de cálculo que tenía Deep Blue) se tardarían 2 horas en calcular un único movimiento. En una partida normal de ajedrez de competición un jugador dispone de 2 horas… para hacer los primeros 40 movimientos. Por otro lado, una profundidad de análisis de solo 4 movimientos es muy pobre. Un jugador profesional puede llegar a calcular hasta 15 movimientos hacia delante. 

 

Un jugador profesional de ajedrez utiliza su experiencia e intuición para reconocer patrones y “podar” ese inmenso árbol de decisiones tomando en consideración solo las jugadas más prometedoras. Así que los desarrolladores de Deep Blue tuvieron que utilizar técnicas de inteligencia artificial para diseñar un algoritmo de poda que no perdiese tiempo analizando posiciones sin interés, teniendo cuidado a su vez de no cortar las ramas más interesantes, hasta alcanzar una profundidad de 6 a 8 movimientos y, en determinadas circunstancias muy especiales, llegando incluso hasta 20 movimientos

 

Pero, como vimos en la descripción del medio juego, para jugar al ajedrez no basta con mover las piezas sin cometer errores, hay que ser creativo. Tener un plan de juego es esencial para jugar bien al ajedrez. Y, en este aspecto, es donde históricamente han sido más débiles los programas que juegan al ajedrez. Esta debilidad ha sido aprovechada por los jugadores profesionales que juegan contra ellos que, además, son capaces de reconocerla como una firma característica de su estilo de juego. 

 

La jugada “humana” 

Y así llegamos al 4 de mayo de 1997, fecha en la que se celebró la segunda partida del segundo encuentro entre Deep Blue y Gary Kaspárov

 

Kaspárov, que estaba jugando con negras, llegó a su jugada 36 en una posición inferior y sometido a un intenso ataque por parte de Deep Blue, que jugaba con blancas. Kaspárov tenía mucha experiencia jugando contra máquinas, así que intentó utilizar una técnica anti-máquina que ya le había funcionado anteriormente. Ofreció a Deep Blue el sacrificio de un peón, con el plan de conducir la partida a una situación que le permitiera contraatacar. 

 

En su jugada 37, Deep Blue tenía básicamente dos opciones para jugar:

 

  1.  Jugar Db6. Aceptar el sacrificio, aumentar su ventaja material, seguir atacando y enzarzarse en un violento enfrentamiento con Kaspárov
  2.  Jugar Ae4. No aceptar el sacrificio, renunciar a esa ventaja material y realizar una jugada de bloqueo (defensiva) que impediría el posible contraataque. 

 

Cualquier programa de ajedrez de la época habría optado por la opción a) porque el algoritmo minimax le “obligaría” a aceptar la ventaja material ofrecida. 

 

Sin embargo, la mayoría de los grandes maestros humanos, que fueran conscientes de que se estaban enfrentando al campeón del mundo, serían prudentes y elegirían la opción b). ¡Virgencita, virgencita, que me quede como estoy! 

 

 

Pero Deep Blue eligió la opción b) y jugó 37.Ae4!! 

 

En ese momento, Gary Kaspárov se llevó las manos a la cabeza y entró en un estado de shock emocional. Hasta ese momento, ninguna máquina había tomado una decisión así. Jamás. Deep Blue no estaba jugando como una máquina, estaba jugando como uno de los mejores ajedrecistas humanos del mundo

 

Kaspárov sufrió tal crisis nerviosa que abandonó la partida unas jugadas más tarde, aunque podría haber seguido jugando y forzar unas tablas. Se marchó sin hablar con la prensa, convencido de que IBM le estaba haciendo trampas. Era “imposible” que una máquina hubiera hecho esa jugada. Era “evidente” que un humano del equipo técnico de IBM tomaba decisiones por el programa en momentos clave. Y el principal sospechoso de tomar esas decisiones era el gran maestro español Miguel Illescas que, por otro lado, era programador informático. 

 

(continuará…) 

 

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, dentro de nuestra Web de acuerdo a tus hábitos de navegación. Si continúas navegando, consideramos que aceptas expresamente su utilización. Puedes obtener más información de cómo gestionar y configurar las cookies en nuestra Política de Cookies.