Una de las preguntas más populares que se hacen en este sitio se refiere a la posibilidad de una IA de ajedrez puramente autodidacta.
Hoy, ChessBase se distrae de su cobertura del torneo FIDE Candidates para informar que una nueva IA está, por primera vez, superando a un maestro líder del juego bastante diferente, que se había resistido a las IA de estilo ajedrez durante muchos años. Una lectura inicial del informe sugiere que la nueva IA de go es diferente a las IA de ajedrez, pero es más una IA de juego general (GGP). Sin embargo, el artículo de ChessBase no usa el término GGP, pero parece decir que la inteligencia artificial puede ganar en videojuegos simples.
¿Hay alguna razón por la que una IA tan ganadora no pueda, con pequeños ajustes, también ganar en el ajedrez? Si es así, ¿una IA de este tipo promete lograr el autoformación pura que las varias respuestas excelentes a la pregunta anterior han discutido anteriormente, que en ese momento aún no era posible? ¿Por qué o por qué no?
Sospecho que todavía no hay disponible una respuesta completa e informada a mi pregunta, por lo que se agradecería incluso una respuesta parcial basada en la experiencia relacionada.
Para referencia adicional, vea también esta pregunta y respuestas relacionadas.
ACTUALIZAR
Cuando la pregunta anterior se publicó por primera vez hace cinco días y cuando se dieron algunas de las excelentes respuestas a continuación, acababan de aparecer las primeras noticias sobre la victoria de la IA. Desde entonces, ha surgido información y comentarios adicionales.
Particularmente interesante desde entonces ha sido una discusión de mesa redonda de cinco lados bastante legible en la que Jonathan Schaeffer comenta:
Aprender de los juegos humanos ayuda a acelerar el aprendizaje del programa. AlphaGo podría aprender a convertirse en un jugador fuerte por sí solo, sin usar los juegos humanos. El proceso de aprendizaje llevaría más tiempo.
Según el anfitrión de la mesa redonda, Schaeffer es "[c] profesor de ciencias informáticas en la Universidad de Alberta y el hombre que resolvió las damas"; entonces, presumiblemente, él podría estar calificado para comentar.
Para obtener más información, aquí está el registro de otra discusión abierta, muchos de cuyos participantes parecen estar mejor informados que de costumbre. La discusión tuvo lugar durante el partido.
Actualización adicional, un año y medio después: comentarista @MarkS. escribe:
Esto es solo un comentario porque se trata de Go, no de Ajedrez, pero AlphaGo Zero logró un "auto-entrenamiento puro" solo por saber quién ganó (y no el puntaje final) y es más fuerte y mucho más eficiente que la IA que venció a Lee Sedol . Para obtener más información, consulte deepmind.com/blog/alphago-zero-learning-scratch
Respuestas:
¡Bien bien bien! DeepMind ha publicado un artículo en el que dicen que han programado y entrenado una computadora de red neuronal para vencer a Stockfish.
Con 1 minuto de tiempo de reflexión por movimiento, su computadora AlphaZero venció a Stockfish por +25, = 25, -0 con blanco y + 3, = 47,0- como negro.
Ellos "entrenaron" 3 computadoras separadas para jugar ajedrez, shogi y Go y derrotaron a sus rivales de silicio de manera convincente.
Así es como el documento describe la capacitación y la evaluación:
Su computadora usó una nueva forma de chip llamada "TPU" ( Unidad de procesamiento de tensor ) desarrollada por Google para tareas de aprendizaje automático.
También afirman que su algoritmo de búsqueda de árboles de Monte Carlo es mejor y más "humano" que los algoritmos de búsqueda alfa-beta tradicionales:
Estos son algunos de los juegos:
Juego
Blanco: AlphaZero Negro: Stockfish
fuente
Ok, tengo que admitir que estaba equivocado. Aunque afirmaría que se debió al conocimiento de la opinión de los expertos, no a la obtusidad general: Para citar el artículo : "Sin embargo, los programas de ajedrez que usan MCTS tradicionales fueron mucho más débiles que los programas de búsqueda alfa-beta (4, 24); mientras que alfa -beta programas basados en redes neuronales han sido incapaces de competir con funciones de evaluación más rápidas y artesanales ".
Aparentemente, el ajedrez es lo suficientemente profundo desde el punto de vista estratégico, que puedes hacer una estrategia para alguien que pueda calcularte. Para mí eso es una gran sorpresa porque el desarrollo en los motores de ajedrez había ido en la dirección opuesta. (Aparentemente, todavía hay una pequeña advertencia sobre si AlphaZero es realmente más fuerte que Stockfish: Stockfish jugó con solo 1 gb para las tablas hash y 64 núcleos pueden no ser un rival para cuatro TPU)
También es algo muy, muy emocionante, porque AlphaZero probablemente tiene puntos fuertes muy diferentes de los motores tradicionales.
También significa que actualizo mucho mi creencia de la importancia de AlphaGo como un avance tecnológico. Básicamente rompiendo shogi, Go y ajedrez con una sola configuración es completamente sorprendente, sin mencionar docenas de otros juegos que AlphaZero podría jugar a un nivel sobrehumano.
Hay una buena explicación de por qué MCTS es en realidad una idea decente incluso para el ajedrez en comparación con la búsqueda alfa-beta (del documento): "AlphaZero evalúa las posiciones usando aproximación de función no lineal basada en una red neuronal profunda, en lugar de la lineal Aproximación de funciones utilizada en programas de ajedrez típicos. Esto proporciona una representación mucho más poderosa, pero también puede introducir errores de aproximación espurios. El MCTS promedia sobre estos errores de aproximación, que por lo tanto tienden a cancelarse al evaluar un subárbol grande. En contraste, la búsqueda alfa-beta calcula un mini-max explícito, que propaga los mayores errores de aproximación a la raíz del subárbol ". (énfasis por mí)
Aquí está mi vieja respuesta, que todavía contiene algunos puntos válidos, a pesar de que la conclusión es reemplazada por la realidad.
En primer lugar, Alphago no es un sistema de juego general. Es un programa diseñado exclusivamente para jugar y nada más. Sin embargo, está construido a partir de ciertos bloques de construcción que tienen una aplicabilidad mucho más amplia, como las redes neuronales convolucionales , que se han utilizado en el reconocimiento de imágenes y que tienen una aplicación inmediata en el diagnóstico médico, y el aprendizaje de refuerzo que se utilizó para dominar los juegos de Atari mencionados en el artículo.
Además, los motores actuales "aprenden" jugando a sí mismos : "Durante la noche, las seis computadoras de Lefler juegan más de 14,000 juegos cada una durante un período de ocho horas." Seis máquinas por 14,000 juegos son muchos juegos ", dice. Y con cada juego que se juega, la base de datos se vuelve más profunda y más rica. Incluso hay un interés deportivo en ver a las computadoras jugar una contra la otra. El resultado de las bulliciosas máquinas de Lefler es la habilidad cada vez mayor de Komodo ".
Para llegar al grueso de su pregunta:
Hay una diferencia importante entre ajedrez e ir, al menos desde la perspectiva de un programador. El ajedrez es más un juego táctico, mientras que ir es más un juego estratégico. Esto significa que en el cálculo del ajedrez la profundidad triunfa sobre la evaluación posicional. Esa es básicamente la idea clave que distingue los motores "viejos" como Fritz, Shredder, Junior y la generación más nueva como Fruit, Rybka, Houdini, Stockfish, Komodo. Debido a que al final de cada línea tiene que evaluar la posición y desea calcular muchas líneas y la calidad de la evaluación no es tan importante como la profundidad de búsqueda, los motores de ajedrez tienen funciones de evaluación ajustadas y rápidas.
En cambio, la complejidad táctica es demasiado grande incluso para las computadoras. Consecuentemente, evaluar posiciones y movimientos con precisión es clave. Lo que Alphago aporta al juego es este poder de evaluación, que se basa en redes neuronales convolucionales .
Para finalmente llegar a mi punto: mientras que las funciones de evaluación de ajedrez son esbeltas y rápidas, las redes neuronales tienen millones, a veces miles de millones de parámetros. Debido a que "aprender" en este contexto significa ajustar los parámetros, hay mucho más progreso posible para los programas de autoaprendizaje.
Entonces, sí, podría usar una configuración como Alphago para crear un motor de ajedrez, pero no sería particularmente bueno. Ejecutar la función de evaluación llevaría tanto tiempo, que tendría que utilizar un gran grupo de gpus para llegar a las profundidades de búsqueda necesarias (que es lo que hace Alphago). Podría crear una función de evaluación muy buena , pero la compensación de velocidad no vale la pena.
fuente
Hay un proyecto llamado spawkfish que intenta hacer exactamente esto. Es un motor basado en redes neuronales cuyo propósito "es explorar cómo los recientes avances en Computer Go se pueden aplicar al mundo del ajedrez informático".
Es un proyecto joven y el motor todavía es bastante débil. Jugarlo es interesante, porque su juego posicional es mejor que sus tácticas.
fuente
¡La respuesta corta es no!"
El ajedrez y el go son radicalmente diferentes en su relativa simplicidad y complejidad relativa que se deriva de su geometría y de cómo ganas. Estos se combinan para hacer un programa que es bueno para uno inútil en el otro.
En el ajedrez ganas haciendo checkmating al oponente, los puntos no cuentan. Por supuesto, un oponente sensato a menudo renunciará antes de entregar jaque mate, pero el principio es el mismo. En ir, ganas al tener más puntos al final del juego. Si tengo un rey y una reina y tú tienes un rey, una torre y un peón pero has construido una fortaleza, no importa que tenga 9 puntos para la reina y que solo tengas 6 puntos para tu torre y peón. El juego es un empate.
Esto hace una diferencia fundamental en la complejidad entre el ajedrez y el go. En ir, simplemente puede mantener la puntuación y sabrá quién está ganando. En ajedrez, la única forma de saber quién está ganando es por puro cálculo. En este sentido, el ajedrez es mucho más complejo que ir.
Al mismo tiempo, debido a la geometría de los dos juegos, hay órdenes de magnitud más posibilidades en el juego que en el ajedrez. En este sentido, ir es mucho más complejo que el ajedrez.
Un programa de ajedrez funciona mediante el cálculo de la fuerza bruta de todos los movimientos posibles hasta una cierta profundidad que determina su fuerza. Un programa go no puede funcionar así y reproducir algo más avanzado que el nivel principiante.
El objetivo básico de ir es controlar más territorio que tu oponente. Al final de un juego, no importa si la diferencia es 1 piedra o 100 piedras, ambas son victorias. Cada vez que colocas una piedra haces dos cosas. Aumenta su territorio, ya sea potencial o real, y disminuye a su oponente.
A veces, cuando se trata de un aumento o disminución real en el territorio, es fácil calcular el valor del movimiento, pero cuando es potencial es muy difícil de evaluar. Como jugador débil, entiendo el "real" mucho mejor que el "potencial" y un jugador más fuerte me vencerá construyendo un territorio potencial mucho mayor en el centro mientras construyo un territorio real más pequeño en los bordes y en las esquinas. El jugador más fuerte habrá desarrollado la capacidad de juzgar a través de la intuición y la sensación de jugar muchos juegos y reconocer cómo construir un territorio "potencial".
Anteriormente dije que cada vez que coloco una piedra, aumenta mi territorio (real o potencial) y disminuye a mi oponente (en realidad, si es un movimiento estúpido, ¡hará lo contrario!). En cualquier posición no todos los movimientos son iguales. Una piedra colocada en una posición puede valer mucho más o mucho menos que una piedra colocada en otra.
Por lo general, en un juego habrá pequeñas "peleas" donde los jugadores colocan sus piedras cerca de otros, marcando su territorio y limitando a su oponente. Mientras tanto, hay posibilidades de comenzar a replantear territorio en otra parte del tablero o cambiar a una pelea en otro lugar donde ambos jugadores ya tienen piedras.
Lo que es muy importante en estas situaciones es saber cuándo detener una pelea, porque las ganancias potenciales han disminuido, y cambiar a otra pelea o tal vez atacar en territorio virgen. A veces esto depende de un cálculo difícil, pero a menudo es mucho más nebuloso y no está sujeto a cálculo. Como jugador débil, aquí es donde un pagador fuerte me aplastará cada vez.
Lo que hace la computadora en estas situaciones es usar métodos probabilísticos para generar un puntaje esperado para un movimiento en particular. A veces, el valor real será un poco menos, a veces un poco más, pero a largo plazo se igualará más o menos. Seguirá eligiendo el movimiento con el valor más alto esperado con la expectativa de que a largo plazo de un juego se cancelarán los pequeños errores y su estrategia ganará.
Esta no es una estrategia que les suene familiar a los jugadores de ajedrez y no funcionará en el ajedrez. Es algo que le suena familiar a cualquiera que siga lo que sucede en los mercados de acciones. Suena muy similar a algo llamado "comercio de alta frecuencia", donde las computadoras harán miles de pequeñas apuestas o solo propusieron apuestas cada segundo para "ganar cinco centavos" en el mercado y tal vez incluso moverlo muy marginalmente a su favor durante períodos de milisegundos.
Los mercados financieros ya están dominados por este tipo de comercio algorítmico, lo que sugiere que este tipo de programa ya ha triunfado en un área mucho más lucrativa que un juego de mesa.
fuente
(Cualquiera que quiera una discusión técnica profunda para AlphaGo puede ver mi publicación )
Respuesta corta : no
Respuesta larga :
Primero, debemos entender por qué Google no implementó alfa-beta en AlphaGo. Stockfish y Komodo (y todos los motores de ajedrez) tienen alfa-beta, ¿por qué AlphaGo no?
Motivo : no existe una forma fácil y económica de evaluar con precisión una posición Go de forma estática.
En Ajedrez, siempre podemos contar los materiales, una forma muy efectiva de evaluar una posición estáticamente. Aunque no es perfecto, es muy rápido y un muy buen proxy para el ajedrez.
Buscar en el espacio de estado con Monte-Carlo es un método inferior al alfa-beta. Google habría implementado alfa-beta si pudieran, pero no pudieron. Por lo tanto, se vieron obligados a usar algo mucho más lento.
El motor de ajedrez no jugaría mejor con Montecarlo.
fuente
No estoy de acuerdo con las otras respuestas. Soy un informático que trabaja profesionalmente en el área de la inteligencia artificial y también soy candidato a maestro en ajedrez y 3 dan en igo.
Creo que no está claro en este momento si los métodos de Deep Mind podrían aplicarse al ajedrez, pero creo que es posible.
Actualmente, los principales programas de juego de ajedrez dependen cada vez más de la heurística e intentar usar la arquitectura AlphaGo para el ajedrez de alguna manera estaría en la misma línea de pensamiento.
Una característica arquitectónica clave de AlphaGo que tendría que ser alterada es su método de identificación de cuadrados clave (o mapas de calor), que es particular de los juegos tipo igo y no es directamente aplicable al ajedrez. Algún análogo de este método tendría que ser desarrollado para hacer que la arquitectura AlphaGo sea relevante para el ajedrez. Por ejemplo, podríamos tener el concepto de "piezas clave" en lugar de cuadrados clave.
Creo que el argumento de que la arquitectura AlphaGo no es relevante para el ajedrez porque el ajedrez es más táctico no es una muy buena afirmación porque, en última instancia, ambos tienen árboles de búsqueda que son lo suficientemente similares en forma que AlphaGo definitivamente podría adaptarse al ajedrez.
fuente
¡La respuesta es sí! Google acaba de demostrar esto ayer, cuando AlphaZero venció al mejor programa de ajedrez utilizando solo el conocimiento sobre las reglas y un autoformación pura sin el conocimiento del ajedrez humano utilizado. La respuesta aceptada es incorrecta. El enlace al artículo está aquí: enlace
fuente
Para ver AlphaZero en acción, siga http://lczero.org/ o juegue en http://play.lczero.org/
fuente