- Alors que la plupart des LLM jouent mal aux échecs, le fait que seul
gpt-3.5-turbo-instructsoit particulièrement fort s’explique en partie par des expériences montrant qu’en changeant l’interface de prompt,gpt-4oetgpt-4o-minis’améliorent aussi nettement - L’hypothèse selon laquelle OpenAI appellerait secrètement un moteur d’échecs est peu convaincante : pour un même échiquier, les coups diffèrent selon la suite de coups ayant mené à la position, le modèle est sensible aux variations de prompt, et ses performances restent autour de 1750 Elo plutôt qu’au niveau d’un moteur
- Avec seulement trois courts exemples in-context, les performances montent fortement, et une amélioration apparaît aussi après fine-tuning sur des exemples tirés de 100 auto-parties de Stockfish
- À l’inverse, fournir la liste des coups légaux possibles dégrade fortement les performances, tandis que la méthode de répétition de la notation de partie (regurgitation) — répéter toute la partie avant d’ajouter le coup suivant — pousse les modèles chat à se comporter comme des modèles de completion, ce qui améliore leur niveau
- La combinaison finale
gpt-4o + regurgitation + examplesa obtenu 10 victoires, 5 nulles et 35 défaites en 50 parties contregpt-3.5-turbo-instruct; en tenant compte de l’avantage des Blancs, son niveau est estimé à environ 1540 Elo, en dessous des ~1750 Elo degpt-3.5-turbo-instruct
Problème posé : pourquoi seul gpt-3.5-turbo-instruct joue-t-il bien aux échecs ?
- Le point de départ était l’observation que la plupart des LLM jouent très mal aux échecs, alors que
gpt-3.5-turbo-instructatteint un niveau d’amateur avancé - Ce modèle, relativement petit et vieux de plus d’un an, s’est pourtant montré meilleur aux échecs que des modèles plus récents
- Quatre grandes explications étaient envisagées
- les grands modèles de base jouent bien aux échecs, mais cette capacité n’est pas conservée dans les modèles chat passés par l’instruction tuning
gpt-3.5-turbo-instructa été entraîné sur davantage de données d’échecs- certains éléments sont spécifiques à une architecture LLM donnée
- les données d’échecs doivent représenter une part suffisamment importante de l’ensemble d’entraînement
- La discussion s’est ensuite resserrée autour de la possibilité d’un appel caché à un moteur d’échecs par OpenAI, de la question de savoir si le LLM joue réellement aux échecs, et de la différence entre modèles de base et modèles chat
L’hypothèse d’un usage secret d’un moteur d’échecs est peu crédible
- Le soupçon selon lequel
gpt-3.5-turbo-instructreconnaîtrait la notation échiquéenne pour appeler un moteur externe paraît très peu probable - Plusieurs éléments vont dans ce sens
- des personnes liées à OpenAI ont déclaré qu’aucun tel traitement n’était mis en place
- un moteur d’échecs évalue une même position indépendamment de la suite de coups qui y mène, alors que
gpt-3.5-turbo-instructjoue des coups différents pour un même échiquier selon la suite de coups ayant mené à la position - le niveau est bon pour un amateur, mais faible pour un expert, et très loin de celui d’un moteur
- de petites modifications de prompt changent subtilement le jeu produit
- les modèles OpenAI plus récents jouent bien moins bien par défaut, mais peuvent mieux jouer avec des prompts adaptés
- S’il y avait triche, il faudrait alors imaginer une méthode très complexe, donnant l’impression que le LLM choisit lui-même les coups sans ressembler à un simple appel à un moteur externe
Le LLM ne joue pas uniquement par mémorisation brute
gpt-3.5-turbo-instructpropose encore rarement des coups illégaux en milieu ou fin de partie- Pour juger si le dernier coup est légal dans une chaîne comme
1. e4 d5 2. exd5 Qxd5 3. Nc3, il faut suivre les règles des échecs et l’état de la position - En partie réelle aussi,
gpt-3.5-turbo-instructjoue assez bien dans des positions inédites qui n’ont jamais existé historiquement - L’idée selon laquelle le modèle mémoriserait simplement les ouvertures avant de jouer au hasard ensuite ne tient donc pas
Expérience de base : différence entre modèles de completion et modèles chat
gpt-3.5-turbo-instructest un modèle de completion : on lui demande de prolonger un texte au format PGN pour obtenir le coup suivant- par exemple en lui donnant
[Event "Shamkir Chess"], les noms des joueurs, leur Elo, le résultat, et une notation comme1. e4 e5 2. Nf3 Nc6 3.
- par exemple en lui donnant
gpt-4o-minietgpt-4osont des modèles chat : on leur demande via un system prompt et un user prompt de ne produire que le coup suivant en notation algébrique standard- Les tests ont été faits contre Stockfish niveau 1, avec un maximum de 0,01 seconde par coup, sur une moyenne de 50 parties, puis le score de chaque tour a été calculé en centipawns
- un pion vaut 100 points
- ±1500 correspond à une partie gagnée ou perdue
- Avec le prompt de base,
gpt-3.5-turbo-instructest fort, tandis que les modèles chat commegpt-4oetgpt-4o-miniapparaissent faibles
Expériences sur la composition des prompts
- Les tests ont fait varier la présence d’une répétition du system prompt au début du user prompt, ainsi que l’ajout de métadonnées comme les noms des joueurs et leur Elo
- Sur
gpt-4o-mini, cela semble n’avoir presque fait aucune différence notable - Sur
gpt-4o, répéter le system prompt semble aider un peu et les métadonnées paraissent légèrement nuisibles, mais cela peut aussi n’être que du bruit - Pour simplifier, les expériences ultérieures ont désactivé à la fois la répétition du system prompt et les métadonnées
Trois exemples suffisent à fortement améliorer les performances
- Comme c’est souvent le cas quand on fait exécuter une tâche à un LLM, trois courts exemples d’entrée/sortie ont été fournis via l’API
- entrée
1.→ sortiee4 - entrée
1. e4→ sortied5 - entrée
1. e4 e5 2. Nf3 Nc6 3.→ sortieBb5
- entrée
- Ces trois exemples à eux seuls améliorent fortement les résultats
- Il est possible que davantage d’exemples, ou d’autres exemples, donnent de meilleurs résultats, mais cela n’a pas été davantage vérifié car chaque graphique demandait énormément de requêtes
Le fine-tuning aide, mais sa combinaison avec les exemples reste instable
- Un fine-tuning a été effectué à la fois sur
gpt-4o-miniet surgpt-4o - Les données ont été générées de la manière suivante
- Stockfish a joué 100 parties contre lui-même au niveau maximal
- dans chaque partie, un coup aléatoire a été choisi pour en faire un exemple d’entraînement
- 100 autres auto-parties de Stockfish ont servi de données de validation
- Le fine-tuning améliore bien les performances en lui-même
- Toutefois, le premier résultat de fine-tuning sur
gpt-4oparaissait mauvais, ce qui a conduit à relancer l’expérience avec un step size plus petit ; cela laisse une zone d’incertitude - En combinant exemples et fine-tuning, les résultats ne s’améliorent pas de manière cohérente comme on aurait pu l’espérer
- le fine-tuning seul aide
- les exemples seuls aident aussi
- ajouter des exemples après fine-tuning n’a presque aucun effet
- en présence d’exemples, le fine-tuning donne même un résultat défavorable
Fournir la liste des coups légaux ruine les performances
- Comme le modèle produit parfois des coups illégaux, une expérience a consisté à lui fournir avant la notation de la partie la liste des coups légaux possibles à l’instant courant
- Le system prompt a aussi été modifié pour recevoir cette liste et une notation partielle de la partie
- Le résultat a été très mauvais
- non seulement le taux de victoire a baissé, mais les erreurs ont commencé plus tôt dans la partie
- Cette approche a ensuite été abandonnée
Idée clé : lui faire répéter toute la notation de la partie
- Les modèles chat fonctionnent via des special tokens et de l’instruction tuning dans un format conversationnel comme
<|SYSTEM|>,<|USER|>,<|ASSISTANT|> - Un modèle de base ressemble davantage à un modèle de completion qui prolonge une chaîne de caractères, et la notation PGN s’accorde mieux avec ce mode
- Il n’est pas possible d’accéder directement à
gpt-4-base, ni d’appelergpt-4oen mode completion, donc la comparaison directe est impossible - À la place,
gpt-4oa été poussé à se comporter comme un modèle de completion : au lieu de ne produire que le coup suivant, il doit répéter toute la partie puis ajouter un nouveau coup - Par exemple, si l’entrée est
1. e4 e5 2., la sortie demandée devient une forme comme1. e4 e5 2. Nf7 - Cette méthode améliore les performances aux échecs de
gpt-4o-miniet degpt-4o - Le fait de répéter toute la suite de coups permet au modèle de construire lui-même un contexte où il est plus susceptible de choisir un bon coup
- Ce résultat suggère que, s’il était possible d’appeler l’inaccessible
gpt-4-baseen mode completion, il jouerait probablement assez bien aux échecs
Combiner répétition de partie, exemples et fine-tuning
- Avec cette méthode de répétition de partie, des expériences de fine-tuning séparées ont de nouveau été menées
- l’entrée reste une notation partielle de la partie
- la sortie attendue est la répétition complète de cette notation suivie du coup suivant
- Le fine-tuning dans ce cadre semble avoir apporté une légère amélioration
- Les trois exemples ont aussi été reconstruits pour cette méthode
- entrée
1.→ sortie1. e4 - entrée
1. d4→ sortie1. d4 d5 - entrée
1. e4 e5 2. Nf3 Nc6 3.→ sortie1. e4 e5 2. Nf3 Nc6 3. Nf3
- entrée
- Malgré la faible quantité d’information, les exemples ont à nouveau eu un effet important
- En combinant exemples et fine-tuning, on retrouve un schéma étrange
- ajouter des exemples au fine-tuning aide
- mais cela reste moins bon que l’usage des exemples seuls
Résultats expérimentaux et estimation Elo
- Les résultats se résument en trois catégories
- bon : répétition de partie, exemples, fine-tuning sans exemples
- incertain : métadonnées, répétition du system prompt, fine-tuning utilisé avec des exemples
- mauvais : fourniture de la liste des coups légaux
- La combinaison finale retient la répétition de partie et les exemples, tout en désactivant le reste
gpt-4o + regurgitation + exampless’en sort assez bien, mais reste moins fort quegpt-3.5-turbo-instruct- Les deux modèles ont joué 50 parties, avec
gpt-4otoujours avec les Blancs
Résultat de gpt-4o |
Nombre |
|---|---|
| Victoire | 10 |
| Nulle | 5 |
| Défaite | 35 |
- Ce résultat correspond à un écart Elo d’environ -191
- En tenant compte de l’avantage du trait pour les Blancs, généralement estimé à environ 35 Elo,
gpt-4o + regurgitation + examplesest évalué à environ1750 - 191 - 35/2 ≈ 1540 Elo - Cela correspond à un niveau d’amateur intermédiaire
Hypothèse actuelle : les données et l’interface agissent ensemble
- L’hypothèse actuelle se divise en deux volets
- les modèles de base d’OpenAI ont été entraînés sur davantage de données de parties d’échecs, ou sur de meilleures données, que les modèles ouverts
- les modèles de base OpenAI récents pourraient bien jouer aux échecs en mode completion, mais ce n’est pas le cas des modèles chat réellement accessibles
- Les modèles ouverts, qu’ils soient de base ou chat, semblent mauvais aux échecs ; cela suggère que la différence tient davantage aux données qu’à une limite d’architecture
- Une section A.2 d’un article mentionne que GPT-4 a été entraîné sur des parties d’échecs en notation PGN, filtrées pour ne garder que les parties de joueurs à plus de 1800 Elo
- Il n’existe pas de confirmation publique indiquant que
gpt-3.5-turbo-instructa utilisé les mêmes données, mais le fait qu’il joue en notation PGN avec un Elo mesuré autour de 1750 paraît difficile à attribuer au hasard - Il n’a pas été possible de vérifier quelle quantité de données d’échecs figure dans l’entraînement de modèles ouverts comme Llama
- Il est possible que beaucoup de parties issues de l’Internet ouvert soient incluses, mais une base de données sélectionnée à grande échelle avec des parties de haute qualité a peut-être donné de meilleurs résultats
- On pourrait aussi imaginer qu’un trop grand volume de parties de faible niveau pousse le modèle à prédire des coups de moindre qualité ; néanmoins, dans des positions issues de suites de coups fortes, il devrait surtout prédire les coups suivants de joueurs forts, ce qui ne semble donc pas être l’explication principale
Incertitudes restantes et impression pratique
- Si le mode chat de
gpt-4oest plus faible que le mode completion degpt-4-base, on ne sait pas si la cause est la chat interface, l’instruction tuning, ou les deux - Il est impossible de tester si
gpt-4-basejouerait bien dans une simulation de mode chat, ou sigpt-4ojouerait bien en mode completion - Il est probable qu’il existe encore d’autres moyens d’obtenir de meilleurs comportements de
gpt-4o - Trouver la meilleure combinaison de prompts, d’exemples et de fine-tuning est très difficile
- l’espace de recherche est vaste
- il n’existe pas d’abstraction simple
- les LLM sont difficiles à prévoir et fragiles
- les expériences sont lentes et coûteuses
- En appliquant la même recette finale à
gpt-4, les échecs n’étaient pas bien joués - La combinaison trouvée est peut-être spécifique à
gpt-4o;gpt-4pourrait nécessiter d’autres prompts, davantage d’exemples ou un fine-tuning - La sensibilité aux réglages selon les modèles est telle que le processus ressemble davantage à une quête d’incantation qu’à un travail d’ingénierie
1 commentaires
Avis sur Hacker News
Pour voir si gpt-3.5-turbo-instruct comprend vraiment les échecs, il suffit de lui faire jouer le coup suivant dans 1 000 positions légales aléatoires qui ne sont pas des mats
On peut générer ce type de positions avec https://github.com/tromp/ChessPositionRanking ; elles sont totalement différentes de parties normales qu’il aurait pu voir dans les données d’entraînement, et il y a souvent très peu de coups légaux possibles
C’est utile pour tester la légalité du coup suivant, mais moins pour distinguer la qualité des coups, car en général un camp a un avantage écrasant
C’était impressionnant de voir Hikaru regarder une position et montrer dès le départ, comme s’il la « commentait en direct », comment on avait pu en arriver là ; mais dans la même vidéo, il expliquait que cette méthode ne fonctionne presque pas avec des puzzles d’échecs aléatoires et bizarres
Les puzzles issus de vraies parties sont bien meilleurs que les puzzles générés aléatoirement, et ils ont aussi beaucoup plus de sens pour les meilleurs humains
Une personne qui comprend bien les échecs, disons au niveau Elo 1800, ne produit pratiquement jamais un coup illégal dès la première tentative
On peut considérer qu’un vrai raisonnement nécessite de la logique symbolique et de l’abstraction, alors qu’un LLM est un prédicteur du prochain token
Par exemple, parce qu’il a toujours vu les fous se déplacer uniquement en diagonale, il peut ne considérer que ce type de coups, sans pour autant avoir inféré le concept de coup légal/illégal
Il peut certes construire en interne quelque chose qui représente la position, mais quand on lui donne une position d’échecs encodée, cette représentation ne s’activera pas automatiquement
Si l’on affirme que gpt-3.5-turbo-instruct « comprend » les échecs, « raisonne » et applique une « vraie logique », j’aimerais qu’on trouve, parmi les joueurs du niveau amateur avancé mentionné dans l’article, quelqu’un qui joue des coups illégaux
Toute personne qui connaît les échecs peut confirmer que cela n’arrive presque jamais
Je me demande aussi s’il existe des liens vers des parties où des coups illégaux ont été joués
J’ai aussi vu des streamers bien plus forts que moi tenter à plusieurs reprises des coups illégaux avant de comprendre que l’interface les refusait parce qu’ils étaient illégaux
Il suffit de chercher « GM illegal moves » sur YouTube pour trouver suffisamment de compilations de grands maîtres jouant des coups illégaux
Exemple : https://www.youtube.com/watch?v=m5WVJu154F0 — le cas Vidit vs Hikaru est particulièrement frappant : Vidit attaque le roi de Hikaru avec son propre roi
Tant qu’un LLM reste une boîte noire, on ne peut pas savoir s’il a compris les coups légaux en raisonnant selon les règles, ou s’il a simplement appris à produire des coups légaux après avoir ingéré beaucoup de données de coups légaux
On peut affirmer que l’une ou l’autre hypothèse est vraie, mais il n’existe absolument aucun moyen de comprendre réellement ce que le LLM a « pensé »
Pour ne jamais jouer de coup illégal aux échecs à l’aveugle, il faut déjà être assez fort
Les humains, même des experts reconnus dans leur domaine, font beaucoup d’erreurs et commettent parfois, dans leur propre champ d’expertise, des erreurs très coûteuses et évidentes avec le recul
Mais lorsqu’un LLM entraîné sur un corpus rempli de bêtise humaine joue un coup illégal aux échecs, le cerveau réagit immédiatement par : « Moi, je ne joue pas de coups illégaux aux échecs ; alors comment un ordinateur pourrait-il jouer aux échecs en faisant ça ? »
À tout le moins, cela ressemble à un exemple parfait de biais métacognitif et d’erreur fondamentale d’attribution
Cet article souffre du même problème que le précédent. L’auteur ne fournit aucune donnée sur la fréquence des coups illégaux
Il est donc impossible d’en tirer une conclusion significative
C’est un peu comme affirmer qu’un LLM est un médecin spécialiste tout en ayant filtré des données tous les cas où il a donné de mauvais conseils médicaux
Ce serait intéressant si le nombre de tentatives de coups illégaux différait de façon significative selon les approches, et surtout si cette différence n’était pas corrélée aux performances après suppression des coups illégaux, mais cela ne remet pas vraiment en cause la conclusion de l’article
Si l’on choisit au hasard dans l’ensemble des coups légaux, on obtient un joueur d’échecs vraiment médiocre ; donc si l’échantillonnage depuis la sortie du LLM fait beaucoup mieux, il est clair que le LLM apporte quelque chose
Débattre de la définition de la capacité du LLM seul en affirmant que toutes les tentatives de coups illégaux devraient être comptées comme des défaites me semble passer à côté de l’essentiel
Dans ce cas, « LLM+script » deviendrait effectivement un médecin spécialiste, mais si c’est possible pour les coups illégaux aux échecs, cela ne l’est évidemment pas pour l’évaluation de conseils médicaux
Ce n’est pas ici, mais turbo instruct a déjà été évalué par le passé
https://github.com/adamkarvonen/chess_gpt_eval
Le ratio d’entraînement dépasse 99 % et le test représente moins de 1 %, si bien que cela ne passerait même pas les bases de la validation en IA
L’article aurait probablement eu du mal à tenir dans la plupart des conférences IA, mais il a été publié dans Nature Medicine, au facteur d’impact très élevé, et est beaucoup cité dans le domaine de l’IA médicale
https://www.nature.com/articles/s41591-018-0268-3
La formule « à bien des égards, cela ressemble moins à de l’ingénierie qu’à la recherche d’une incantation » correspond toujours à mon impression générale des LLM
Le fait que cela fonctionne est stupéfiant, mais j’aimerais que la prochaine innovation technique ne donne pas à chaque fois l’impression d’être dans un mauvais film de SF
Je ne pense pas que « tout le monde s’est trompé » soit juste
Je ne suis pas le seul à avoir soulevé ce point, donc j’ai été surpris que cette théorie ne figure pas dans la liste ; il y a 7 jours, j’écrivais déjà ceci : https://news.ycombinator.com/item?id=42145710
« Tout ce qui devient un benchmark public doit être considéré comme ayant été spécifiquement ciblé pendant l’entraînement. »
C’est différent de la théorie de la « triche/substitution de la sortie du LLM » mentionnée et réfutée dans l’article
L’article de suivi renforce cette hypothèse. OpenAI a entraîné son modèle de base avec davantage de données de parties d’échecs, et de meilleure qualité, que les modèles ouverts ; dans l’annexe A.2 d’un article, des auteurs d’OpenAI indiquent que GPT-4 a été entraîné sur des parties d’échecs en notation PGN jouées par des joueurs Elo 1800 et plus
Il est tout à fait logique qu’OpenAI enrichisse ses données d’entraînement avec des données correspondant à des tâches que les gens sont susceptibles d’essayer en pratique
Ce n’est pas non plus contraire à l’éthique. Aucun jeu de données n’est vraiment « neutre » ; puisqu’il faut de toute façon faire des choix, il n’y a aucune raison de ne pas entraîner le modèle à bien répondre à des questions potentiellement utiles
Après tout, OpenAI a beaucoup d’expérience en IA de jeu
https://news.ycombinator.com/item?id=42145215
On n’entraîne pas d’énormes LLM extrêmement coûteux sur de gigantesques jeux de données dans l’espoir qu’un blogueur découvre par hasard une performance maladroite de niveau Elo 1800 et la tweete
Les échecs ne sont même pas un benchmark LLM standard au point de devenir une cible de Goodhart, et OpenAI a globalement cherché à résoudre les problèmes de la bonne manière plutôt que par des raccourcis ou de la triche
La famille GPT aurait pu facilement surapprendre les benchmarks standards ou les contre-exemples, avec une valeur promotionnelle bien plus importante, et pourtant elle ne l’a pas fait de manière excessive. Par exemple, il aurait été très facile de l’entraîner sur des choses comme le « problème de la fraise »
À l’inverse, certains autres fournisseurs de LLM voient leurs scores chuter beaucoup plus fortement dans les articles sur la prévention de la mémorisation
De plus, l’article même qui mentionne ce jeu de données lui attribue un usage de recherche clair, et les échecs intéressent comme organisme modèle pour analyser le guidage et la modélisation du monde par les LLM, car on peut y utiliser un oracle
L’article de DeepMind sur les LLM d’échecs en parties rapides ne fait pas non plus partie d’un plan sournois visant à faire croire que Gemini sait jouer aux échecs pour le marketing de GCP
Au début, ils ont peut-être trouvé les échecs intéressants, et demain ils pourront trouver intéressant de savoir jouer au go ou écrire de la poésie
Quel que soit le domaine, cela reviendrait à mettre davantage de contenu d’experts que de contenu « amateur » dans les données d’entraînement
L’invite ne dit pas « essaie de gagner la partie », mais le résultat est mesuré à l’aune du nombre de victoires du LLM.
Est-ce implicitement contenu dans l’invite « vous êtes un grand maître d’échecs » ?
Y a-t-il quelque part dans l’entraînement des LLM un motif du type « dans un jeu, on essaie toujours de gagner » ?
Le taux de victoire pourrait-il augmenter si on lui disait simplement de gagner ?
Dans les exemples et explications de parties d’échecs, chaque joueur essaie presque toujours de gagner ; jouer un coup gagnant est donc simplement la sortie la plus logique.
C’est pourquoi je ne pense pas qu’une invite lui demandant explicitement de gagner améliorerait beaucoup les performances.
À l’inverse, il serait intéressant de voir ce qui se passe si on lui demande de jouer des coups perdants ou mauvais. Voir s’il peut le faire efficacement, et si les coups restent majoritairement légaux, pourrait révéler davantage à quel point il dépend de concepts déjà vus.
Cette phrase augmentera la probabilité de générer les tokens du meilleur coup possible.
La capacité du modèle à générer des séquences d’échecs est limitée par le niveau d’expertise présent dans le corpus de parties des données d’entraînement.
Même si quelques parties où certains joueurs essayaient volontairement de perdre y étaient incluses, ce serait sans doute marginal ; et les parties d’échecs n’annotent pas l’intention des joueurs, donc même si on demande au LLM de gagner ou de perdre, il ne peut pas vraiment apprendre à distinguer cela.
Il suffit d’essayer de demander à un LLM de perdre exprès. D’après mon expérience, ChatGPT tente de se mettre en position de subir le mat du berger, mais si l’adversaire ne lui offre pas cette possibilité, il commence implicitement à prendre des pièces adverses non défendues, comme s’il voulait gagner.
Si on lui demande « pourquoi ? », il produit comme toujours une rationalisation a posteriori.
J’ai donc été surpris qu’il n’y ait pas de formulation comme « et gagne » ou « les noirs gagnent ».
Ce serait assez drôle si, à cause de l’apprentissage par renforcement, le LLM évitait exprès de faire perdre l’humain pour ne pas le frustrer.
C’est bien d’avoir amélioré l’invite, mais il reste deux très grandes pistes d’amélioration ignorées.
Premièrement, lui faire décrire la position actuelle sur l’échiquier et son plan à venir avant de proposer un coup. Cela pousse le modèle à réfléchir réellement davantage, un peu comme o1, mais ici avec un traitement plus ciblé garanti.
Deuxièmement, lui faire réellement dessiner un échiquier ASCII à chaque étape. La forme échiquier + coup pourrait être plus stable et plus facile à traiter qu’une liste de 20 coups, ce qui pourrait augmenter le nombre de coups légaux.
Les « graphiques » en deux dimensions comme l’art ASCII sont peu familiers aux modèles de langage, et le modèle perçoit le texte comme un flux de tokens, y compris les retours à la ligne ; les relations « verticales » entre lignes ne sont donc pas aussi évidentes pour lui qu’elles le sont pour un humain.
Même avec un diagramme de l’échiquier dans la fenêtre de contexte, il est très probable que cela aide peu le modèle à raisonner sur la partie.
À la place, lister la position de chaque pièce en texte ordinaire, comme « cavalier noir en c5 », pourrait être plus adapté pour renforcer la reconnaissance de la position.
Le point 1 vaut clairement la peine d’être essayé, et il existe aussi des variantes plus efficaces selon les modèles.
Pour les modèles Anthropic, la documentation recommande d’utiliser une notation XML pour étiqueter et classer les parties importantes de l’entrée. Ce type de structure légère semble améliorer les résultats des modèles Claude, et ils ont probablement été spécialement entraînés à la reconnaître.
Référence : https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
Avec un modèle Anthropic, l’invite finale pourrait ressembler à : « Tu es un grand maître d’échecs. Regarde la partie inachevée dans les balises, répète toute la partie, puis donne un nouveau coup en notation algébrique standard ; avant de fournir la nouvelle notation, explique ton raisonnement dans un bloc balisé. »
Ce genre d’invite est conçu pour apporter une amélioration notable avec les modèles Anthropic.
Ironiquement, après avoir beaucoup utilisé Claude 3.5 Sonnet pendant des mois, je ne l’ai découvert qu’il y a quelques semaines. RTFM reste une compétence utile.
Il pourrait exister pour les modèles OpenAI des affordances similaires, simples mais peu connues.
Dans mes expériences d’échecs d’il y a 1,5 an, le truc consistant à répéter toute la suite de coups était la meilleure technique sans fine-tuning.
J’aimerais voir les résultats, mais je serais assez surpris si cela l’améliorait.
L’hypothèse est qu’en lui donnant plus de temps et d’espace d’une autre manière, les performances pourraient encore s’améliorer.
Par exemple, on pourrait lui montrer la position actuelle, lui faire analyser la position, dresser la liste des faiblesses et forces principales, lister des stratégies possibles, choisir l’une de ces stratégies, puis enfin choisir le coup.
Autrement dit, ne pas lui faire cracher le coup immédiatement, mais le pousser à vraiment réfléchir. Ici, les exemples seraient probablement essentiels.
Ces idées ont montré leur efficacité dans l’article ReAct et dans les articles sur la chaîne de pensée ; on pourrait aussi y ajouter une répétition N fois en s’arrêtant quand une réponse majoritaire émerge, une idée tirée de l’article sur l’auto-cohérence de la chaîne de pensée.
Le passage disant que « le fine-tuning aide et les exemples aident aussi, mais ce sont les exemples qui rendent le fine-tuning inutile, pas l’inverse » est très intéressant.
Dans ce cas précis, le simple fait de fournir des exemples équivaut au fine-tuning.
C’est une grosse découverte pour moi, et je compte donc utiliser plus souvent des exemples à l’avenir.
J’ai du mal à expliquer pourquoi, mais j’ai toujours eu l’intuition que le fine-tuning était surestimé.
Une raison possible est que les exemples sont « juste là », et qu’ils reçoivent donc implicitement un poids bien plus important que des neurones fine-tunés.
Dans ce cas jouet, ce n’est pas très important, mais il faut garder à l’esprit que chaque exemple fourni en entrée augmente le temps et le coût d’inférence par rapport au fine-tuning.
Il faut arrêter les expériences à tâtons dans le noir avec des LLM commerciaux
Pour aller au fond du problème, il serait intéressant d’entraîner un LLM uniquement sur des parties d’échecs. On peut en synthétiser à l’infini en faisant jouer Stockfish contre lui-même, et y mêler un peu de commentaires d’échecs ainsi que des exemples de dialogues du type « combien y a-t-il de pions sur l’échiquier ? », « où est ma tour ? », « dessine l’échiquier », afin de montrer s’il possède une représentation du plateau
Je ne crois pas qu’un « phénomène émergent », des capacités générales de langage ou la capacité à faire semblant d’être compétent soient nécessaires pour jouer aux échecs. Être bon aux échecs ne signifie pas être intelligent dans d’autres domaines, et l’inverse vaut aussi
Ce genre d’expérience pourrait me donner tort
Un article paru il y a environ une semaine, https://arxiv.org/pdf/2411.06655, semble obtenir de bons résultats avec un Llama affiné
J’aime aussi cet article sur la capacité à commenter des parties d’échecs : https://arxiv.org/abs/2410.20811
On peut aussi ajouter la récompense restante pour que le réseau apprenne quels coups apparaissent dans de bonnes et de mauvaises parties, ce qui devient un cadre d’apprentissage par renforcement hors ligne comme Decision Transformer
À mon avis, le niveau aux échecs est totalement inutile pour les LLM généralistes, ce n’est pas un phénomène émergent, et cela ne fait que consommer de la bande passante de gradient et de l’espace de paramètres pour ce joli numéro
C’est clair quand on voit que les LLM qui n’ont pas été entraînés spécifiquement aux échecs n’y jouent pas bien
Il pourrait être intéressant de créer un tokenizer optimisé pour la notation des coups d’échecs, puis d’entraîner un LLM de zéro sur des parties de Stockfish
Avec un tokenizer sur mesure, la qualité devrait s’améliorer à taille de modèle égale
Il n’y aurait pas besoin de gaspiller autant de couches pour l’encodage et le décodage, et les représentations latentes « naturelles » pourraient aussi être plus intuitives