Articulo de referencia

Computadora Go

El Go computacional 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 se divide clara...

El Go computacional 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 se divide claramente en dos épocas. Antes de 2015, los programas eran débiles. Los mejores esfuerzos de las décadas de 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, en el mejor de los casos, de nivel intermedio. Los profesionales podían derrotar a estos programas incluso con desventajas de más de 10 piedras a favor de la IA. Muchos de los algoritmos, como el alfa-beta minimax , que funcionaban bien como IA para las damas y el ajedrez, fallaban en el tablero de Go de 19x19, ya que había demasiadas posibilidades de ramificación que 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 en árbol de Monte Carlo a los algoritmos de Go proporcionó una mejora notable a finales de la década de 2000, con programas que finalmente pudieron alcanzar un nivel bajo de dan : el de un aficionado avanzado. Los aficionados de alto dan y los profesionales aún podían explotar las debilidades de estos programas y ganar consistentemente, pero el rendimiento de las computadoras había avanzado más allá del nivel intermedio ( kyu de un solo dígito ). El tentador objetivo aún no alcanzado de derrotar a los mejores jugadores humanos sin hándicap, considerado durante mucho tiempo inalcanzable, trajo un estallido de renovado interés. La 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, creó AlphaGo en 2015 y lo anunció al mundo en 2016. AlphaGo derrotó a Lee Sedol , un profesional de 9 dan, en una partida sin hándicap en 2016, y luego derrotó a Ke Jie en 2017 , quien en ese momento mantuvo continuamente el puesto número 1 del ranking mundial durante dos años. Así como las damas cayeron ante las máquinas en 1995 y el ajedrez en 1997 , los programas informáticos finalmente vencieron a los mejores campeones de Go de la humanidad entre 2016 y 2017. DeepMind no lanzó AlphaGo para uso público, pero desde entonces se han creado varios programas basados ​​en los artículos científicos que DeepMind publicó describiendo AlphaGo y sus variantes.

Resumen 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 consideraban que el Go requería más elementos que imitan el pensamiento humano que el ajedrez. [ 4 ] El matemático IJ Good escribió en 1965: [ 5 ]

¿Jugar al Go en un ordenador? – Para programar un ordenador que juegue una partida de Go razonable, y no solo una partida legal, es necesario formalizar los principios de una buena estrategia o diseñar un programa de aprendizaje. Estos principios son más cualitativos y complejos que en el ajedrez, y dependen más del criterio. Por lo tanto, creo que será aún más difícil programar un ordenador para jugar una partida de Go razonable que una de ajedrez.

Antes de 2015, los mejores programas de Go solo lograban alcanzar el nivel dan amateur . [ 6 ] [ 7 ] En el tablero pequeño de 9×9, la computadora tuvo un mejor desempeño, y algunos programas lograron ganar una fracción de sus partidas de 9×9 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 de 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 de Zobrist para detectar ko .

En abril de 1981, Jonathan K Millen publicó un artículo en Byte donde hablaba de Wally, un programa de Go con un tablero de 15x15 que cabía en la RAM de 1K del microordenador KIM-1 . [ 10 ] Bruce F. Webster publicó un artículo en la revista en noviembre de 1984 donde hablaba de un programa de Go que había escrito para el Apple Macintosh , incluyendo el código fuente MacFORTH . [ 11 ] Los programas de 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 tableros más pequeños. [ 12 ] Las IA que jugaban en el Internet Go Server (IGS) en tableros de 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 lograron vencer a programas de computadora con hándicaps de 25 a 30 piedras, un hándicap enorme que pocos jugadores humanos aceptarían. Hubo un caso en el Campeonato Mundial de Go por Computadora de 1994 donde 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 grandes hándicaps. [ 15 ]

En 2006 (con un artículo publicado en 2007), Rémi Coulom creó un nuevo algoritmo que denominó búsqueda en árbol de Monte Carlo . [ 16 ] En él, se crea un árbol de juego como de costumbre con futuros potenciales que se ramifican con cada movimiento. Sin embargo, las computadoras "puntúan" una hoja terminal del árbol mediante repetidas simulaciones aleatorias (similares a las estrategias de Monte Carlo para otros problemas). La ventaja es que dichas simulaciones aleatorias se pueden realizar muy rápidamente. La objeción intuitiva —que las simulaciones aleatorias no corresponden al valor real de una posición— resultó no ser tan fatal para el procedimiento como se esperaba; la parte de "búsqueda en árbol" del algoritmo se 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 mejores resultados que las IA clásicas anteriores. Los mejores programas podían funcionar especialmente bien en el tablero pequeño 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 bajos de nivel dan en el servidor KGS Go en el tablero de 19x19.

En 2010, en el Congreso Europeo de Go de 2010 en Finlandia, MogoTW jugó una partida de Go de 19x19 contra Catalin Taranu (5p). MogoTW recibió una ventaja 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 de una victoria por 20 puntos con un hándicap de cuatro piedras. [ 19 ]

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

El Codecentric Go Challenge de 2014, un encuentro al mejor de cinco partidas en un tablero par 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 se impuso en la primera partida por 1,5 puntos. [ 21 ]

A partir de 2015: La era del aprendizaje profundo

AlphaGo , desarrollado por Google DeepMind , representó un avance significativo en la potencia informática en comparación con los programas de Go anteriores. Utilizaba técnicas que combinaban el aprendizaje profundo y la búsqueda en árbol 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 tres primeros de cinco encuentros. [ 24 ] Esta fue la primera vez que un maestro de 9 dan jugó una partida profesional contra una computadora sin hándicap. [ 25 ] Lee ganó el cuarto encuentro, describiendo su victoria como "invaluable". [ 26 ] AlphaGo ganó el encuentro 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 una partida sin hándicap en un tablero de tamaño completo.

En mayo de 2017, AlphaGo venció a Ke Jie , quien en ese momento ocupaba el primer puesto en el ranking mundial, [ 29 ] [ 30 ] en un encuentro de tres partidas durante la Cumbre del Futuro del Go . [ 31 ]

En octubre de 2017, DeepMind reveló una nueva versión de AlphaGo, entrenada únicamente mediante autoaprendizaje, que había superado a todas las versiones anteriores, venciendo a la versión de Ke Jie en 89 de cada 100 partidas. [ 32 ]

Tras la publicación de los principios básicos de AlphaGo en la revista Nature , otros equipos lograron desarrollar programas de alto nivel. Desde entonces, el trabajo en IA para Go se ha centrado principalmente en emular las técnicas utilizadas para crear AlphaGo, que demostró ser muy superior a cualquier otro sistema. Para 2017, tanto Zen como el proyecto Fine Art de Tencent eran capaces de derrotar a profesionales de altísimo 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, se creyó que el Go computarizado planteaba un problema fundamentalmente distinto al del ajedrez computarizado . Muchos consideraban que un programa de Go potente solo se lograría en un futuro lejano, gracias a avances fundamentales en la inteligencia artificial. Quienes creían factible el problema consideraban que se requeriría conocimiento del dominio para ser efectivos contra expertos humanos. Por lo tanto, gran parte del desarrollo del Go computarizado se centró en representar el conocimiento experto humano y combinarlo con la búsqueda local para responder preguntas de índole táctica. El resultado fueron programas que manejaban bien muchas situaciones específicas, pero que presentaban debilidades muy marcadas en el desarrollo general del juego. Además, estos programas clásicos no se beneficiaron prácticamente en nada del aumento de la potencia de cálculo disponible. El progreso en este campo fue, en general, lento.

Tamaño de la tabla

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

En 2002, un programa informático llamado MIGOS (Mini GO Solver) resolvió completamente el juego de Go para el tablero de 5×5. Ganan las negras, llevándose todo el tablero. [ 33 ]

Número de opciones de movimiento

Siguiendo con la comparación con el ajedrez, los movimientos en el Go no están tan limitados por las reglas del juego. En ajedrez, el jugador tiene veinte opciones para su primer movimiento. En Go, comienzan con 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 en un juego es evaluar una posición en el tablero: ¿qué bando tiene ventaja y en qué medida? En ajedrez, muchas posiciones futuras en un árbol representan victorias directas para un bando, y los tableros cuentan con una heurística razonable para la evaluación mediante el simple conteo de material, así como ciertos factores posicionales como la estructura de peones. Un futuro en el que un bando ha perdido su reina sin obtener ningún beneficio favorece claramente al otro. Este tipo de reglas de evaluación posicional no se pueden aplicar eficazmente al Go. El valor de una posición en Go depende de un análisis complejo para determinar si el grupo está vivo o no, qué piedras se pueden conectar entre sí y heurísticas sobre el grado de influencia de una posición fuerte o el grado de vulnerabilidad de una posición débil. Una piedra colocada puede no tener influencia inmediata, pero tras muchos movimientos podría volverse crucial en retrospectiva a medida que otras áreas del tablero se van configurando.

Una mala evaluación de los estados de la junta directiva hará que la IA trabaje para adoptar posiciones que erróneamente cree que la favorecen, pero que en realidad no lo hacen.

Vida y muerte

Una de las principales preocupaciones de un jugador de Go es determinar qué grupos de piedras pueden sobrevivir y cuáles pueden ser capturadas. Este tipo de problemas se conoce como de vida o muerte . Los sistemas de IA basados ​​en el conocimiento a veces intentan comprender el estado de vida o muerte de los grupos de piedras en el tablero. El enfoque más directo consiste en realizar una búsqueda en árbol de los movimientos que potencialmente afectan a las piedras en cuestión y, posteriormente, registrar el estado de las piedras al final de la línea principal de juego. Sin embargo, debido a 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 debe aplicarse alguna heurística para seleccionar los movimientos a considerar. El resultado es que, para cualquier programa dado, existe una compensación entre la velocidad de juego y la capacidad de interpretar el estado de vida o muerte de las piedras.

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 que corresponde 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 simulaciones de Monte Carlo para "puntuar" un tablero como bueno o malo para un jugador. Sin embargo, los programas de IA "clásicos" que intentan modelar directamente la estrategia de un humano pueden 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 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 en el Go. Las redes neuronales comenzaron a probarse como una alternativa en la década de 2000, ya que requerían una enorme capacidad de procesamiento que era inalcanzable en décadas anteriores. Estos enfoques buscan mitigar los problemas del juego de Go, como su alto factor de ramificación y otras numerosas dificultades.

La única decisión que debe tomar un programa es dónde colocar su siguiente piedra. Sin embargo, esta decisión se complica por la amplia gama de impactos que una sola piedra puede tener en todo el tablero, y por las complejas interacciones que pueden existir entre los distintos grupos de piedras. Han surgido diversas arquitecturas para abordar este problema. Algunas técnicas y filosofías de diseño populares incluyen:

Una técnica tradicional de IA para crear software de juegos es usar una búsqueda en árbol minimax . Esto implica ejecutar todos los movimientos hipotéticos en el tablero hasta cierto punto, y 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 conduce al mejor tablero hipotético, y el proceso se repite en cada turno. Si bien las búsquedas en árbol han sido muy efectivas en el ajedrez computarizado , han tenido menos éxito en los programas de Go computarizado. 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 bando puede realizar da como resultado 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 extensamente 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 considerablemente 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 y la muerte, el Go es particularmente adecuado para técnicas de almacenamiento en caché, como las tablas de transposición . Estas pueden reducir la cantidad de esfuerzo repetitivo, 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 pueden acelerarse mediante el uso de técnicas de poda específicas del dominio, como no considerar movimientos donde el oponente ya tiene ventaja, y extensiones selectivas como considerar siempre los movimientos junto a grupos de piedras que están a punto de ser capturadas . Sin embargo, ambas opciones conllevan un riesgo significativo de no considerar un movimiento vital que habría cambiado el curso de la partida.

Los resultados de las competiciones informáticas demuestran que las técnicas de reconocimiento de patrones para seleccionar un conjunto de movimientos adecuados, combinadas con búsquedas tácticas rápidas y localizadas (explicadas anteriormente), fueron suficientes en su momento para crear 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 maestros. El trabajo en IA durante la década de 1990 a menudo implicaba intentar "enseñar" a la IA heurísticas de estilo humano sobre el conocimiento del Go. 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 del Go, será posible desarrollar programas de Go más fuertes". [ 34 ] Propusieron dos maneras: reconocer configuraciones comunes de piedras y sus posiciones, y concentrarse en batallas locales. En 2001, un artículo concluyó que "los programas de Go todavía carecen tanto de calidad como de cantidad de conocimiento", y que solucionar esto mejoraría el rendimiento de la IA en Go. [ 35 ]

En teoría, el uso del conocimiento experto mejoraría el software de Go. Cientos de directrices y reglas prácticas para un juego sólido han sido formuladas tanto por aficionados de alto nivel como por profesionales. La tarea del programador consiste en tomar estas heurísticas , formalizarlas en código informático y utilizar algoritmos de coincidencia y reconocimiento de patrones para determinar cuándo se aplican estas reglas. También es importante poder "puntuar" estas heurísticas para que, cuando ofrezcan consejos contradictorios, el sistema pueda determinar cuál 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 el juego, pero no de afirmaciones matemáticas formales; intentan que el ordenador imite su forma de jugar al Go. Los programas competitivos alrededor de 2001 podían contener entre 50 y 100 módulos que abordaban diferentes aspectos y estrategias del juego, como el joseki. [ 35 ]

Algunos ejemplos de programas que se han basado en gran medida en el conocimiento experto son Handtalk (más tarde conocido como Goemate), The Many Faces of Go, Go Intellect y Go++, cada uno de los cuales ha sido considerado en algún momento el mejor programa de Go del mundo. Sin embargo, estos métodos finalmente tuvieron rendimientos decrecientes y, en el mejor de los casos, nunca avanzaron más allá de un nivel intermedio en un tablero de tamaño completo. Un problema particular era 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. El resultado es un programa cuya fuerza es menor que la suma de sus partes; si bien los movimientos pueden ser buenos desde un punto de vista táctico individual, el programa puede ser engañado y manipulado para ceder demasiado a cambio y encontrarse en una posición general perdedora. Como lo expresó la encuesta de 2001, "un solo mal movimiento puede arruinar una buena partida. El rendimiento del programa en una partida completa puede ser mucho menor que el nivel maestro". [ 35 ]

Métodos de Montecarlo

Una alternativa importante al uso de conocimiento y búsquedas codificadas manualmente 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 partidas aleatorias en el tablero resultante. El movimiento que conduce al mejor conjunto de partidas aleatorias 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 aleatoriamente, 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 imperfectos tácticamente. 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 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 fuertes. Las primeras aplicaciones exitosas de los métodos UCT al Go 19x19 incluyen MoGo, Crazy Stone y Mango. [ 42 ] MoGo ganó la Olimpiada de Computación de 2007 y ganó una (de tres) partida blitz contra Guo Juan, 5º Dan Pro, en el Go 9x9 mucho menos complejo. The Many Faces of Go [ 43 ] ganó la Olimpiada de Computación de 2008 después de agregar la búsqueda UCT a su motor tradicional basado en el conocimiento.

Los motores de Go basados ​​en el método de Montecarlo tienen fama de ser mucho más propensos a realizar tenuki (movimientos en otras partes del tablero) que a continuar una lucha local que los jugadores humanos. Esto se percibía a menudo como una debilidad en los inicios de estos programas. [ 44 ] Dicho esto, esta tendencia ha persistido en el estilo de juego de AlphaGo con resultados dominantes, por lo que podría tratarse más de una peculiaridad que de una debilidad. [ 45 ]

Aprendizaje automático

El nivel de habilidad de los sistemas basados ​​en el conocimiento está estrechamente ligado al conocimiento de sus programadores y expertos en el dominio correspondiente. Esta limitación ha dificultado la programación de IA verdaderamente robustas. Una alternativa es utilizar técnicas de aprendizaje automático . En estas, lo único que los programadores deben programar son las reglas y los algoritmos de puntuación simples para analizar el valor de una posición. El software, en teoría, generará automáticamente su propio análisis de patrones, heurísticas y estrategias.

Esto generalmente se logra permitiendo que una red neuronal o un algoritmo genético revise una gran base de datos de partidas profesionales, o que juegue muchas partidas contra sí mismo o contra otras personas o programas. Estos algoritmos pueden entonces usar estos datos para mejorar su rendimiento. Las técnicas de aprendizaje automático también se pueden usar 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 a partir de varios cientos de partidas de muestra, utilizando una generalización del sistema de clasificació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, contaba con una capa que analizaba millones de posiciones existentes para determinar los movimientos más probables que merecían un análisis más profundo, y otra capa que intentaba optimizar sus propias probabilidades de ganar utilizando los movimientos probables sugeridos por la primera capa. AlphaGo utilizaba la búsqueda en árbol de Montecarlo para puntuar las posiciones resultantes. Una versión posterior de AlphaGo, AlphaGoZero, prescindió del aprendizaje a partir de partidas de Go existentes y, en su lugar, aprendió únicamente jugando contra sí misma repetidamente. Otros programas anteriores que utilizaban redes neuronales incluyen NeuroGo y WinHonte.

Computadora Go y otros campos

Los resultados de la investigación sobre el Go computarizado 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 computarizado. [ 35 ]

John H. Conway sugirió aplicar números surrealistas al análisis del final de partida en Go. Esta idea fue desarrollada posteriormente por Elwyn R. Berlekamp y David Wolfe en su libro Mathematical Go . [ 48 ] Se ha demostrado que los finales de partida de Go son PSPACE-difíciles si el mejor movimiento absoluto debe calcularse en un tablero arbitrario mayormente 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 Monte Carlo fuertes aún pueden manejar situaciones normales de final de partida de Go bastante bien, y es poco probable que las clases más complicadas de problemas de final de partida de vida o muerte aparezcan en una partida de alto nivel). [ 50 ]

Diversos problemas combinatorios difíciles (cualquier problema NP-difícil ) pueden convertirse en problemas similares al Go en un tablero suficientemente grande; sin embargo, lo mismo ocurre con otros juegos de mesa abstractos, como el ajedrez y el Buscaminas , cuando se generalizan adecuadamente a un tablero de tamaño arbitrario. Los problemas NP-completos no suelen ser más fáciles para los humanos sin ayuda que para las computadoras adecuadamente programadas: los humanos sin ayuda son mucho peores que las computadoras al resolver, por ejemplo, instancias del problema de la suma de subconjuntos . [ 51 ] [ 52 ]

Lista de programas informáticos para jugar al Go

  • AlphaGo , un programa de aprendizaje automático de Google DeepMind, fue el primer programa informático en ganar partidas sin hándicap contra un jugador humano de Go de 9º dan.
  • BaduGI, un programa de Jooyoung Lee [ 53 ]
  • Crazy Stone , de Rémi Coulom (vendida como Saikyo no Igo en Japón)
  • Bosque oscuro , por Facebook
  • Bellas Artes , por Tencent
  • Fuego, un programa de Monte Carlo de código abierto [ 36 ]
  • Goban, un programa de Go para Macintosh de Sen:te (requiere las extensiones gratuitas de Goban) [ 54 ]
  • GNU Go , un programa Go clásico de código abierto.
  • KataGo , por David Wu.
  • Leela , el primer programa de Montecarlo para el público [ 38 ]
  • Leela Zero , una reimplementación del sistema descrito en el artículo AlphaGo Zero [ 38 ].
  • Las muchas caras del Go, por David Fotland (vendido como AI Igo en Japón) [ 37 ]
  • MyGoFriend, un programa de Frank Karger [ 40 ]
  • MoGo de Sylvain Gelly; versión paralela de muchas personas. [ 55 ] [ 39 ]
  • Pachi, un programa Monte Carlo de código abierto de Petr Baudiš [ 56 ]
  • Smart Go, por Anders Kierulf, inventor del formato de juego inteligente [ 57 ]
  • Steenvreter, de Erik van der Werf [ 58 ]
  • Zen , de Yoji Ojima aka Yamato (vendido como Tencho no Igo en Japón); Versión paralela de Hideki Kato. [ 59 ]

Competiciones entre programas informáticos de Go

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

Existen numerosos programas que permiten a los motores de Go informáticos jugar entre sí; casi siempre se comunican a través del Protocolo de Texto de Go (GTP).

Historia

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

Uno de los primeros impulsores de la investigación en Go computarizado fue el Premio Ing, un premio en metálico relativamente grande patrocinado por el banquero taiwanés Ing Chang-ki , que se ofrecía anualmente entre 1985 y 2000 en el Congreso Mundial de Go Computarizado (o Copa Ing). El ganador de este torneo podía desafiar a jugadores jóvenes con hándicap en una partida corta. Si la computadora ganaba la partida, se le otorgaba el premio y se anunciaba un nuevo premio: un premio mayor para quien venciera a los jugadores con un hándicap menor. La serie de premios Ing estaba programada para 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 taiwaneses . El último ganador fue Handtalk en 1997, quien se llevó 250.000 dólares taiwaneses por ganar una partida con hándicap de 11 piedras contra tres aficionados de 11 a 13 años con 2 a 6 dan. Cuando el premio expiró en 2000, el premio no reclamado era de 400.000 dólares NT por ganar un partido con hándicap de nueve piedras. [ 63 ]

Muchos otros grandes torneos regionales de Go ("congresos") incluían un evento de Go por computadora. 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 comenzó a patrocinar competiciones de Go por ordenador en 1995. La Copa FOST se celebró anualmente entre 1995 y 1999 en Tokio. Este 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 videojuegos

Cuando dos ordenadores juegan al Go, lo ideal es tratar el juego como si fueran dos humanos, evitando cualquier intervención humana. Sin embargo, esto puede resultar difícil durante la fase final de la partida. El principal problema es que el software de Go, que normalmente se comunica mediante el Protocolo de Texto de Go (GTP), no siempre coincide en cuanto al estado de las piedras (vivas o muertas).

Aunque no existe una forma general para que dos programas diferentes "dialoguen" y resuelvan el conflicto, este problema se evita en gran medida utilizando las reglas chinas , de Tromp-Taylor o de la Asociación Americana de Go (AGA), en las que se requiere continuar el juego (sin penalización) hasta que no haya más desacuerdo sobre el estado de las piedras en el tablero. En la práctica, como en el servidor de Go KGS, el servidor puede mediar en una disputa enviando un comando GTP especial a los dos programas cliente indicándoles que deben continuar colocando piedras hasta que no haya dudas sobre el estado de ningún grupo en particular (todas las piedras muertas han sido capturadas). El servidor de Go CGOS suele ver que los programas se rinden antes de que una partida haya llegado a la fase de puntuación, pero aun así admite una versión modificada de las reglas de Tromp-Taylor que requiere que se juegue la partida completa.

Estas reglas implican que un programa que se encontraba en una posición ganadora al final del juego según las reglas japonesas (cuando ambos jugadores han pasado) podría, en teoría, perder debido a un mal juego en la fase de resolución, pero esto es muy improbable y se considera una parte normal del juego según todas las reglas de cada área.

El principal inconveniente del sistema anterior es que algunos conjuntos de reglas (como las reglas tradicionales japonesas) penalizan a los jugadores por realizar estos movimientos adicionales, lo que impide el uso de la opción de juego adicional para dos ordenadores. No obstante, la mayoría de los programas modernos de Go admiten las reglas japonesas contra humanos.

Históricamente, otro método para resolver este problema consistía en que un experto humano evaluara 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 sí detectó.

Véase también

Referencias

  1. Metz, Cade (9 de marzo de 2016). "La IA de Google gana su primera partida en un encuentro histórico con el campeón de Go" . WIRED .
  2. "AlphaGo vuelve a salir victorioso" . 10 de marzo de 2016.
  3. Bouzy, Bruno; Cazenave, Tristan (9 de agosto de 2001). "Computer Go: Un estudio orientado 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 potente, juegue 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. Bibcode : 2016Natur.529..484S . doi : 10.1038 / nature16961 . ISSN 0028-0836 . PMID 26819042. S2CID 515925 .   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 avance": 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). "Programando el juego de Go" . Byte . pág. 102. Recuperado el 18 de octubre de 2013 . 
  11. Webster, Bruce (noviembre de 1984). "Un tablero de Go para Macintosh" . Byte . pág. 125. Consultado el 23 de octubre de 2013 . 
  12. Campbell, JA (1983). «Parte III: Introducción al Go». En Bramer, MA (ed.). Computer Game-Playing: Theory and Practice . Ellis Horwood Limited. pág. 138. ISBN  0-85312-488-4.
  13. Shotwell, Peter (2003). ¡Vamos! Más que un juego . Tuttle Publishing. pág. 164. ISBN  0-8048-3475-X.
  14. "Informe técnico de CS-TR-339 Computer Go" . Archivado del 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 en árbol de Montecarlo". Computers and Games, 5.ª Conferencia Internacional, CG 2006, Turín, Italia, 29-31 de mayo de 2006. Artículos revisados . H. Jaap van den Herik, Paolo Ciancarini, HHLM Donkers (eds.). Springer. pp. 72-83 . CiteSeerX 10.1.1.81.6817 . ISBN   978-3-540-75537-1.
  17. "Noticias de EGC 2010 Tampere" . Archivado del 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 de Go Zen vence a Takemiya Masaki con solo 4 piedras!" . Go Game Guru . Archivado del original el 1 de febrero de 2016 . 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. "codecentric go challenge – Just another WordPress site" . Consultado el 28 de enero de 2016 .
  22. "Blog de investigación: AlphaGo: Dominando 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 IA 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 vence 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 de Go Lee Se-dol vence al programa AlphaGo" . BBC News Online . 13 de marzo de 2016. Consultado el 13 de marzo de 2016 .
  27. "La IA AlphaGo de Google vuelve a vencer a Lee Se-dol y gana la serie de 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 nuevas IA" . Wired .
  29. "Clasificación mundial de jugadores de Go" . Mayo de 2017.
  30. ^ "柯洁迎19岁生日 雄踞人类世界排名第一已两年" (en chino). Mayo de 2017.
  31. Metz, Cade (25 de mayo de 2017). "AlphaGo de Google continúa su dominio con una 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). "Dominando el juego de Go sin conocimiento humano" (PDF) . Nature . 550 (7676): 354–359 . Bibcode : 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 el Go computarizado (1996)
  35. 1 2 3 4 Müller, Martin (enero de 2002). "Computer Go". Inteligencia Artificial . 134 ( 1– 2): 148– 151. doi : 10.1016/S0004-3702(01)00121-7 .
  36. 1 2 "Fuego" .
  37. 1 2 David Fotland. "Dan Level Go Software – Las muchas caras del Go" .
  38. 1 2 3 "Sjeng – ajedrez, audio y software diverso" .
  39. 1 2 "Copia archivada" . Archivado del original el 10 de agosto de 2008. Recuperado el 3 de junio de 2008 .{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace )
  40. 1 2 "MyGoFriend – Ganador de la medalla de oro en la XV Olimpiada de Computación, Go (9x9)" . Archivado del original el 8 de diciembre de 2010.
  41. "UCT" .
  42. "Mango" . Archivado del original el 3 de noviembre de 2007.
  43. ^ David Fotland. "Juegos inteligentes" .
  44. "Facebook entrena a su 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 demuestra su verdadera fuerza en su tercera victoria contra Lee Sedol" . Go Game Guru. Archivado del original el 13 de marzo de 2016. Consultado el 12 de marzo de 2016 .
  46. "Cálculo de las puntuaciones Elo de los patrones de movimiento 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). Mathematical Go: Chilling Gets the Last Point . Taylor & Francis. ISBN 978-1-56881-032-4.
  49. "Programación de Go para computadora" .
  50. 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 (22 de abril de 2008). "Jugando con algoritmos: teoría de juegos combinatorios algorítmicos". arXiv : cs/0106019 .
  51. Marcel Crasmaru (1999). «Sobre la complejidad del Tsume-Go». Computers and Games . Lecture Notes in Computer Science. Vol. 1558. Londres, Reino Unido: Springer-Verlag . pp. 222–231 . doi : 10.1007/3-540-48957-6_15 . ISBN   978-3-540-65766-8.
  52. BaduGI
    • "Goban. Juega Go en Mac – Sen:te" . Archivado del original el 19 de mayo de 2013. Consultado el 14 de junio de 2013 .
    • "Extensiones de Goban – Sen:te" . Archivado del original el 18 de mayo de 2016. Consultado el 14 de junio de 2013 .
  53. "Página principal de Sylvain Gelly" . Archivado del original el 28 de noviembre de 2006. Consultado el 21 de febrero de 2007 .
  54. «Pachi – Juego de mesa de Go/Weiqi/Baduk» .
  55. Anders Kierulf. "SmartGo" .
  56. "STEENVRETER" .
  57. "Zen (programa go)" .
  58. "Torneos de Go por ordenador en KGS" .
  59. "Servidor 9x9 Go" . Archivado del original el 19 de enero de 2007. Consultado el 25 de marzo de 2007 .
  60. "Acorn 1984 El primer torneo de Go por ordenador" . computer-go.info .
  61. David Fotland. "Campeonato Mundial de Go por Computadora" . Consultado el 28 de enero de 2016 .

Lecturas adicionales

  • Co-evolución de una red neuronal para jugar al Go , escrito por Alex Lubberts y Risto Miikkulainen, 2001
  • Juego de ordenador: Teoría y práctica , editado por MA Brauner (The Ellis Horwood Series in Artificial Intelligence), Halstead Press, 1983. Una colección de artículos sobre el juego de Go por ordenador. The American Go Journal, vol. 18, n.º 4, pág. 6. [ISSN 0148-0243]
  • Un enfoque de aprendizaje automático para el juego de Go por computadora , Jeffrey Bagdis, 2007.
  • Minimalismo en el diseño de interfaces ubicuas Wren, C. y Reynolds, C. (2004) Personal and Ubiquitous Computing, 8(5), páginas 370–374. Video del sistema de visión Go de la computadora en funcionamiento muestra la interacción y a los usuarios explorando Joseki y Fuseki .
  • Go Montecarlo , presentado por Markus Enzenberger, Seminario de Go por Computadora, Universidad de Alberta, abril de 2004.
  • Monte-Carlo Go , escrito por B. Bouzy y B. Helmstetter, de la Biblioteca Digital de Literatura Científica.
  • Análisis estático de la vida y la muerte en el juego de Go , escrito por Ken Chen y Zhixing Chen, 20 de febrero de 1999.
  • Artículo que describe las técnicas subyacentes a Mogo
  • Lista extensa de eventos del juego Go informático
  • En "All systems Go" (1998), David A. Mechner analiza la partida en la que la jugadora profesional de Go, Janice Kim, ganó una partida contra el programa Handtalk tras concederle una desventaja de 25 piedras.
  • Páginas sobre Go informático y programación de Go informático en la biblioteca de Sensei.
  • Bibliografía de Computer Go
  • Bibliografía de Another Computer Go
  • Lista de correo de Computer Go
  • Los artículos publicados sobre el Go computarizado en Ideosphere ofrecen una estimación actual de si un programa de Go se convertirá en el mejor jugador del mundo.
  • Información sobre el protocolo de texto Go, comúnmente utilizado para la interfaz entre los motores de juego de Go, los clientes gráficos y los servidores de Internet.
  • La sala de Go computarizada en el servidor K Go (KGS) para discusiones en línea y ejecución de "bots".
  • Dos partidas representativas de Go por ordenador , un artículo sobre dos partidas de Go por ordenador jugadas en 1999, una con dos jugadores informáticos y la otra una partida humano-ordenador con una desventaja de 174 kg.
  • El libro What A Way to Go describe el trabajo que se está realizando en Microsoft Research para construir un reproductor de Go para ordenador.
  • Descifrando el Go por Feng-hsiung Hsu, revista IEEE Spectrum (octubre de 2007) – Por qué debería ser posible construir una máquina de Go más fuerte que cualquier jugador humano.
  • Conjunto de datos computer-go, conjuntos de datos SGF de 1.645.958 juegos