Go en informatique
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Territorio.png/220px-Territorio.png)
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 et Ke Jie, le meilleur joueur du monde, en .
Description du problème
[modifier | modifier le code]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é à 10170 - sur un goban 19×19 (contre environ 1040 aux échecs - sur un échiquier 8×8)[1], tandis que l'arbre du jeu couvre 10600 parties plausibles (contre environ 10120 aux échecs)[2].
Histoire
[modifier | modifier le code]Débuts
[modifier | modifier le code]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[3]. Les huit programmes respectent les règles (à l'exception dans un cas d'une difficulté durant une bataille de ko) mais jouent « affreusement mal »[3].
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[4]. 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[5] développe plus largement la résolution du go 5×5.
Avancées techniques
[modifier | modifier le code]![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Computer-go-ratings-English.svg/220px-Computer-go-ratings-English.svg.png)
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[6]. 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[7], Crazy Stone, Olga and Gobble.
En 2006, une nouvelle technique, upper confidence bounds applied to trees (UCT[8]), 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[9]. 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[10] 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[11] a gagné une partie[12] (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 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[13]. 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[14].
AlphaGo et le deep learning
[modifier | modifier le code]En , 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[15] : 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[1],[16].
En , 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[17]. Ce match est suivi en direct sur internet, et qualifié de moment historique[17].
Les performances d’AlphaGo amènent de nombreux programmeurs à tenter de développer des systèmes analogues ; ainsi, en , une version améliorée de Zen, Deep Zen, réussit à gagner une partie sur trois d’un match à égalité contre Cho Chikun[18].
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 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[19] ; 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 le niveau de 10e dan sur le serveur FoxGo[20].
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[21] ; 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[22].
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[23] ; 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.
Notes et références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Go software » (voir la liste des auteurs).
- « Première défaite d’un professionnel du go contre une intelligence artificielle », sur Le Monde, .
- Ce nombre, le nombre de Shannon, est lui-même immensément supérieur à celui (1080) des particules de l'univers (voir « L'ordinateur battra-t-il l'homme au jeu de go ? », sur reseaux-telecoms.net (consulté le )).
- Pierre Aroutcheff, « Atari en basic », Jeux et Stratégie, no 31, , p. 20-21.
- Victoire du programme Crazy Stone sur le 9e dan professionnel Ishida Yoshio le 20 mars 2013 (cf. le site de Crazy Stone et l'article de Go Game Guru « Crazy Stone computer Go program defeats Ishida Yoshio 9 dan with 4 stones »).
- (en) AI techniques for the game of Go, Thèse développant la résolution du go sur 5x5.
- Le jeu de go et la révolution de Monte Carlo sur le site Interstices.
- « Sylvain GELLY's Home Page », sur lri.fr via Wikiwix (consulté le ).
- « UCT », sur xmp.net (consulté le ).
- http://www.cs.unimaas.nl/go4go/mango/ « Copie archivée » (version du sur Internet Archive)
- (en) « Many Faces of Go - Igowin », sur smart-games.com (consulté le ).
- https://archive.wikiwix.com/cache/20110224013531/http://www.lri.fr/~teytaud/mogo.html.
- https://archive.wikiwix.com/cache/20110224013531/http://www.lri.fr/~teytaud/crmogo.en.html.
- Sensei's Library: MoGo.
- (en) Détails du match sur le site Gogameguru.
- (en) A. Levinovitz, The mystery of Go, the ancient game that computers still can’t win. Wired Magazine (2014).
- Interview de Fan Hui à ce sujet.
- « Jeu de go : victoire finale de l'intelligence artificielle sur le score de 4 à 1 », Le Monde.fr, (lire en ligne, consulté le )
- La revanche de l’humain, sur Science et Avenir, 11 novembre 2016.
- (de) Diagrammes interactifs (mais non commentés) de ces parties.
- (en) Annonce de cette promotion sur xinwengolife.
- David Silver, Julian Schrittwieser, Karen Simonyan, Ioannis Antonoglou, Aja Huang, Arthur Guez, Thomas Hubert, Lucas Baker, Matthew Lai, Adrian Bolton, Yutian Chen, Timothy Lillicrap, Hui Fan, Laurent Sifre, George van den Driessche, Thore Graepel et Demis Hassabis, « Mastering the game of Go without human knowledge », Nature, vol. 550, no 7676, , p. 354–359 (ISSN 0028-0836, DOI 10.1038/nature24270, lire en ligne, consulté le )
- (en) David Silver, Thomas Hubert, Julian Schrittwieser, Ioannis Antonoglou et al., « Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm », .
- (en) Brian Wang, « Tencent Fine Art Artificial Intelligence Go program beats top human players after giving two stone handicap », nextBIGfuture, (lire en ligne)
Voir aussi
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]- Jeu vidéo de go
- Go Text Protocol : interface de jeu utilisée par les programmes.
- Exemples de programmes :
- Recherche arborescente Monte-Carlo