# Go en informatique

Le développement de programme informatique capable de jouer au go est un problème de l'intelligence artificielle. Ce problème est considéré comme l'un des plus complexes à résoudre, les algorithmes classiques (minimax et alpha-bêta) offrant des résultats médiocres.
Le premier programme a été écrit en 1968 par Albert Zobrist (en) comme un élément de sa thèse sur la reconnaissance des formes. Ce n'est qu'en 2015 qu'un programme AlphaGo bat pour la première fois un joueur de go professionnel, Fan Hui, champion d'Europe de go, avant de battre Lee Sedol, l'un des meilleurs joueurs au monde, en mars 2016 et Ke Jie, le meilleur joueur du monde, en mars 2017.

## Description du problème

Comme pour tous les jeux, il faut jouer un coup qui améliore sa situation et détériore celle de son adversaire. Pour estimer une situation aux échecs, une bonne estimation est de compter le nombre de pièces sur l'échiquier, en les pondérant (1 point par pion, 5 par tour...), et en ajustant la valeur trouvée par les libertés, les protections des pièces...
Cela passe par le calcul d'une fonction d'évaluation, associant les scores de chacun des adversaires à chaque nœud.
C'est difficilement réalisable au go : on ne dispose pas de fonction d'évaluation (estimation des valeurs antagonistes d'une position) ne nécessitant pas - entre autres - des capacités « humaines » de « reconnaissance de formes », l'« expérience de parties » déjà jouées et une très grande « profondeur de calcul ».
La technique d'exploration des différentes possibilités (pour chaque coup, déterminer la meilleure réponse possible, puis la meilleure réponse à celle-ci, et ainsi de suite…), plus techniquement la méthode dite minimax, échoue au go à cause de l'énorme quantité de coups plausibles, de la durée des parties et de leur complexité croissante (aux échecs, la complexité est - elle - décroissante par diminution du nombre de pièces restantes).
Le nombre de positions légales est estimé à 10$^{170}$ - sur un goban 19×19 (contre environ 10$^{40}$ aux échecs - sur un échiquier 8×8), tandis que l'arbre du jeu couvre 10$^{600}$ parties plausibles (contre environ 10$^{120}$ aux échecs).

## Histoire
### Débuts

L'augmentation de la puissance des ordinateurs n'a que très peu d'influence sur le niveau des programmes de go, et le problème du go est souvent considéré comme l'un des grands défis de l'intelligence artificielle.
Le premier tournoi entre machines a été organisé en 1984 par l'entreprise Acorn Computers et est remporté par le programmeur polonais Bronislaw Przybyla. Les huit programmes respectent les règles (à l'exception dans un cas d'une difficulté durant une bataille de ko) mais jouent « affreusement mal ».
Contrairement aux programmes de jeu d'échecs qui ont rivalisé avec les meilleurs professionnels dès les années 1990, les programmes de go n'ont commencé à se rapprocher du niveau des joueurs de go professionnels qu'en 2013. Auparavant, sur les petits plateaux de taille 9×9, les meilleurs programmes avaient atteint en 2005 le niveau des joueurs amateurs en dan, mais les techniques qui ont permis cette progression ne donnaient que des résultats mitigés sur la taille normale de plateau 19×19, et le niveau en dan est resté hors d'atteinte jusqu'à l'apparition des programmes s'appuyant sur l'algorithme de Monte-Carlo en 2006.
Avant cette date, un joueur moyen était capable de battre les meilleurs programmes et certains bons joueurs, entraînés spécifiquement, les avaient battu avec des handicaps allant jusqu'à 30 pierres, ce qui serait impossible contre un joueur humain, même très peu expérimenté. Ainsi en 1997, Janice Kim, shodan professionnelle (1er dan pro.), battait le programme HandTalk malgré un handicap de 25 pierres puis en 1998, Martin Müller, 6e dan amateur, battait Many Faces of Go malgré un handicap de 29 pierres.
Sur des goban de petite taille, les calculs sont plus simples à effectuer. En 2002, le jeu sur un goban 5×5 a été résolu par le programme MIGOS (MIni GO Solver) de Erik van der Werf, fruit de l'examen de 4 472 000 000 positions (environ 4 heures sur un P4 2,0 GHz). Sa thèse développe plus largement la résolution du go 5×5.

### Avancées techniques

Une des alternatives majeures à l'utilisation de connaissances et de recherches est l'utilisation des méthodes de Monte-Carlo. Pour cela il suffit de lister les coups possibles et pour chaque coup de jouer des milliers de parties au hasard. Le coup qui conduit au meilleur résultat pour le joueur courant est supposé le meilleur coup. L'avantage de cette méthode est qu'elle requiert peu de connaissances spécifiques mais l'inconvénient est qu'elle est coûteuse en termes de mémoire et de temps processeur. De plus, parce que les coups utilisés pour l'évaluation sont choisis au hasard, il est possible qu'un coup qui serait excellent sauf pour une réponse spécifique soit de façon erronée choisi comme un bon coup. Le résultat est un programme qui est fort d'un point de vue stratégique mais faible tactiquement. Ce problème peut être compensé en ajoutant de la connaissance à la génération de coup et une plus grande profondeur de recherche avant l'évaluation de Monte-Carlo. Parmi les programmes qui utilisent les techniques de Monte-Carlo se trouvent MoGo, Crazy Stone, Olga and Gobble.
En 2006, une nouvelle technique, upper confidence bounds applied to trees (UCT), a été développée et utilisée par de nombreux programmes sur 9×9 avec d'excellents résultats. UCT utilise les résultats des play outs joués jusque-là pour guider l'exploration tout en autorisant des séquences alternatives à être explorées. UCT et de nombreuses autres optimisations ont conduit MoGo à être l'un des plus forts programmes produits par un chercheur. Parmi les premières applications avec succès de la méthode UCT sur 19×19 on peut trouver MoGo, CrazyStone, et Mango. MoGo a gagné l'édition 2007 des Computer Olympiad et gagné un blitz sur trois contre Guo Juan, 5e dan professionnel, sur le goban 9×9. The Many Faces of Go a gagné l'édition 2008 des Computer Olympiad après avoir ajouté UCT à ses méthodes classiques de recherche.
En 2008, grâce à une parallélisation efficace, MoGo a gagné une partie (sur trois) contre Catalin Taranu, 5e dan professionnel, sur 9×9 avec des temps classiques (30 minutes pour chaque joueur). MoGo tournait sur un cluster fourni par Bull (32 nœuds avec 8 cœurs par nœud, chacun cadencé à 3 GHz). La machine n'était pas disponible durant l'un des matchs perdus. MoGo a également joué une partie sur 19×19 contre Catalin Taranu et a perdu en dépit d'un avantage de 9 pierres de handicap. Cependant MoGo était en bonne position durant cette partie et a perdu à cause d'un mauvais choix lors d'un ko. La machine utilisée pour cet évènement (l'IAGO challenge, organisé par la société « Recitsproque ») était une bonne machine mais loin des meilleurs standards de l'industrie.
Le 7 août 2008 MoGo a gagné une partie sur 19×19 face à Kim MyungWan 8e dan professionnel, avec MoGo ayant un avantage de 9 pierres de handicap. MoGo a gagné (de 0,5 point, mais cette victoire n'est pas si serrée qu'il y parait, le programme jouant la sécurité et perdant des points dès qu'il est certain de gagner). Kim MyungWan a utilisé environ 13 minutes de temps alors que MoGo en a utilisé environ 55, cependant il ne pense pas qu'utiliser plus de temps lui aurait permis de gagner. MoGo fonctionnait depuis les Pays-Bas sur un super ordinateur de 800 nœuds, chacun contenant 4 cœurs tournant à 4,7 GHz pour produire 15 Téraflops. MyungWan et MoGo ont joué un total de 4 parties à handicap et limite de temps variable, chacun en gagnant deux. Les enregistrements des parties sont accessibles sur le serveur de go KGS où Mogo a joué sous le pseudonyme MogoTitan.
En 2009, d'autres victoires contre des professionnels à des handicaps plus faibles (par des programmes tels que Crazy Stone) ont eu lieu ; de plus, Zen (programme médaille d'or aux olympiades de 2009) s'est classé de manière consistante entre 1 et 2 dan sur KGS.
Zen, en particulier, a connu ensuite une progression plus lente, mais régulière, l'amenant au début 2012 à un niveau de 4e dan sur KGS, et même de 6e dan en parties rapides ; lors d'un match-exhibition contre Takemiya Masaki, il a gagné successivement une partie à 5 pierres de handicap, puis une partie à 4 pierres.

### AlphaGo et le deep learning

En octobre 2015, le programme AlphaGo développé par Google DeepMind, combinant plusieurs techniques notamment du deep learning, a franchi une nouvelle étape que les experts pensaient ne pas pouvoir être atteinte avant de nombreuses années : il bat sans handicap Fan Hui, le meilleur joueur européen, professionnel 2e dan, par le score de cinq victoires à zéro en parties lentes et trois à deux en parties rapides$^,$.
En mars 2016, il bat Lee Sedol, joueur 9e dan, alors considéré comme un des meilleurs joueurs mondiaux, en remportant successivement les trois premières parties, puis la cinquième d'un match en cinq parties. Ce match est suivi en direct sur internet, et qualifié de moment historique.
Les performances d’AlphaGo amènent de nombreux programmeurs à tenter de développer des systèmes analogues ; ainsi, en novembre 2016, une version améliorée de Zen, Deep Zen, réussit à gagner une partie sur trois d’un match à égalité contre Cho Chikun.
Après des améliorations (corrigeant en particulier les faiblesses apparues lors du match contre Lee Sedol), AlphaGo bat, dans des parties rapides non officielles jouées début janvier 2017 sur des serveurs chinois, quelques-uns des meilleurs joueurs mondiaux (Ke Jie, Iyama Yuta, Gu Li, etc.) sur le score stupéfiant de 60 victoires à zéro ; durant ce temps, JueYi, un programme chinois utilisant les algorithmes d'AlphaGo, parvient, avec des résultats tout de même un peu plus faibles, à atteindre en mars 2017 le niveau de 10e dan sur le serveur FoxGo.
Développée en 2017 en n'utilisant aucune connaissance humaine mais uniquement à partir des règles du jeu et par auto-apprentissage, une nouvelle version, AlphaGo Zero, est encore plus compétente que les précédentes ; en décembre 2017, DeepMind en publie une version plus polyvalente encore, AlphaZero, capable de jouer également aux échecs et au shōgi à un niveau supérieur à celui des meilleurs humains ou programmes.
Après 2020, les meilleurs programmes (Fine Art (en), Golaxy, etc.), tous développés en s’inspirant des algorithmes d’AlphaGo, rendent de manière consistante deux pierres de handicap aux meilleurs professionnels, ce qui correspondrait à un niveau de 11e dan amateur et de 14 ou 15e dan professionnel ; des programmes plus faibles (mais tout de même de la force des meilleurs professionnels), tels que Leela Zero ou Katago, développés par la communauté des joueurs, tournent sur des ordinateurs personnels et même sur des smartphones, permettant désormais à tous de s’entraîner dans des conditions encore inimaginables en 2018.