Chessterfield - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Chessterfield CL i5a, moteur neuronal





18 ans avant AlphaZero, 13 ans avant Rhetoric, Matthias Lüscher avait exploré la piste du réseau neuronal à apprentissage, le fameux deep learning. Utilisé depuis peu pour le go et les échecs, ces techniques ont permis de spectaculaires percées. Mais à la fin du siècle, on savait à peine ce que c'était. Matthias Lüscher travaillait littéralement à contre-courant, sur la piste d'avenir.  



 

La découverte de ce vieux moteur d'échecs oublié de tous a été une bonne surprise. Je cherchais des joueurs faibles, entre 1000 et 1500 Elo, pour offrir des adversaires à la portée de joueurs enfants et/ou débutants quand je l'ai débusqué dans un classement de vieux moteurs. Par chance, j'ai pu trouver à télécharger tous les fichiers.


L'auteur avait doté Chessterfield d'un petit réseau de neurones artificiels à trois couches, un classique perceptron. Parallèlement il a conçu un module d'apprentissage, livré avec le moteur, chargé de constituer le fichier de "poids" pour le réseau neuronal, à partir de la lecture de plusieurs dizaines de milliers de parties. Contrairement à Rhetoric, livré avec un unique fichier de poids, les utilisateurs de Chessterfield peuvent donc créer facilement leur propre fichier de poids

La première version de Chessterfield a été diffusée en avril 1998 et la dernière publiée date de mars 2000. L'auteur a vite abandonné son programme, qui n'avait pour but que de valider un concept d'intelligence artificielle à base de réseau neuronal. Avec le Elo de 1550 mesuré à l'époque - le niveau d'un bon joueur de club, quand même - il démontrait la validité du concept mais soulignait aussi son principal défaut : une évaluation basée sur un réseau neuronal est très lente ; elle exige beaucoup de puissance-machine et de mémoire vive pour jouer correctement. Les capacités des machines de l'époque ne lui laissaient aucune chance de s'imposer face aux moteurs algorithmiques. Mais aujourd'hui, nous avons les machines à sa hauteur.


Plus fort que prévu

C'est l'augmentation considérable de la puissance des ordinateurs grand public qui explique la spectaculaire augmentation de la force de Chessterfield que j'ai rapidement observée. L'un des fichiers de poids que j'ai obtenu en lui faisant ingurgiter plus de 80.000 parties de grands maîtres donne au moteur une force voisine de 2000 Elo, soit un bon énorme de 450 Elo par rapport à la mesure effectuée en 2000 !
J'ai pu vérifier que le fichier de poids fourni par l'auteur est de force pratiquement équivalente. Le gain découle donc uniquement de la capacité des matériels.  Malgré tout,  la réflexion de Chessterfield reste lente ; pour obtenir un bon niveau, il faut lui laisser du temps. C'est dans les parties de durée moyenne ou longue qu'il s'en sort le mieux. En parties rapides, de type blitz, son niveau chute beaucoup. Toutefois, j'ai remarqué que les fichiers de poids constitués avec 30.000 parties ou moins jouaient mieux les parties blitz que ceux ayant été obtenus avec 70.000 parties. Là encore rien d'étonnant. C'est vrai aussi pour Leela Chess Zero : un fichier de poids plus léger rend le moteur moins "profond" mais plus alerte.



Téléchargement et installation


On trouve tous les éléments du moteur sur le site officiel mais uniquement en version Winboard. Ayant converti le programme en moteur UCI grâce à Wb2Uci, le mieux est de vous procurer Chessterfield sur mon espace Mega.


Télécharger Chessterfield en version UCI ?

L'archive contient :
"Chessterfield UCI.exe", l'exécutable pour lancer le moteur en version UCI
"ChessterfieldCL.exe", exécutable de la version Winboard
"network.dat", fichier de poids par défaut, réalisé par Matthias Lüscher à partir de jeux de moteurs.
"
Wb2Uci.eng", fichier de commandes de Wb2Uci.
"chesterfield.jpg", image iconique.
➤Un dossier "data" contenant des fichiers de fin de parties.

Le moteur est prêt à l'emploi.


Installation dans Arena

Menu "Modules" > "Installer nouveau module" et allez chercher le fichier "Chessterfield UCI.exe".
Petit problème :
Arena considère le moteur comme un Winboard. Il faut lui préciser manuellement qu'il s'agit bien d'un UCI : menu "Modules" > "Gérer". Choisissez le moteur dans la liste et affichez l'onglet "Détails". Dans le champ "Type", sélectionnez "UCI".
A noter : si vous sélectionnez "ChessterfieldCL.exe", le moteur tournera très bien, mais en version Winboard.

Installation dans Lucas Chess

Menu "Outils" > "Moteurs" > "Moteurs externes" ; bouton "Nouveau" et allez cherchez "Chessterfield UCI.exe".
Lucas Chess n'acceptant que les moteurs UCI, y faire tourner Chessterfield est une possibilité nouvelle dont nous ne devons pas nous priver.

Installation dans Crafty Chess Interface

Pour CCI, mieux vaut utiliser la version Winboard, en liant l'interface au fichier "ChessterfieldCL.exe". CCI  étant conçu pour les moteurs Winboard, il  utilise le programme Polyglot pour rendre les moteurs UCI utilisables. Il est donc absurde de lui faire lire la version UCI.
En résumé : menu "Moteurs" > "Ajouter nouveau moteur" et allez chercher "ChessterfieldCL.exe".

Installation dans Mayura Chess Board

Menu "Engine" > "Change engine" > "Add or remove engine". Puis "Add" et allez chercher l'exécutable "Chessterfield UCI.exe". La petite interface Mayura accueille le vieux moteur neuronal sans soucis. Il n'en va pas de même de Scid vs Pc, qui a beaucoup de mal avec les moteurs UCI convertis par Wb2Uci. Chessterfield ne fait pas exception : le moteur plante généralement avant la fin de la partie.

Comme indiqué plus haut, Chessterfield peut fonctionner avec une grande variété de fichiers de poids. Celui que fournit l'auteur est fort mais il a été constitué à partir de jeux de moteurs d'échecs. Il me parait beaucoup plus intéressant de constituer les fichiers de poids à partir de jeux de grands maîtres - ce qui devrait logiquement procurer au moteur un style plus humain. Chessterfield ne permettant pas de choisir un fichier de poids au démarrage, le mieux est de créer un nouveau dossier pour chaque nouvelle personnalité et d'y copier tous les fichiers, sans oublier le répertoire "data" contenant les données de fin de parties.

A noter : vous trouverez sur le site officiel, outre le module d'apprentissage, les sources du moteur ainsi que
deux fichiers de poids alternatifs: celui de John T. Grant, et celui d'Arturo Ochoa.


Comment utiliser l'utilitaire d'apprentissage ?

Plutôt que d'intégrer le module d'apprentissage à son moteur, Matthias Lüscher a préféré développer une application séparée*. L'avantage, c'est la simplicité. Il suffit de rassembler toutes les parties dans un dossier, d'y copier l'exécutable "chessterfieldEN" avec  le fichier de poids vierge et de le lancer. Vous pouvez télécharger ce module soit sur le site officiel, soit sur mon espace Mega.

Télécharger le module d'apprentissage chessterfieldEN ?

Attention, rustique ! C'est une simple application "console", à laquelle vous devez donner un à un le nom (extention .pgn comprise), sans vous tromper, des recueils de parties contenus dans votre dossier. Par exemple, "karpov.pgn", "carlsen.pgn", "Anand.pgn", etc (inutile de mettre les majuscules).
Une fois le stock épuisé, vous écrivez "no" à la place d'un dernier nom de fichier pgn et vous lancez le travail. Quand elle a terminé de traiter toutes les parties que vous lui avez donné, l'application console crée un nouveau fichier de poids, appelé "network.dat", qui fait entre 800 et 850 Ko, jamais plus.
Sur une machine de bureau de puissance assez moyenne (processeurs rapides mais deux coeurs et 4 Go de ram seulement), j'ai pu lui faire avaler 50.000 parties en moins de 3 heures.



Important : l'application console n'est pas capable d'ajouter un nouveau travail au contenu d'un précédent fichier network.dat. Il écrase l'ancien contenu et en produit un nouveau. Pour obtenir un bon fichier de poids, il faut donc lui donner un maximum de parties à ingurgiter en une seule fois ! C'est son plus gros défaut.

* L'auteur a développé une application permettant à Chessterfield d'utiliser l'interface Winboard pour apprendre en jouant contre lui-même ou contre d'autres moteurs ;  mais il l'a fait disparaître du package fourni sur son site.


Éviter les plantages

Il arrive que le module d'apprentissage bute sur une partie. C'est très rare mais c'est vraiment ennuyeux car il est très difficile d'identifier la partie en cause. D'autant plus que cela peut provenir d'un caractère non-visible présent dans n'importe quel champ.
J'ai utilisé plusieurs techniques pour débusquer les fautives et limiter le risque. En voici trois :


Constituer des collections de parties par joueur, afin d'éviter d'avoir plus de 4 ou 5000 parties par Pgn. On les teste chacune séparément en lançant une fausse opération d'apprentissage. Le module affiche des séries de petits points et c'est durant cette étape qu'il plante, s'il y a une partie à problème. Une fois que la phase des "petits points" est passée, on est sûr que le Pgn est bon et on le met de côté.

Utiliser les capacités de maintenance de Scid v PC : lorsqu'on rencontre un problème avec un Pgn, l'ouvrir dans Scid vs PC et demander à l'outil de maintenance de vérifier les parties. Il arrive qu'il trouve une partie défectueuse ou une simple position perdue au milieu de parties complètes.  Supprimer au passage tout ce qui n'est pas utile au module d'apprentissage : tag, commentaires, variantes... Sauvegarder en Pgn et re-tester aussitôt.

Astuce avec le module de création de bibliothèques .bin de Lucas Chess : lancer depuis Lucas Chess une opération de création de bibliothèque d'ouvertures .bin. La méthode :

1/ Charger une base Pgn dans Lucas Chess : "outil" > "visualiseur Pgn" >"lire le pgn"
2/ Depuis la liste des parties du pgn faire : "Utilitaires" > "Répertoire Polyglot" > "Créer un répertoire"
3/ Un Widget s'ouvre. Ici il faut :
►Créer un fichier vide avec un nom quelconque.
►Mettre la profondeur d'exploration en 1/2 coups à 2 (par défaut 40), pour que ce soit rapide.  
Ne changer aucun autre paramètres et lancer l'opération. Si elle arrive à terme, c'est que LC n'a rien trouvé. S'il trouve des erreurs dans une partie, il vous indique son numéro d'ordre dans le Pgn. La supprimer et recommencer jusqu'à ce que LC ne trouve plus d'erreur. Ne pas sauvegarder la bibliothèque bien sûr. Elle est quasiment vide. N'oubliez pas de sauvegarder le Pgn, par contre...



Mes fichiers de poids

Chessterfield possède déjà au moins trois personnalités différentes : celle de l'auteur, celle de Grant, celle d'Ochoa. A présent il y aussi les cinq miennes : "Vieux maître", "Jeune maître", "Chesster Offensif", "MiniPolgar" et "Petit-Shirov" (voir plus bas).
On peut en créer autant qu'on veut mais on ne peut pas comme avec Rodent manipuler avec finesse des quantités de paramètres pour obtenir un résultat bien précis. On peut cependant poursuivre plusieurs objectifs intéressants:


1/ Obtenir le profil le plus fort possible, ce qui suppose je suppose de faire ingurgiter au moteur plus que les 72000 parties que j'ai fourni à la dernière version de "Jeunes Maître", le plus fort des huit. Malheureusement, le module d'apprentissage devient instable lorsque les quantités dépasse 60.000 parties.
2/ Obtenir un jeu typé. C'est ce que j'ai fait pour Chesster Offensif, joueur tactique et prompt au sacrifice. Ou avec Vieux maître, qui joue comme au 19eme siècle. On pourrait aussi, rassembler les parties de joueurs positionnels et très forts en défense, tel que Kortchnoï ou Pétrossian par exemple, pour obtenir un joueur ultra-défensif.
3/ Imiter le style d'un joueur, en proposant ses parties au module d'apprentissage. Malheureusement, les jeux ne sont jamais disponibles en quantité suffisante pour donner un fichier de poids de force convenable. J'y suis parvenu en trichant, mais les limites sont vite atteintes.

Vous trouverez ci-dessous la genèse de mes fichiers de poids et les méthodes que j'ai utilisé pour les obtenir. Ca vous donnera peut-être quelques
idées.  




"Jeune maître"

L'idée était d'obtenir le moteur le plus puissant en lui proposant autant de parties possible de GMI contemporains. Le premier fichier contenait 81.000 parties, mais les Carlsen jouant avec les Anand,  les Anand avec les Caruana et les Caruana avec les Carlsen, il y avait forcément beaucoup de parties en commun.  J'ai alors utilisé Scid vs PC pour éliminer ces doublons. J'ai obtenu un Pgn de 62.000 parties sans aucun doublon des 25 plus forts joueurs de la dernière génération -  parmi lesquels quelques français.  J'ai obtenu ainsi un fichier de poids qui s'est avéré plus fort que tous les autres fichiers disponibles, y compris celui de l'auteur (voir plus bas). Naturellement je l'ai appelé "Jeune maître". Il était assez bon, mais j'ai décidé de tenter de l'améliorer encore un peu.  J'ai refait une sélection de parties de 40 GMI, tous situés dans le classement des 100 premiers joueurs mondiaux. Les 30 premiers y sont tous : Carlsen, Caruana, Liren, Giri, Népomniatchi, Vachier-Lagrave, Mamedyarov...  J'ai rajouté quelques joueurs moins bien classés actuellement mais au jeu particulièrement intéressant :  Gelfand (50eme), Morozevich (88eme) et Shirov (78eme).
C'est à cette ocassion que j'ai remarqué à quel point l'élite mondiale des échecs a rajeunie. Mais où sont passés les anciens ?
J'ai rassemblé environ 120.000 parties ; avec l'élimination des doublons, le stock est tombé à 72.000. Avec 10.000 parties de plus, une meilleure sélection et une élimination plus rigoureuse des doublons, la nouvelle version devait logiquement être plus forte. Pour être honnête, ce n'est pas flagrant, au vu des résultats des nombreuses parties que je lui ai fait jouer contre la première version. Le nouveau "Jeune maître" peine à prendre nettement l'avantage sur son prédécesseur. Il y a un gain mais il est assez modeste : de l'ordre de 20 ou 30 Elo.

Télécharger Jeune maître v2 ?


"Vieux maître"


Une autre idée m'est venue : réaliser un fichier de poids à partir de parties de joueurs du 18eme et du 19eme siècle. En grattant un peu partout j'ai pu rassembler dans un unique pgn 30000 parties d'avant 1910, sans doublon. D'où son nom : Vieux maître. Tous les joueurs un peu connus y sont passés mais il y a aussi beaucoup de parties de joueurs totalement inconnus.

Évidemment il est moins fort que les autres fichiers de poids. Disons 1800 Elo. Parce qu'il y a beaucoup moins de parties, parce que le niveau moyen est plus faible et parce que même les meilleurs joueurs n'avaient pas la science des échecs dont nous disposons aujourd'hui.
Evidemment, il joue à l'ancienne, sortant vite ses pièces majeures, avec une moindre préoccupation de déploiement du jeu et de préservation de la position.  C'était le but ! En revanche, le nombre de parties sélectionnées étant assez moyen, Vieux maître est assez bon en parties rapides.

Pour faire bonne mesure, j'ai aussi créé avec ces mêmes 30000 parties anciennes une bibliothèque d'ouvertures au format Abk d'Arena. A utiliser avec Vieux maître, ce qui parachèvera la ressemblance avec le style d'avant 1910. Cette bibliothèque contient 480.000 coups, sur une profondeur de 40 1/2 coups.

Télécharger le fichier de poids "Vieux Maître" et sa bibliothèque ?

Important : Les archives des nouvelles personnalités contiennent l'exécutable UCI, le réseau neuronal, le fichier de commandes Wb2Uci et, éventuellement, une bibliothèque d'ouvertures. Rassemblez le tout dans un même répertoire et ajoutez-y le dossier de finales "data" ainsi que le fichier "ChessterfieldCL.exe". La nouvelle personnalité sera alors prête à l'emploi.

"Chesster offensif"

L'idée était ici de collecter les parties de joueurs tactiques et offensifs, coutumiers des gambits audacieux et des combinaisons complexes. J'ai sélectionné 11 joueurs - dont trois anciens romantiques - correspondant plus au moins à ce critère : Anderssen, Karparov, Khalifman, Marshall, Morozevich, Nakamura, Polgar, Shirov, Sutovski, Tal et Topalov.
Pour ne pas laisser le jeu des adversaires contaminer le style tactique-offensif recherché, je n'ai retenu que les parties gagnantes ou nulles – ce qui devrait logiquement minorer leur apport. Au total, il me restait un peu plus de 40.000 parties.



Attention monsieur Pachman, Mikhaïl ne vas pas rester tranquille longtemps...

Chesster Offensif est nettement moins fort que Jeune maître. Son niveau se situe autour de 1800 Elo. Il fallait s'y attendre. Le nombre de parties était un peu faible et les styles de jeu risque-tout font naturellement perdre beaucoup de points de Elo. J'espérais mieux mais il joue de la manière prévue. J'ai fait analyser par Lucas Chess une vingtaine de parties parmi la cinquantaine que je lui ai fait jouer et LC confirme que la complexité de son jeu est élevée, le dynamisme et l'activité des pièces également. Le style est très faiblement positionnel (26%) et la facilité à l'échange extrêmement élevée. C'est sympa, si l'on est assez faible pour se contenter de 1800 Elo (ce qui est mon cas), d'avoir un adversaire qui déménage plutôt qu'un champion de la position à la Karpov.
Si vous envisagez de l'utiliser, offrez-lui la bibliothèque "Kasparov Opening Book for Arena.abk", réalisée à partir des ouvertures de Kasparov lui-même. utilisable avec Arena.

Télécharger ''Chester offensif'' et sa bibliothèque d'ouvertures ?



"MiniPolgar"

Utiliser Chessterfield pour simuler un joueur particulier est beaucoup plus délicat. Il est capable de joueur à une force de 2000 Elo, avec un fichier de poids tiré de 60 à 70.000 parties bien choisies. Malheureusement il est impossible de rassembler autant de parties d'un même joueur. Pour Judit Polgar, je suis arrivé à en trouver 13.000 en fouinant partout et en raclant littéralement les fonds de tiroir. J'ai récupéré même ses parties de jeunesse, les parties de ses tournois blitz et les parties de confrontations d'importance secondaire.  
C'était malgré tout encore insuffisant pour obtenir un fichier de poids assez fort. J'ai donc enrichi la collection de 14.500 parties uniquement gagnantes de huit joueurs proches du style tactique-offensif de Polgar : Shirov, Tal, Khalifman, Morozevich, Sutovsky, Topalov, Nakamura et Kasparov. C'est un peu de la triche, mais je trouve que le résultat final est assez probant.



Fort en parties rapides

Certes mon moteur est moins fort que Jeune maître, obtenu avec beaucoup plus de parties de haut niveau. C'est pour ça que je l'ai appelé "MiniPolgar". Mais sa force, supérieure à celle de Vieux maître, est comparable à celle de Chesster Offensif, quelque part vers 1800-1850 Elo.  Par contre, MiniPolgar est plus à l'aise en parties rapides; dans un tournoi Blitz 5/3 toute ronde de 30 parties avec Jeune Maître et Vieux maître, elle remporte la victoire avec 11,5 points contre 10,5 pour Jeune maître et 8 points pour Vieux Maître. En partie normale, Mini-Polgar est nettement surclassée par Jeune Maître. Pour le style, cela ressemble bien à celui de Polgar : posé et positionnel, puis tout-à-coup offensif et audacieux, prompt au sacrifice.

Pour que le jeu de MiniPolgar ressemble encore plus à son modèle, j'ai utilisé les parties de Polgar pour créer une bibliothèques d'ouvertures spécifiques au format Abk d'Arena. Elle comporte 115.000 entrées, certaines lignes allant jusqu'à 60 ½ coups de profondeur.

Télécharger MiniPolgar ?


Petit-Shirov

Après Polgar, je me suis attaqué à Alexei Shirov. J'ai utilisé les mêmes techniques que pour Judit Polgar: sélection du maximum de parties possibles du champion Letton (14.000), échantillon que j'ai renforcé avec quelques centaines de parties gagnantes de moteurs au style proches (AnMon, Houdini, Rhetoric) puis avec des parties de joueurs humains pareillement proches du style Shirov (Topalov, Morozevich, Nakamura, Tal, Sutovsky...). Au total environ 42.000 parties ont servi à la constitution du fichier de poids dont un gros tiers appartient à Shirov. Je lui ai fait jouer 10 parties rapides contre Cdrill, Mustang, AdroitChess, Scidlet et MiniPolgar. Résultats:
Contre Cdrill (1850 Elo)
60% : 5 parties gagnées, 2 nulles, 3 perdues
Contre MiniPolgar (1850 Elo)
60% : 5 parties gagnées, 2 nulles, 3 perdues.
Contre Mustang (2040 Elo)
30% : 2 parties gagnées, 2 nulles, 6 perdues
Contre AdroitChess (2080 Elo)
30% : 2 parties gagnées, 2 nulles, 6 perdues
Contre Scidlet (2260 Elo)
5% : 9 parties perdues, 1 nulle.
La force de Petit-Shirov est donc proche de 1900 Elo. Ce n'est pas énorme mais c'est le style qui compte et il donnera tout de même du fil à retordre à bien des joueurs.
Comme d'habitude, j'ai créé une bibliothèque d'ouvertures au format Abk d'Arena pour accompagner la simulation.

Télécharger Petit Shirov et sa bliblio abk ?



Les tournois qui mettent les pendules à l'heure


Pour jauger la force des différents fichiers de poids j'ai organisé avec Crafty Chess Interface un tournoi Round-Robin en trois manches, soit 30 parties, entre Jeune Maître, Vieux Maître, le fichier Ochoa, le fichier Grant et le fichier Lüscher (celui de l'auteur). Les parties étant assez longues (15 minutes/40 coups, + 10 minutes avec incrément de 30 secondes), j'ai laissé Crafty Chess Interface tourner pendant deux jours sur un ordinateur. Résultat final :
Jeune Maître : 8 points, Ochoa : 7,5 points, Lüscher : 5,5 points, Vieux Maître : 5,5 points et bon dernier, Grant : 3,5 points.

J'ai également organisé un tournoi en 5 manches entre Jeune maître et cinq moteurs : Cdrill, Mustang, Alarm, Obender et Phalanx XXIV. Performance de Jeune maître :

100% contre Cdrill (1850 Elo)
40% contre Mustang (2040 Elo)
20% contre Alarm (2200 Elo)
35% contre Obender (2200 Elo)
0% contre Phalanx (2540 Elo)

C'est peu de parties pour fixer un Elo mais je pense quand même pouvoir affirmer que JM est proche de 2000 Elo.

J'ai fait la même chose pour évaluer Chesster Offensif : tournoi en 5 manches de parties 1/2 longue contre Cdrill, Chenard, Jchecs, Scidlet, Nanochess, Sissa, Jeune Maitre et AdroitChess. Performance de Chesster Offensif :

100% contre Nanochess (1200 Elo) *
70% contre Jchecs (1750 Elo)
50% contre Chenard (1820 Elo)
30% contre Cdrill (1850 Elo)
60% contre Sissa (1955 Elo)

20% contre Scidlet (2260 Elo) **

10% contre Jeune Maître


Rob Rob - Actualisation en octobre 2019.


* Une "erreur de casting". L'auteur de NanoChess prétendait que son moteur (le plus petit moteur UCI du monde) valait 1600 Elo. Il s'est un peu monté la tête, il en était loin.
** Par erreur j'avais attribué une force de 1800 Elo à Scidlet, au lieu des 2260 que lui donne le site CCRL 40/4. Voilà l'explication du manque de performance de Chesster offensif face à lui.

 
 
 
 
 
 
 
 
Retourner au contenu | Retourner au menu _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();