stringtranslate.com

Computadora Go

El Go informático es el campo de la inteligencia artificial (IA) dedicado a crear un programa informático que juegue al tradicional juego de mesa Go . El campo está claramente dividido en dos eras. Antes de 2015, los programas de la época eran débiles. Los mejores esfuerzos de los años 1980 y 1990 produjeron solo IA que podían ser derrotadas por principiantes, y las IA de principios de la década de 2000 eran de nivel intermedio en el mejor de los casos. Los profesionales podían derrotar a estos programas incluso con handicaps de 10+ piedras a favor de la IA. Muchos de los algoritmos como alpha-beta minimax que funcionaron bien como IA para damas y ajedrez se desmoronaron en el tablero de 19x19 de Go, ya que había demasiadas posibilidades de ramificación para considerar. La creación de un programa de calidad profesional humana con las técnicas y el hardware de la época estaba fuera de alcance. Algunos investigadores de IA especularon que el problema era irresoluble sin la creación de una IA similar a la humana .

La aplicación de la búsqueda de árbol de Monte Carlo a los algoritmos de Go proporcionó una mejora notable a fines de la década de 2000 , con programas finalmente capaces de alcanzar un nivel de dan bajo : el de un aficionado avanzado. Los aficionados y profesionales de alto dan aún podían explotar las debilidades de estos programas y ganar de manera consistente, pero el rendimiento de la computadora había avanzado más allá del nivel intermedio ( kyu de un solo dígito ). El tentador objetivo incumplido de derrotar a los mejores jugadores humanos sin un hándicap, que durante mucho tiempo se creyó inalcanzable, provocó una explosión de renovado interés. La idea clave resultó ser una aplicación del aprendizaje automático y el aprendizaje profundo . DeepMind , una adquisición de Google dedicada a la investigación de IA, produjo AlphaGo en 2015 y lo anunció al mundo en 2016. AlphaGo derrotó a Lee Sedol , un profesional de 9 dan, en un partido sin hándicap en 2016, luego derrotó a Ke Jie en 2017 , quien en ese momento mantuvo continuamente el ranking mundial No. 1 durante dos años. De la misma forma que las damas habían caído ante las máquinas en 1995 y el ajedrez en 1997 , los programas informáticos finalmente conquistaron a los mayores campeones de Go de la humanidad en 2016-2017. DeepMind no lanzó AlphaGo para uso público, pero desde entonces se han creado varios programas basados ​​en los artículos de revistas que DeepMind publicó que describen AlphaGo y sus variantes.

Visión general e historia

Los jugadores profesionales de Go consideran que el juego requiere intuición, pensamiento creativo y estratégico. [1] [2] Durante mucho tiempo se ha considerado un desafío difícil en el campo de la inteligencia artificial (IA) y es considerablemente más difícil de resolver que el ajedrez . [3] Muchos en el campo consideraron que el Go requiere más elementos que imitan el pensamiento humano que el ajedrez. [4] El matemático IJ Good escribió en 1965: [5]

¿Go en un ordenador? – Para programar un ordenador para que juegue una partida razonable de Go, en lugar de una partida meramente legal, es necesario formalizar los principios de una buena estrategia o diseñar un programa de aprendizaje. Los principios son más cualitativos y misteriosos que en el ajedrez, y dependen más del criterio. Por eso creo que será aún más difícil programar un ordenador para que juegue una partida razonable de Go que de ajedrez.

Antes de 2015, los mejores programas de Go solo conseguían alcanzar el nivel de dan amateur . [6] [7] En el pequeño tablero de 9x9, la computadora se desempeñaba mejor y algunos programas lograron ganar una fracción de sus partidas de 9x9 contra jugadores profesionales. Antes de AlphaGo, algunos investigadores habían afirmado que las computadoras nunca derrotarían a los mejores humanos en Go. [8]

Primeras décadas

El primer programa Go fue escrito por Albert Lindsey Zobrist en 1968 como parte de su tesis sobre reconocimiento de patrones . [9] Introdujo una función de influencia para estimar el territorio y el hash Zobrist para detectar ko .

En abril de 1981, Jonathan K Millen publicó un artículo en Byte en el que se hablaba de Wally, un programa de Go con una placa de 15x15 que encajaba en la memoria RAM de 1K del microordenador KIM-1 . [10] Bruce F. Webster publicó un artículo en la revista en noviembre de 1984 en el que se hablaba de un programa de Go que había escrito para Apple Macintosh , incluida la fuente de MacFORTH . [11] Los programas para Go eran débiles; un artículo de 1983 estimó que, en el mejor de los casos, eran equivalentes a 20 kyu , la calificación de un jugador novato ingenuo, y a menudo se limitaban a placas más pequeñas. [12] Las IA que jugaban en el servidor de Go de Internet (IGS) en placas de tamaño 19x19 tenían una fuerza de alrededor de 20-15 kyu en 2003, después de mejoras sustanciales en el hardware. [13]

En 1998, jugadores muy fuertes fueron capaces de vencer a programas informáticos con hándicaps de 25 a 30 piedras, un hándicap enorme que pocos jugadores humanos podrían aceptar. Hubo un caso en el Campeonato Mundial de Go por Computadora de 1994 en el que el programa ganador, Go Intellect, perdió las tres partidas contra los jugadores jóvenes con un hándicap de 15 piedras. [14] En general, los jugadores que comprendían y explotaban las debilidades de un programa podían ganar incluso con hándicaps altos. [15]

2007–2014: Búsqueda de árboles en Montecarlo

En 2006 (con un artículo publicado en 2007), Rémi Coulom produjo un nuevo algoritmo al que llamó Monte Carlo tree search . [16] En él, se crea un árbol de juego como siempre de futuros potenciales que se ramifican con cada movimiento. Sin embargo, las computadoras "puntúan" una hoja terminal del árbol mediante repetidas jugadas aleatorias (similar a las estrategias de Monte Carlo para otros problemas). La ventaja es que tales jugadas aleatorias se pueden hacer muy rápidamente. La objeción intuitiva - que las jugadas aleatorias no corresponden al valor real de una posición - resultó no ser tan fatal para el procedimiento como se esperaba; el lado de "búsqueda de árbol" del algoritmo corrigió lo suficientemente bien como para encontrar árboles de juego futuros razonables para explorar. Los programas basados ​​en este método, como MoGo y Fuego, obtuvieron un mejor rendimiento que las IA clásicas de antes. Los mejores programas podían hacerlo especialmente bien en el pequeño tablero de 9x9, que tenía menos posibilidades para explorar. En 2009, aparecieron los primeros programas de este tipo que podían alcanzar y mantener rangos de nivel dan bajo en el servidor KGS Go en el tablero 19x19.

En 2010, en el Congreso Europeo de Go de 2010 en Finlandia, MogoTW jugó al Go 19x19 contra Catalin Taranu (5p). MogoTW recibió un hándicap de siete piedras y ganó. [17]

En 2011, Zen alcanzó el 5º dan en el servidor KGS, jugando partidas de 15 segundos por movimiento. La cuenta que alcanzó ese rango utiliza una versión en clúster de Zen que se ejecuta en una máquina de 26 núcleos. [18]

En 2012, Zen venció a Takemiya Masaki (9p) por 11 puntos con un hándicap de cinco piedras, seguido por una victoria de 20 puntos con un hándicap de cuatro piedras. [19]

En 2013, Crazy Stone venció a Yoshio Ishida (9p) en un juego de 19×19 con un hándicap de cuatro piedras. [20]

El Codecentric Go Challenge 2014, una partida al mejor de cinco en un formato de 19x19, se disputó entre Crazy Stone y Franz-Jozef Dickhut (6d). Ningún jugador más fuerte había aceptado antes jugar una competición seria contra un programa de go en igualdad de condiciones. Franz-Jozef Dickhut ganó, aunque Crazy Stone ganó la primera partida por 1,5 puntos. [21]

A partir de 2015: la era del aprendizaje profundo

AlphaGo , desarrollado por Google DeepMind , fue un avance significativo en la fortaleza de la computadora en comparación con los programas Go anteriores. Utilizaba técnicas que combinaban el aprendizaje profundo y la búsqueda de árboles de Monte Carlo . [22] En octubre de 2015, derrotó a Fan Hui , el campeón europeo de Go, cinco veces de cinco en condiciones de torneo. [23] En marzo de 2016, AlphaGo venció a Lee Sedol en los primeros tres de cinco partidos. [24] Esta fue la primera vez que un maestro de 9 dan había jugado una partida profesional contra una computadora sin hándicap. [25] Lee ganó el cuarto partido, describiendo su victoria como "invaluable". [26] AlphaGo ganó el partido final dos días después. [27] [28] Con esta victoria, AlphaGo se convirtió en el primer programa en vencer a un profesional humano de 9 dan en un juego sin hándicaps en un tablero de tamaño completo.

En mayo de 2017, AlphaGo venció a Ke Jie , quien en ese momento estaba clasificado como el mejor del mundo, [29] [30] en un partido de tres juegos durante la Cumbre del Futuro del Go . [31]

En octubre de 2017, DeepMind reveló una nueva versión de AlphaGo, entrenada solo a través del juego propio, que había superado todas las versiones anteriores, superando a la versión Ke Jie en 89 de 100 juegos. [32]

Después de que los principios básicos de AlphaGo se publicaran en la revista Nature , otros equipos han sido capaces de producir programas de alto nivel. El trabajo en Go AI desde entonces ha consistido en gran medida en emular las técnicas utilizadas para crear AlphaGo, que demostró ser mucho más fuerte que todo lo demás. En 2017, tanto Zen como el proyecto Fine Art de Tencent eran capaces de derrotar a profesionales de muy alto nivel en algunas ocasiones. También se creó el motor de código abierto Leela Zero .

Desafíos para la estrategia y el rendimiento de las IA clásicas

Durante mucho tiempo, la opinión generalizada fue que el Go por ordenador planteaba un problema fundamentalmente diferente al del ajedrez por ordenador . Muchos consideraban que un programa capaz de jugar al Go era algo que solo se podría conseguir en un futuro lejano, como resultado de avances fundamentales en la tecnología de inteligencia artificial en general. Quienes pensaban que el problema era factible creían que se necesitaría conocimiento del dominio para ser eficaz contra expertos humanos. Por lo tanto, una gran parte del esfuerzo de desarrollo del Go por ordenador durante estos tiempos se centró en formas de representar el conocimiento experto similar al humano y combinarlo con la búsqueda local para responder a preguntas de naturaleza táctica. El resultado de esto fueron programas que manejaban bien muchas situaciones específicas pero que tenían debilidades muy pronunciadas en su manejo general del juego. Además, estos programas clásicos no ganaron casi nada con los aumentos en la potencia de cálculo disponible. El progreso en el campo fue generalmente lento.

Tamaño del tablero

El gran tamaño del tablero (19×19, 361 intersecciones) suele considerarse una de las principales razones por las que es difícil crear un programa sólido. El gran tamaño del tablero impide que un buscador alfa-beta logre una mirada profunda hacia adelante sin extensiones de búsqueda significativas o heurísticas de poda .

En 2002, un programa informático llamado MIGOS (MIni GO Solver) resolvió por completo el juego de Go para el tablero de 5×5. Las negras ganan y se quedan con todo el tablero. [33]

Número de opciones de movimiento

Siguiendo con la comparación con el ajedrez, los movimientos del Go no están tan limitados por las reglas del juego. Para el primer movimiento en ajedrez, el jugador tiene veinte opciones. Los jugadores de Go comienzan con una elección de 55 movimientos legales distintos, teniendo en cuenta la simetría. Este número aumenta rápidamente a medida que se rompe la simetría, y pronto deben evaluarse casi todos los 361 puntos del tablero.

Función de evaluación

Una de las tareas más básicas de una partida es evaluar la posición del tablero: ¿qué bando es el favorito y por cuánto? En ajedrez, muchas posiciones futuras en un árbol son victorias directas para un bando, y los tableros tienen una heurística razonable para la evaluación en el conteo simple de material, así como ciertos factores posicionales como la estructura de peones. Un futuro en el que un bando ha perdido su reina sin ningún beneficio claramente favorece al otro bando. Este tipo de reglas de evaluación posicional no se pueden aplicar de manera eficiente al Go. El valor de una posición de Go depende de un análisis complejo para determinar si el grupo está vivo o no, qué piedras se pueden conectar entre sí y de heurísticas en torno al grado en que una posición fuerte tiene influencia, o el grado en que una posición débil puede ser atacada. Una piedra colocada puede no tener una influencia inmediata, pero después de muchos movimientos podría volverse muy importante en retrospectiva a medida que otras áreas del tablero toman forma.

Una mala evaluación de los estados del tablero hará que la IA trabaje hacia posiciones que cree incorrectamente que la favorecen, pero que en realidad no es así.

Vida y muerte

Una de las principales preocupaciones de un jugador de Go es qué grupos de piedras pueden mantenerse con vida y cuáles pueden ser capturados. Esta clase general de problemas se conoce como vida o muerte . Los sistemas de IA basados ​​en el conocimiento a veces intentaron comprender el estado de vida o muerte de los grupos en el tablero. El enfoque más directo es realizar una búsqueda en árbol sobre los movimientos que potencialmente afectan a las piedras en cuestión y luego registrar el estado de las piedras al final de la línea principal de juego. Sin embargo, dentro de las limitaciones de tiempo y memoria, generalmente no es posible determinar con total precisión qué movimientos podrían afectar la "vida" de un grupo de piedras. Esto implica que se debe aplicar alguna heurística para seleccionar qué movimientos considerar. El efecto neto es que para cualquier programa dado, existe una compensación entre la velocidad de juego y las habilidades de lectura de vida o muerte.

Representación estatal

Un problema que todos los programas de Go deben abordar es cómo representar el estado actual del juego. La forma más directa de representar un tablero es como una matriz unidimensional o bidimensional, donde los elementos de la matriz representan puntos en el tablero y pueden tomar un valor correspondiente a una piedra blanca, una piedra negra o una intersección vacía. Se necesitan datos adicionales para almacenar cuántas piedras se han capturado, de quién es el turno y qué intersecciones son ilegales debido a la regla Ko . En general, los programas de aprendizaje automático se detienen en esta forma más simple y dejan que las IA orgánicas lleguen a su propia comprensión del significado del tablero, probablemente simplemente usando jugadas de Monte Carlo para "puntuar" un tablero como bueno o malo para un jugador. Sin embargo, los programas de IA "clásicos" que intentaron modelar directamente la estrategia de un humano podrían ir más allá, como por ejemplo superponiendo datos como piedras que se cree que están muertas, piedras que están incondicionalmente vivas, piedras en un estado seki de vida mutua, etc. en su representación del estado del juego.

Diseño del sistema

Históricamente, se han utilizado técnicas de inteligencia artificial simbólica para abordar el problema de la IA de Go. Las redes neuronales comenzaron a probarse como un enfoque alternativo en la década de 2000, ya que requerían una inmensa potencia de procesamiento que era costosa o imposible de alcanzar en décadas anteriores. Estos enfoques intentan mitigar los problemas del juego de Go, que tiene un alto factor de ramificación y muchas otras dificultades.

La única elección que debe hacer un programa es dónde colocar su próxima piedra. Sin embargo, esta decisión se dificulta debido a la amplia gama de impactos que una sola piedra puede tener en todo el tablero y las complejas interacciones que pueden tener entre sí los distintos grupos de piedras. Han surgido varias arquitecturas para abordar este problema. Las técnicas y filosofías de diseño más populares incluyen:

Búsqueda de árboles Minimax

Una técnica tradicional de IA para crear software de juegos es utilizar una búsqueda de árbol minimax . Esto implica jugar todos los movimientos hipotéticos en el tablero hasta un cierto punto, luego usar una función de evaluación para estimar el valor de esa posición para el jugador actual. Se selecciona el movimiento que lleva al mejor tablero hipotético y el proceso se repite en cada turno. Si bien las búsquedas de árbol han sido muy efectivas en ajedrez por computadora , han tenido menos éxito en programas de Go por computadora. Esto se debe en parte a que tradicionalmente ha sido difícil crear una función de evaluación efectiva para un tablero de Go, y en parte a que la gran cantidad de movimientos posibles que cada lado puede hacer cada uno conduce a un alto factor de ramificación . Esto hace que esta técnica sea muy costosa computacionalmente. Debido a esto, muchos programas que usan árboles de búsqueda extensivamente solo pueden jugar en el tablero más pequeño de 9 × 9, en lugar de los completos de 19 × 19.

Existen varias técnicas que pueden mejorar en gran medida el rendimiento de los árboles de búsqueda en términos de velocidad y memoria. Las técnicas de poda como la poda alfa-beta , la búsqueda de variación principal y MTD(f) pueden reducir el factor de ramificación efectivo sin pérdida de fuerza. En áreas tácticas como la vida o la muerte, Go es particularmente susceptible a técnicas de almacenamiento en caché como las tablas de transposición . Estas pueden reducir la cantidad de esfuerzo repetido, especialmente cuando se combinan con un enfoque de profundización iterativa . Para almacenar rápidamente un tablero de Go de tamaño completo en una tabla de transposición, generalmente es necesaria una técnica de hash para resumir matemáticamente. El hash Zobrist es muy popular en los programas de Go porque tiene bajas tasas de colisión y se puede actualizar iterativamente en cada movimiento con solo dos XOR , en lugar de calcularse desde cero. Incluso utilizando estas técnicas de mejora del rendimiento, las búsquedas de árboles completos en un tablero de tamaño completo siguen siendo prohibitivamente lentas. Las búsquedas se pueden acelerar utilizando una gran cantidad de técnicas de poda específicas de dominio, como no considerar movimientos en los que el oponente ya es fuerte y extensiones selectivas como considerar siempre movimientos junto a grupos de piedras que están a punto de ser capturadas . Sin embargo, ambas opciones introducen un riesgo significativo de no considerar un movimiento vital que habría cambiado el curso del juego.

Los resultados de las competiciones informáticas muestran que las técnicas de comparación de patrones para elegir un puñado de movimientos apropiados combinadas con búsquedas tácticas localizadas rápidas (explicadas anteriormente) eran suficientes en el pasado para producir un programa competitivo. Por ejemplo, GNU Go fue competitivo hasta 2008.

Sistemas basados ​​en el conocimiento

Los principiantes humanos suelen aprender de los registros de partidas antiguas jugadas por jugadores expertos. El trabajo de IA en la década de 1990 a menudo implicaba intentar "enseñar" a la IA las heurísticas de conocimiento de Go al estilo humano. En 1996, Tim Klinger y David Mechner reconocieron la fortaleza de nivel principiante de las mejores IA y argumentaron que "creemos que con mejores herramientas para representar y mantener el conocimiento de Go, será posible desarrollar programas de Go más fuertes". [34] Propusieron dos formas: reconocer configuraciones comunes de piedras y sus posiciones y concentrarse en batallas locales. En 2001, un artículo concluyó que "los programas de Go aún carecen tanto de calidad como de cantidad de conocimiento", y que solucionar esto mejoraría el rendimiento de la IA de Go. [35]

En teoría, el uso de conocimientos de expertos mejoraría el software de Go. Tanto aficionados como profesionales de alto nivel han formulado cientos de pautas y reglas generales para un juego fuerte. La tarea del programador es tomar estas heurísticas , formalizarlas en código informático y utilizar algoritmos de coincidencia y reconocimiento de patrones para reconocer cuándo se aplican estas reglas. También es importante poder "puntuar" estas heurísticas de modo que, cuando ofrezcan consejos contradictorios, el sistema tenga formas de determinar qué heurística es más importante y aplicable a la situación. La mayoría de los resultados relativamente exitosos provienen de las habilidades individuales de los programadores en Go y de sus conjeturas personales sobre Go, pero no de afirmaciones matemáticas formales; están tratando de hacer que la computadora imite la forma en que juegan al Go. Los programas competitivos alrededor de 2001 podían contener entre 50 y 100 módulos que trataban diferentes aspectos y estrategias del juego, como joseki. [35]

Algunos ejemplos de programas que han dependido en gran medida del conocimiento experto son Handtalk (más tarde conocido como Goemate), The Many Faces of Go, Go Intellect y Go++, cada uno de los cuales en algún momento ha sido considerado el mejor programa de Go del mundo. Sin embargo, estos métodos finalmente tuvieron rendimientos decrecientes y nunca avanzaron realmente más allá de un nivel intermedio en el mejor de los casos en un tablero de tamaño completo. Un problema particular fue la estrategia general del juego. Incluso si un sistema experto reconoce un patrón y sabe cómo jugar una escaramuza local, puede pasar por alto un problema estratégico más profundo que se avecina en el futuro. El resultado es un programa cuya fuerza es menor que la suma de sus partes; si bien los movimientos pueden ser buenos en una base táctica individual, el programa puede ser engañado y maniobrado para ceder demasiado a cambio, y encontrarse en una posición general perdedora. Como lo expresó la encuesta de 2001, "solo un mal movimiento puede arruinar una buena partida. El rendimiento del programa durante una partida completa puede ser mucho menor que el nivel de maestro". [35]

Métodos de Montecarlo

Una alternativa importante al uso de búsquedas y conocimiento codificados a mano es el uso de métodos de Monte Carlo . Esto se hace generando una lista de movimientos potenciales y, para cada movimiento, jugando miles de juegos al azar en el tablero resultante. El movimiento que conduce al mejor conjunto de juegos aleatorios para el jugador actual se elige como el mejor movimiento. No se requiere ningún sistema basado en conocimiento potencialmente falible. Sin embargo, debido a que los movimientos utilizados para la evaluación se generan al azar, es posible que un movimiento que sería excelente excepto por una respuesta específica del oponente se evalúe erróneamente como un buen movimiento. El resultado de esto son programas que son fuertes en un sentido estratégico general, pero son imperfectos tácticamente. [ cita requerida ] Este problema se puede mitigar agregando algo de conocimiento del dominio en la generación de movimientos y un mayor nivel de profundidad de búsqueda sobre la evolución aleatoria. Algunos programas que utilizan técnicas de Monte Carlo son Fuego, [36] The Many Faces of Go v12, [37] Leela, [38] MoGo, [39] Crazy Stone , MyGoFriend, [40] y Zen.

En 2006, se desarrolló una nueva técnica de búsqueda, límites de confianza superiores aplicados a árboles (UCT), [41] y se aplicó a muchos programas de Go Monte-Carlo 9x9 con excelentes resultados. UCT utiliza los resultados de las jugadas recopiladas hasta el momento para guiar la búsqueda a lo largo de las líneas de juego más exitosas, al mismo tiempo que permite explorar líneas alternativas. La técnica UCT junto con muchas otras optimizaciones para jugar en el tablero más grande de 19x19 ha llevado a MoGo a convertirse en uno de los programas de investigación más sólidos. Las primeras aplicaciones exitosas de los métodos UCT al Go 19x19 incluyen MoGo, Crazy Stone y Mango. [42] MoGo ganó la Olimpiada de Computadoras de 2007 y ganó una (de tres) partidas blitz contra Guo Juan, 5º Dan Pro, en el mucho menos complejo Go 9x9. The Many Faces of Go [43] ganó la Olimpiada de Computadoras de 2008 después de agregar la búsqueda UCT a su motor tradicional basado en el conocimiento.

Los motores de Go basados ​​en Montecarlo tienen la reputación de estar mucho más dispuestos a jugar tenuki , movimientos en otras partes del tablero, en lugar de continuar una pelea local que los jugadores humanos. Esto a menudo se percibía como una debilidad al principio de la existencia de estos programas. [44] Dicho esto, esta tendencia ha persistido en el estilo de juego de AlphaGo con resultados dominantes, por lo que esto puede ser más una "peculiaridad" que una "debilidad". [45]

Aprendizaje automático

El nivel de habilidad de los sistemas basados ​​en el conocimiento está estrechamente vinculado al conocimiento de sus programadores y de los expertos en el dominio asociado. Esta limitación ha dificultado la programación de IA verdaderamente fuertes. Un camino diferente es utilizar técnicas de aprendizaje automático . En estas, lo único que los programadores necesitan programar son las reglas y los algoritmos de puntuación simples sobre cómo analizar el valor de una posición. El software generará automáticamente su propio sentido de patrones, heurísticas y estrategias, en teoría.

Esto se hace generalmente permitiendo que una red neuronal o un algoritmo genético revise una gran base de datos de juegos profesionales o juegue muchos juegos contra sí mismo o contra otras personas o programas. Estos algoritmos pueden entonces utilizar estos datos como un medio para mejorar su rendimiento. Las técnicas de aprendizaje automático también se pueden utilizar en un contexto menos ambicioso para ajustar parámetros específicos de programas que dependen principalmente de otras técnicas. Por ejemplo, Crazy Stone aprende patrones de generación de movimientos de varios cientos de juegos de muestra, utilizando una generalización del sistema de calificación Elo . [46]

El ejemplo más famoso de este enfoque es AlphaGo, que demostró ser mucho más eficaz que las IA anteriores. En su primera versión, tenía una capa que analizaba millones de posiciones existentes para determinar los movimientos probables que se priorizarían como dignos de un análisis más profundo, y otra capa que intentaba optimizar sus propias posibilidades de ganar utilizando los movimientos probables sugeridos por la primera capa. AlphaGo utilizó la búsqueda de árbol de Monte Carlo para puntuar las posiciones resultantes. Una versión posterior de AlphaGo, AlphaGoZero, evitó aprender de los juegos de Go existentes y, en su lugar, aprendió solo de jugarse a sí mismo repetidamente. Otros programas anteriores que utilizaban redes neuronales incluyen NeuroGo y WinHonte.

Computadora Go y otros campos

Los resultados de la investigación sobre Go por computadora se están aplicando a otros campos similares, como la ciencia cognitiva , el reconocimiento de patrones y el aprendizaje automático . [47] La ​​teoría de juegos combinatorios , una rama de las matemáticas aplicadas , es un tema relevante para el Go por computadora. [35]

John H. Conway sugirió aplicar números surrealistas al análisis de finales de Go. Esta idea ha sido desarrollada más a fondo por Elwyn R. Berlekamp y David Wolfe en su libro Mathematical Go . [48] Se ha demostrado que los finales de Go son difíciles de resolver si se debe calcular el mejor movimiento absoluto en un tablero arbitrario casi lleno. Ciertas situaciones complicadas como Triple Ko, Quadruple Ko, Molasses Ko y Moonshine Life hacen que este problema sea difícil. [49] (En la práctica, los algoritmos de Monte Carlo fuertes aún pueden manejar situaciones normales de finales de Go bastante bien, y es poco probable que surjan las clases más complicadas de problemas de finales de vida o muerte en un juego de alto nivel). [50]

Varios problemas combinatorios difíciles (cualquier problema NP-completo ) pueden convertirse en problemas tipo Go en un tablero suficientemente grande; sin embargo, lo mismo es cierto para otros juegos de mesa abstractos, incluidos el ajedrez y el buscaminas , cuando se generalizan adecuadamente a un tablero de tamaño arbitrario. Los problemas NP-completos no tienden en su caso general a ser más fáciles para humanos sin ayuda que para computadoras adecuadamente programadas: los humanos sin ayuda son mucho peores que las computadoras a la hora de resolver, por ejemplo, instancias del problema de suma de subconjuntos . [51] [52]

Lista de programas informáticos que permiten jugar al Go

Competiciones entre programas informáticos de Go

Se llevan a cabo varias competiciones anuales entre programas informáticos de Go, incluidos eventos de Go en la Olimpiada de Computadoras . Las competiciones regulares, menos formales, entre programas solían tener lugar en el servidor Go de KGS [60] (mensualmente) y en el servidor Go de Computadora [61] (continuamente).

Hay muchos programas disponibles que permiten que los motores Go de computadora jueguen entre sí; casi siempre se comunican a través del Protocolo de Texto Go (GTP).

Historia

La primera competición de Go por ordenador fue patrocinada por Acornsoft , [62] y las primeras regulares por USENIX . Se celebraron entre 1984 y 1988. En estas competiciones se presentaron Nemesis, el primer programa de Go competitivo de Bruce Wilcox , y G2.5 de David Fotland, que más tarde evolucionaría hasta convertirse en Cosmos y The Many Faces of Go.

Uno de los primeros impulsores de la investigación del Go por ordenador fue el Premio Ing, un premio en metálico relativamente grande patrocinado por el banquero taiwanés Ing Chang-ki , ofrecido anualmente entre 1985 y 2000 en el Congreso Mundial de Go por Ordenador (o Copa Ing). Al ganador de este torneo se le permitía desafiar a jugadores jóvenes con un hándicap en un partido corto. Si el ordenador ganaba el partido, se otorgaba el premio y se anunciaba un nuevo premio: un premio mayor por vencer a los jugadores con un hándicap menor. La serie de premios Ing iba a expirar 1) en el año 2000 o 2) cuando un programa pudiera vencer a un profesional de 1 dan sin hándicap por 40.000.000 de dólares NT . El último ganador fue Handtalk en 1997, que se llevó 250.000 dólares NT por ganar un partido con un hándicap de 11 piedras contra tres aficionados de 2 a 6 dan de entre 11 y 13 años. Cuando el premio expiró en 2000, el premio no reclamado era de 400.000 dólares NT por ganar un partido con handicap de nueve piedras. [63]

Muchos otros grandes torneos regionales de Go ("congresos") tenían un evento de Go por computadora adjunto. El Congreso Europeo de Go ha patrocinado un torneo por computadora desde 1987, y el evento USENIX evolucionó hasta convertirse en el Campeonato de Go por Computadora de EE. UU./Norteamérica, que se celebró anualmente desde 1988 hasta 2000 en el Congreso de Go de EE. UU.

Japón empezó a patrocinar competiciones de Go por ordenador en 1995. La Copa FOST se celebró anualmente entre 1995 y 1999 en Tokio. Ese torneo fue sustituido por el Gifu Challenge, que se celebró anualmente entre 2003 y 2006 en Ogaki, Gifu. La Copa UEC de Go por ordenador se celebra anualmente desde 2007.

Formalización de la puntuación en los juegos de ordenador

Cuando dos computadoras juegan una partida de Go una contra la otra, lo ideal es tratar el juego de manera idéntica a como lo harían dos personas jugando, evitando cualquier intervención de personas reales. Sin embargo, esto puede resultar difícil durante la puntuación final de la partida. El problema principal es que el software de juego de Go, que normalmente se comunica mediante el Protocolo de Texto Go (GTP) estandarizado, no siempre estará de acuerdo con respecto al estado de las piedras vivas o muertas.

Si bien no existe una manera general para que dos programas diferentes "lo resuelvan" y hablen, este problema se evita en su mayor parte mediante el uso de reglas chinas , de Tromp-Taylor o de la Asociación Americana de Go (AGA) en las que se requiere continuar jugando (sin penalización) hasta que no haya más desacuerdos sobre el estado de ninguna piedra en el tablero. En la práctica, como en el servidor Go de KGS, el servidor puede mediar una disputa enviando un comando GTP especial a los dos programas cliente indicando que deben continuar colocando piedras hasta que no haya dudas sobre el estado de ningún grupo en particular (se hayan capturado todas las piedras muertas). El servidor Go de CGOS generalmente ve a los programas renunciar antes de que un juego haya llegado incluso a la fase de puntuación, pero sin embargo admite una versión modificada de las reglas de Tromp-Taylor que requieren un juego completo.

Este conjunto de reglas significa que un programa que estaba en una posición ganadora al final del juego bajo las reglas japonesas (cuando ambos jugadores han pasado) teóricamente podría perder debido a un juego deficiente en la fase de resolución, pero esto es muy poco probable y se considera una parte normal del juego bajo todos los conjuntos de reglas del área.

El principal inconveniente del sistema anterior es que algunos conjuntos de reglas (como las reglas japonesas tradicionales) penalizan a los jugadores por realizar estos movimientos adicionales, lo que impide el uso de jugadas adicionales para dos computadoras. Sin embargo, la mayoría de los programas de Go modernos admiten reglas japonesas contra humanos.

Históricamente, otro método para resolver este problema era que un experto humano juzgara el tablero final. Sin embargo, esto introduce subjetividad en los resultados y el riesgo de que el experto pase por alto algo que el programa vio.

Véase también

Referencias

  1. ^ Metz, Cade (9 de marzo de 2016). "La IA de Google gana el primer partido histórico con el campeón de Go". WIRED .
  2. ^ "AlphaGo vuelve a triunfar". 10 de marzo de 2016.
  3. ^ Bouzy, Bruno; Cazenave, Tristan (9 de agosto de 2001). "Computer Go: una encuesta orientada a la IA". Inteligencia artificial . 132 (1): 39–103. doi :10.1016/S0004-3702(01)00127-8.
  4. ^ Johnson, George (29 de julio de 1997), "Para probar una computadora poderosa, juega un juego antiguo", The New York Times , consultado el 16 de junio de 2008
  5. ^ "Vamos, Jack Good".
  6. ^ Plata, David ; Huang, Aja ; Maddison, Chris J.; Guez, Arturo; Sifré, Laurent; Driessche, George van den; Schrittwieser, Julián; Antonoglou, Ioannis; Panneershelvam, Veda; Lanctot, Marc; Dieleman, Sander; Grewe, Dominik; Nham, Juan; Kalchbrenner, Nal; Sutskever, Ilya ; Lillicrap, Timoteo; Lixiviación, Madeleine; Kavukcuoglu, Koray; Graepel, Thore; Hassabis, Demis (28 de enero de 2016). "Dominar el juego de Go con redes neuronales profundas y búsqueda de árboles". Naturaleza . 529 (7587): 484–489. Código Bib :2016Natur.529..484S. doi : 10.1038/naturaleza16961. Código IATA  : 10  ... ​Icono de acceso cerrado
  7. ^ Wedd, Nick. "Desafíos de Go entre humanos y computadoras". computer-go.info . Consultado el 28 de octubre de 2011 .
  8. ^ "'Un gran salto adelante': un ordenador que imita el cerebro humano vence a un profesional en el juego de Go".
  9. ^ Albert Zobrist (1970), Extracción y representación de características para el reconocimiento de patrones y el juego de Go. Tesis doctoral (152 págs.), Universidad de Wisconsin. También publicada como informe técnico
  10. ^ Millen, Jonathan K (abril de 1981). "Programación del juego Go". Byte . pág. 102 . Consultado el 18 de octubre de 2013 .
  11. ^ Webster, Bruce (noviembre de 1984). "Un tablero de Go para Macintosh". Byte . p. 125 . Consultado el 23 de octubre de 2013 .
  12. ^ Campbell, JA (1983). "Parte III: Introducción al Go". En Bramer, MA (ed.). Juegos de ordenador: teoría y práctica . Ellis Horwood Limited. pág. 138. ISBN 0-85312-488-4.
  13. ^ Shotwell, Peter (2003). ¡ Adelante! Más que un juego . Tuttle Publishing. pág. 164. ISBN 0-8048-3475-X.
  14. ^ "Informe técnico sobre informática CS-TR-339 Go". Archivado desde el original el 4 de febrero de 2014. Consultado el 28 de enero de 2016 .
  15. ^ Véase, por ejemplo, intgofed.org Archivado el 28 de mayo de 2008 en Wayback Machine .
  16. ^ Rémi Coulom (2007). "Selectividad eficiente y operadores de respaldo en la búsqueda de árboles de Montecarlo". Computers and Games, 5.ª conferencia internacional, CG 2006, Turín, Italia, 29-31 de mayo de 2006. Documentos revisados . H. Jaap van den Herik, Paolo Ciancarini, HHLM Donkers (eds.). Springer. págs. 72-83. CiteSeerX 10.1.1.81.6817 . ISBN.  978-3-540-75537-1.
  17. ^ "EGC 2010 Tampere News". Archivado desde el original el 14 de agosto de 2009. Consultado el 28 de enero de 2016 .
  18. ^ "Archivos de juegos de KGS" . Consultado el 28 de enero de 2016 .
  19. ^ "¡El programa Go de Zen Computer vence a Takemiya Masaki con solo 4 piedras!". Go Game Guru . Archivado desde el original el 2016-02-01 . Consultado el 28 de enero de 2016 .
  20. ^ "「アマ六段の力。天才かも」囲碁棋士、コンピューターに敗れる 初の公式戦". Noticias MSN Sankei. Archivado desde el original el 24 de marzo de 2013 . Consultado el 27 de marzo de 2013 .
  21. ^ "Desafío de Go centrado en código: otro sitio de WordPress más" . Consultado el 28 de enero de 2016 .
  22. ^ "Blog de investigación: AlphaGo: cómo dominar el antiguo juego de Go con aprendizaje automático". Blog de investigación de Google . 27 de enero de 2016.
  23. ^ Gibney, Elizabeth (2016). «El algoritmo de inteligencia artificial de Google domina el antiguo juego de Go». Nature News & Comment . 529 (7587): 445–446. Bibcode :2016Natur.529..445G. doi : 10.1038/529445a . PMID  26819021. S2CID  4460235.
  24. ^ "Inteligencia artificial: AlphaGo de Google supera al maestro de Go Lee Se-dol". BBC News Online . 12 de marzo de 2016 . Consultado el 12 de marzo de 2016 .
  25. ^ "DeepMind de Google derrota al legendario jugador de Go Lee Se-dol en una victoria histórica". www.theverge.com. 9 de marzo de 2016. Consultado el 9 de marzo de 2016 .
  26. ^ "Inteligencia artificial: el maestro del Go Lee Se-dol gana contra el programa AlphaGo". BBC News Online . 13 de marzo de 2016 . Consultado el 13 de marzo de 2016 .
  27. ^ "AlphaGo AI de Google vuelve a vencer a Lee Se-dol y gana la serie Go por 4-1". The Verge . 15 de marzo de 2016 . Consultado el 15 de marzo de 2016 .
  28. ^ Metz, Cade (27 de mayo de 2017). "Tras la victoria en China, los diseñadores de AlphaGo exploran una nueva IA". Wired .
  29. ^ "Calificaciones de los jugadores de Go en el mundo". Mayo de 2017.
  30. ^ "柯洁迎19岁生日 雄踞人类世界排名第一已两年" (en chino). Mayo de 2017.
  31. ^ Metz, Cade (25 de mayo de 2017). "AlphaGo de Google continúa dominando con su segunda victoria en China". Wired .
  32. ^ Silver, David ; Schrittwieser, Julian; Simonyan, Karen; Antonoglou, Ioannis; Huang, Aja ; Guez, Arthur; Hubert, Thomas; Baker, Lucas; Lai, Matthew; Bolton, Adrian; Chen, Yutian ; Lillicrap, Timothy; Fan, Hui ; Sifre, Laurent; Driessche, George van den; Graepel, Thore; Hassabis, Demis (19 de octubre de 2017). "Dominar el juego de Go sin conocimiento humano" (PDF) . Naturaleza . 550 (7676): 354–359. Código Bibliográfico :2017Natur.550..354S. doi :10.1038/nature24270. ISSN  0028-0836. PMID  29052630. S2CID  205261034.Icono de acceso cerrado
  33. ^ "5x5 Go está resuelto" . Consultado el 28 de enero de 2016 .
  34. ^ Klinger, Tim y Mechner, David. Una arquitectura para Go por computadora (1996)
  35. ^ abcd Müller, Martin (enero de 2002). "Computer Go". Inteligencia artificial . 134 (1–2): 148–151. doi :10.1016/S0004-3702(01)00121-7.
  36. ^ ab "Fuego".
  37. ^ de David Fotland. "Software Go de Dan Level: las muchas caras del Go".
  38. ^ abc "Sjeng – ajedrez, audio y software diverso".
  39. ^ ab "Copia archivada". Archivado desde el original el 10 de agosto de 2008. Consultado el 3 de junio de 2008 .{{cite web}}: CS1 maint: archived copy as title (link)
  40. ^ ab "MyGoFriend – Ganador de la medalla de oro en la 15.ª Olimpiada de informática, Go (9x9)". Archivado desde el original el 8 de diciembre de 2010.
  41. ^ "UCT".
  42. ^ "Mango". Archivado desde el original el 3 de noviembre de 2007.
  43. ^ David Fotland. "Juegos inteligentes".
  44. ^ "Facebook entrena a una IA para vencer a los humanos en el juego de mesa Go – BBC News". BBC News . 27 de enero de 2016 . Consultado el 24 de abril de 2016 .
  45. ^ Ormerod, David (12 de marzo de 2016). «AlphaGo muestra su verdadera fuerza en su tercera victoria contra Lee Sedol». Go Game Guru. Archivado desde el original el 13 de marzo de 2016. Consultado el 12 de marzo de 2016 .
  46. ^ "Cálculo de la puntuación Elo de los patrones de movimientos en el juego de Go" . Consultado el 28 de enero de 2016 .
  47. ^ Muhammad, Mohsin. Juegos de pensamiento, Inteligencia artificial 134 (2002): pág. 150
  48. ^ Berlekamp, ​​Elwyn ; Wolfe, David (1994). Go matemático: el enfriamiento lleva al punto final . Taylor & Francis. ISBN 978-1-56881-032-4.
  49. ^
    • "Triple Ko".
    • "Cuádruple Ko".
    • "Melaza Ko".
    • "Vida a la luz de la luna".
  50. ^ "Programación informática Go".
  51. ^ En la página 11: "Crasmaru demuestra que es NP-completo determinar el estado de ciertas formas restringidas de problemas de vida o muerte en Go". (Véase la siguiente referencia.) Erik D. Demaine; Robert A. Hearn (2008-04-22). "Jugando con algoritmos: teoría de juegos combinatorios algorítmicos". arXiv : cs/0106019 .
  52. ^ Marcel Crasmaru (1999). "Sobre la complejidad de Tsume-Go". Computadoras y juegos . Apuntes de clase en informática. Vol. 1558. Londres, Reino Unido: Springer-Verlag . págs. 222–231. doi :10.1007/3-540-48957-6_15. ISBN . 978-3-540-65766-8.
  53. ^ BaduGI
  54. ^
    • "Goban. Juega Go en Mac – Sen:te". Archivado desde el original el 2013-05-19 . Consultado el 2013-06-14 .
    • "Extensiones Goban – Sen:te". Archivado desde el original el 18 de mayo de 2016. Consultado el 14 de junio de 2013 .
  55. ^ "Página de inicio de Sylvain GELLY". Archivado desde el original el 28 de noviembre de 2006. Consultado el 21 de febrero de 2007 .
  56. ^ "Pachi - Juego de mesa de Go / Weiqi / Baduk".
  57. ^ Anders Kierulf. "SmartGo".
  58. ^ "EL VERTICAL".
  59. ^ "Zen (programa go)".
  60. ^ "Torneos de Go por computadora en KGS".
  61. ^ "Servidor Go 9x9". Archivado desde el original el 19 de enero de 2007. Consultado el 25 de marzo de 2007 .
  62. ^ "Acorn 1984 El primer torneo de Go por ordenador". computer-go.info .
  63. ^ David Fotland. «Campeonato Mundial de Go por Computadora» . Consultado el 28 de enero de 2016 .

Lectura adicional

Enlaces externos