Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Leela Chess Zero, un moteur d'échecs open source intelligent, bat désormais Stockfish,
Le moteur d'échecs classique le plus puissant au monde

Le , par Bill Fassinou

68PARTAGES

8  0 
Les entreprises et les organisations spécialisées dans l’intelligence artificielle (IA) ont énormément misé sur les jeux vidéo ces dernières années pour entraîner leurs différents algorithmes. DeepMind, une filiale de l’Alphabet, et OpenAI sont deux des plus grandes entreprises dans le monde qui conçoivent des agents IA bien entraînés et capables de battre les joueurs professionnels dans plusieurs jeux vidéo (les échecs, Go, Dota 2, StarCraft II, etc.). Leela Chess Zero s’est également inscrit dans le lot depuis l’année dernière. Il s'agit d'un moteur d’échecs open source et capable de rivaliser avec les meilleurs moteurs d’échecs. Le moteur est publié sous la licence GNU v3.

Un moteur d'échecs contient le code informatique, l’algorithme, qui calcule le meilleur coup dans une position donnée. Ces programmes sont différents entre eux, ont un style de jeu paramétrable, un nom et des systèmes d’évaluations spécifiques, en bref ils ont une personnalité. Il en existe de tout niveau et ils peuvent être commerciaux, open source ou libres. Il faut cependant distinguer l'interface graphique du moteur d'échecs. Cette interface utilisateur (ou chess GUI) est le programme qui va accueillir, faire fonctionner ces moteurs et gérer l'environnement visible par l'utilisateur (échiquier, information issue du calcul des modules, évaluation de la position, utilisation des tablebases, profondeur de la recherche, animation des variantes, etc.).

Ces interfaces permettent aussi aux moteurs de se rencontrer entre eux lors de tournois. Un autre avantage est que les programmeurs peuvent se concentrer sur les performances de leur moteur sans devoir gérer la représentation visuelle de l'échiquier. Ces interfaces peuvent être XBoard/WinBoard, Arena, ou Chessbase (commercial). Ainsi, Leela Chess Zero (LCZero ou LCZ) a été présenté comme étant un moteur d’échecs libre et open source. Il a été développé par Alexander Lyashuk et Gary Linscott qui est aussi un développeur du programme Stockfish. Leela Chess Zero est inspiré du moteur de go Leela Zero, qui est lui-même basé sur le projet AlphaGo Zero de DeepMind.

Leela Chess Zero est un moteur d’échecs conforme aux normes UCI conçu pour jouer aux échecs via un réseau de neurones. Comme Leela Zero et AlphaGo Zero, Leela Chess Zero ne connaît que les règles du jeu et rien de plus. Leela Chess Zero est entraîné sur un site web dédié. Quelques mois de développement et d'entraînement on suffit à Leela Chess Zero pour atteindre le niveau d'un GMI (signifiant titre de grand maître international (GMI), créé à partir de 1950, utilisé aussi bien au jeu d'échecs qu'au jeu de dames). Il surpasse de ce fait des versions précédentes de Rybka, Stockfish ou Komodo, également de puissants moteurs d’échecs, tout en analysant moins de positions que ces programmes.


Selon la description qui est faite du moteur, cette performance est issue du fait qu’il utilise la recherche arborescente Monte-Carlo (Monte Carlo tree search (MCTS)). En avril 2018, Leela Chess Zero est devenu le premier moteur basé sur un réseau de neurones à entrer dans le Top Chess Engine Championship (TCEC) pendant la saison 12 dans la plus petite division, la division 4. Le moteur ne réussit pas bien : sur 28 parties il en gagne une, en annule deux et perd le reste, sa seule victoire survenant après le crash de son opposant Scorpio 2.82. Cependant, il est amélioré rapidement et, en juillet 2018, il se place 7e sur 8 au Championnat du monde d'échecs des ordinateurs.

Dans la saison 13 du TCEC, il gagne la division 4 avec un record de 14 victoires, 12 nulles et 2 défaites. Il est qualifié pour la division suivante et termine deuxième à égalité avec Arasan mais ne va pas plus loin (la règle étant qu'en cas d'égalité, les résultats entre les moteurs concernés priment). Son record dans la division 3 est de 7 victoires, 17 nulles et 3 défaites. En août 2018, il avait ainsi joué contre lui-même plus de 23 millions de parties. Leela Chess Zero a par la suite été en mesure de jouer contre les meilleurs moteurs du monde au Chess.com Computer Chess Championship (CCCC) en 2018.

À la fin du tournoi, Leela Chess Zero s'est placé à la 5e place sur les 24 participants. Les huit premiers se qualifiant au round 2, Leela Chess Zero se place alors quatrième. Leela Chess Zero a ensuite gagné un match de 30 parties contre Komodo pour conquérir la 3e place du tournoi. Parallèlement, Leela Chess Zero a participé à la coupe TCEC, un nouvel événement dans lequel des moteurs peuvent jouer contre d'autres moteurs issus de divisions différentes. Leela Chess Zero a défait des moteurs appartenant à la plus haute division comme Laser, Ethereal ou Fire avant de se faire éliminer par Stockfish en demi-finale. Ensuite, en octobre et novembre 2018, Leela Chess Zero a participé au Chess.com Computer Chess Championship Blitz Battle et a fini 3e derrière Stockfish et Komodo.


En décembre de la même année, Leela Chess Zero participe à la saison 14 du TCEC. Elle domine les divisions 4, 3 et 2 en finissant facilement première. En première division, Stockfish a dominé tandis que Houdini, Komodo et Leela se sont disputé la seconde place. Lors de la ronde finale, Leela Chess Zero devait faire un match nul contre Stockfish pour terminer seul deuxième. Ce qu’il fit et se qualifie donc pour la finale contre Stockfish. En février 2019, Leela Chess Zero a remporté son premier tournoi majeur en battant Houdini lors de la deuxième coupe TCEC, sans perdre aucune partie du tournoi.

À l’entame du mois de mars 2019, Leela Chess Zero a gagné un match (bonus de fin de la saison 14) contre Stockfish en rapide sur 100 parties. Une nouvelle version de Leela Chess Zero, la version 0.21.2, est disponible depuis juin 2019 et disponible sur GitHub. Cette version inclut les changements suivants :

  • des optimisations pour les cartes GTX 16xx (cudnn-fp16 fonctionne maintenant pour elles, même si cela n'améliore pas autant les performances que pour les cartes RTX) ;
  • la fonctionnalité « Post-it » est activée par défaut : cela rend le jeu de LC0 meilleur quand il voit un coéquipier quelque part pendant la recherche ;
  • la formule Centipawn a été mise à jour : LC0 affichera désormais des valeurs d'évaluation plus similaires à celles affichées par les autres moteurs ;
  • l’optimisation pour un réseau neuronal plus large (plus de filtres) pour de futures exécutions (peut-être test60).

Les sources du moteur d'échecs Leela Chess Zero et la configuration requise sur chaque plateforme pour le tester sont disponibles sur GitHub. Vous pouvez y accéder pour en savoir plus sur Leela Chess Zero. Le moteur dispose aussi désormais d’une interface graphique dénommée Nibbler inspirée de l’interface Lizzie Go. « Bien que Nibbler soit un travail en cours, il est très utilisable et a reçu de nombreux commentaires pour la plupart positifs », a déclaré son développeur.

Sources : LC0, GitHub

Et vous ?

Qu'en pensez-vous ?

Voir aussi

AlphaStar, l'agent IA de DeepMind pour le jeu StarCraft II, jouera anonymement contre des joueurs humains sur battle.net

DeepMind de Google : son IA a atteint une « performance humaine » dans une version modifiée de Quake III Arena, un jeu de tir en ligne

AlphaStar, l'IA de DeepMind qui a battu deux des meilleurs joueurs de Starcraft II. A-t-elle combattu à la loyale ou disposait-elle d'avantages ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de onilink_
Membre expérimenté https://www.developpez.com
Le 23/07/2019 à 22:06
C'est mal avoir compris le fonctionnement des réseaux de neurones. Déjà un réseau de neurone c'est équivalent à une grosse fonction, pas une base de données.
L'idée c'est que plutôt qu'écrire cette fonction toi même, à la main, tu passes par un algorithme qui va minimiser les erreurs de la dite fonction en l’entraînant sur des données d'entrée associées à des données de sortie.
La ou il faut bien faire attention, c'est que justement, le but n'est pas de faire du sur-apprentissage (c-a-d mémoriser les informations), mais faire de l'extrapolation qui sera efficace sur des entrées jamais vues lors de l'apprentissage.

Le sur-apprentissage est une des premières choses qu'on apprend a éviter quand on fait du deep learning.
Pour cela la règle est simple:
- on entraîne le réseau de neurones sur beaucoup de données, mais jamais sur des données identiques
- on vérifie l'efficacité du réseau sur un "test set", un ensemble de données qu'il n'a jamais vu (et si le réseau est bien entraîne, il aura des résultats aussi bon sur ce set la que sur le training set)

Si un réseau de neurone se contentait d'apprendre par cœur le "training set", les données d’entraînement, cela n'aurait aucun intérêt.

D'ailleurs, les réseaux de neurones ont une taille arbitraire définie à la création du modèle. Bien qu'il n'y ai pas de limite (à part au niveau des performances), un modèle est généralement de la taille des quelques méga octets (loin des To des logiciels qui mémorisent tous les coups possibles). Tu peux avoir des modèles très performants et très légers, cela dépend en fait surtout du modèle (sa structure), de la qualité des données d'apprentissage, mais surtout de l'algorithme d'apprentissage.

La taille du modèle n'évolue pas au cours de l'apprentissage. Que tu fasses 1 ou 10 millions de parties, la "mémoire" de LCZ gardera la même taille: celle qui a été définie par son modèle.

Bref, dans l'idée c'est proche de ce qu'un cerveau fait, c-a-d une abstraction et une extrapolation à partir de données d'apprentissage limités.

Et franchement, 1 million de parties, 10 millions de parties... c'est ridicule comparé aux combinaisons possibles d'un jeu d’échecs, qui sont de l'ordre de 10120 ...
2  0 
Avatar de onilink_
Membre expérimenté https://www.developpez.com
Le 23/07/2019 à 18:12
Je ne suis pas du tout d'accord, le réseau de neurone de LCZ ne contient pas des parties jouées, mais une abstraction de comment jouer...
C'est le principe du deep learning et des réseaux de neurones, s'il s'agissait de stocker de l'information bêtement cela ne servirait a rien.
De plus les algorithmes qui se basent sur ce principe existent (et qui ont donc résolu les échecs), et la database pèse lourd, très lourd (ordre de plusieurs To).
Ce n'est pas du tout le cas ici.

Si on devait partir sur ce principe, les humains n'auraient pas le droit non plus de participer, étant donné qu'ils ont une mémoire.
2  1 
Avatar de egann538
Membre habitué https://www.developpez.com
Le 24/07/2019 à 17:50
@eric44000: Tes interrogations, tout comme tes définitions sont étranges. Reconnais au moins que LCZ est un moteur de jeu d'échec...

Tu parles de "moteurs classiques" mais aujourd'hui les moteurs à base de RNN sont justement les moteurs classiques, et je ne crois pas qu'un moteur de jeu d'échec sans une partie mémoire/entrainement se soit mesuré à des grand maîtres avec succès (mais je ne suis pas spécialiste). D'ailleurs même la méthode de Monte-Carlo repose sur des connaissances acquises précédemment, qui peut être autant associée à une mémoire que les poids de synapses, puisqu'elle est basée sur des techniques probabilistes.
1  0 
Avatar de eric44000
Membre à l'essai https://www.developpez.com
Le 23/07/2019 à 19:04
@onilink_
Si bien sûr qu'un réseau de neurones garde en mémoire le résultats des matchs. Prenons LCZ vierge (cad sans entrainement) et clonons le. Prenez un exemplaire et entrainez-le sur 1 million de parties puis entrainez le 2eme exemplaire sur 10 millions de parties. D'après-vous qui devrait être le plus performant ? A l'évidence celui qui aura été entrainé sur le plus grand nombre de confrontations, non ? Et pourquoi ? N'y a t-il pas une sauvegarde quelque part de ces entrainements ?
Alors qu'un moteur, vous pouvez le cloner autant de fois que possible et le faire jouer à l'infini, il ne garde rien.
0  0 
Avatar de eric44000
Membre à l'essai https://www.developpez.com
Le 24/07/2019 à 13:53
@onilink_
Mon propos n'est pas de décrire le processus de mémorisation de l'apprentissage profond qui n'est pas le sujet (dans ce cas j’aurais plutôt évoqué le calcul des poids). Ce que je dis c'est que LCZ utilise du temps de calcul pour mémoriser son apprentissage (et peu importe le processus interne de deep learning) et que ce temps n'est pas pris en compte lors des tournois.
J'ai pris l'exemple de deux exemplaires de LCZ avec un nombre d'apprentissages différents pour montrer plus facilement le biais ou dire que ce ne serait pas équitable de les faire jouer ensemble.
0  0 
Avatar de egann538
Membre habitué https://www.developpez.com
Le 24/07/2019 à 15:27
@eric44000: Un moteur de jeu d'échecs est un programme permettant de déterminer le mouvement à jouer au prochain tour en fonction de l'état de la partie. Point. Je ne vois pas en quoi LCZ ne répond pas à la définition.
0  0 
Avatar de eric44000
Membre à l'essai https://www.developpez.com
Le 24/07/2019 à 16:51
@egann538
Parce qu'il utilise des ressources pour mémoriser les meilleurs coups (via l'ajustement des poids). Il se fabrique un système neuronal (ou une vision du jeu) qui lui permet par la suite d'être plus économe lors d'un match. Le temps de calcul de ces poids est un stock d'énergie à priori que n'a pas un moteur classique.
Mais de là à définir de combien d'énergie un moteur classique devrait profiter pour être équitable, cela me semble plus problématique. Des comptes d'apothicaires seraient tous sujets à caution ou polémiques. Un moteur classique devrait-il bénéficier d'une base de parties ou avoir un temps à la pendule supplémentaire ? Et de combien ? Personnellement je pense que LCZ et un moteur classique ne doivent pas se confronter, tout comme l'homme et l'ordinateur. Depuis bien longtemps, il n'y a plus de confrontations humain vs moteur, cela n'a plus aucun sens.
0  0 
Avatar de onilink_
Membre expérimenté https://www.developpez.com
Le 24/07/2019 à 17:59
Citation Envoyé par eric44000 Voir le message
@onilink_
Mon propos n'est pas de décrire le processus de mémorisation de l'apprentissage profond qui n'est pas le sujet (dans ce cas j’aurais plutôt évoqué le calcul des poids). Ce que je dis c'est que LCZ utilise du temps de calcul pour mémoriser son apprentissage (et peu importe le processus interne de deep learning) et que ce temps n'est pas pris en compte lors des tournois.
J'ai pris l'exemple de deux exemplaires de LCZ avec un nombre d'apprentissages différents pour montrer plus facilement le biais ou dire que ce ne serait pas équitable de les faire jouer ensemble.
Ça n'a aucun sens de prendre en compte ce temps de calcul. Ce serait aussi idiot que de compter les années de dev derrière Stockfish.
L'idée du machine learning, c'est d'automatiser le process pour créer "l'algorithme" que tu veux.
Toi tu considères le réseau de neurones de LCZ comme une mémoire, mais on peut voir ça comme un programme. Surtout qu'au vu de sa structure (d'abstraction), on est plus proche d'un réel programme que d'une bête mémoire.

D'ailleurs, rien n’empercherais de faire du machine learning qui va générer un code assembleur capable de jouer aux échecs, donc de générer un programme tout a fait standard, sans réseau de neurones.
Et dans ce cas la, ça n'aurait pas plus de sens de prendre en compte le temps qu'il a fallu pour obtenir un programme efficace que de prendre le temps qu'il a fallu pour écrire Stockfish.
La différence c'est que dans un cas le processus se fait de manière automatisée, et dans l'autre c'est des humains qui écrivent le programme... (et encore, ce même code sera tellement transformé par le compilateur qu'a la fin le programme assembleur généré ne sera même pas lisible par les même personnes qui ont écrites le programme original).
0  0 
Avatar de rt15
Membre confirmé https://www.developpez.com
Le 25/11/2019 à 15:38
Citation Envoyé par onilink_ Voir le message
De plus les algorithmes qui se basent sur ce principe existent (et qui ont donc résolu les échecs), et la database pèse lourd, très lourd (ordre de plusieurs To).
Déterrage de topic pour ceux qui seraient potentiellement choqués comme moi de lire que les échecs ont été résolus.
En effet ce serait un événement majeur dans l'histoire de l'informatique qui impliquerait une percée fulgurante par rapport à ce qui se fait actuellement.

Mais non, après vérification, les échecs ne sont toujours pas résolus, et on devrait être tous mort bien avant que ce ne soit le cas.
(je veux même bien parier que l'être humain ce sera "auto-détruit" bien avant de résoudre les échecs)
Dormez bien braves gens.
0  0 
Avatar de eric44000
Membre à l'essai https://www.developpez.com
Le 23/07/2019 à 16:03
LCZ n'est pas un moteur d'échecs. Un moteur calcule le meilleur coup en évaluant les positions à x coups (via la méthode de Monte-Carlo) et le fait à chaque partie. LCZ s'entraine au préalable avant qu'une partie est commencée. Il garde en mémoire le résultat de millions de parties jouées. Pour être équitable, il faudrait qu'un moteur puisse garder en mémoire des millions de parties jouées en utilisant le même temps de calcul que LCZ. En résumé, le résultat est biaisé par le temps de calcul passé. LCZ utilise un temps de calcul à priori qui n'est pas comptabilisé lors d'une partie.
0  4