1 points par GN⁺ 2024-11-23 | 1 commentaires | Partager sur WhatsApp
  • Alors que la plupart des LLM jouent mal aux échecs, le fait que seul gpt-3.5-turbo-instruct soit particulièrement fort s’explique en partie par des expériences montrant qu’en changeant l’interface de prompt, gpt-4o et gpt-4o-mini s’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 + examples a obtenu 10 victoires, 5 nulles et 35 défaites en 50 parties contre gpt-3.5-turbo-instruct ; en tenant compte de l’avantage des Blancs, son niveau est estimé à environ 1540 Elo, en dessous des ~1750 Elo de gpt-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-instruct atteint 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-instruct a é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-instruct reconnaî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-instruct joue 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-instruct propose 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-instruct joue 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-instruct est 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 comme 1. e4 e5 2. Nf3 Nc6 3.
  • gpt-4o-mini et gpt-4o sont 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-instruct est fort, tandis que les modèles chat comme gpt-4o et gpt-4o-mini apparaissent 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. → sortie e4
    • entrée 1. e4 → sortie d5
    • entrée 1. e4 e5 2. Nf3 Nc6 3. → sortie Bb5
  • 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-mini et sur gpt-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-4o paraissait 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’appeler gpt-4o en mode completion, donc la comparaison directe est impossible
  • À la place, gpt-4o a é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 comme 1. e4 e5 2. Nf7
  • Cette méthode améliore les performances aux échecs de gpt-4o-mini et de gpt-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-base en 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. → sortie 1. e4
    • entrée 1. d4 → sortie 1. d4 d5
    • entrée 1. e4 e5 2. Nf3 Nc6 3. → sortie 1. e4 e5 2. Nf3 Nc6 3. Nf3
  • 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 + examples s’en sort assez bien, mais reste moins fort que gpt-3.5-turbo-instruct
  • Les deux modèles ont joué 50 parties, avec gpt-4o toujours 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 + examples est évalué à environ 1750 - 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-instruct a 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-4o est plus faible que le mode completion de gpt-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-base jouerait bien dans une simulation de mode chat, ou si gpt-4o jouerait 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-4 pourrait 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

 
GN⁺ 2024-11-23
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

    • J’ai entendu quelque chose d’intéressant dans un livestream d’échecs : même les super grands maîtres humains ont énormément de mal à évaluer ou à résoudre des positions extrêmement étranges qui ne proviennent pas d’un déroulé logique ouverture-milieu de partie-finale
      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
    • Il est assez étrange de prétendre que le système comprend les échecs tout en indiquant, plus bas dans l’article, qu’après 10 tentatives il n’a toujours pas obtenu de coup légal et l’a remplacé par un coup aléatoire
      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
    • À ce stade, il semble très clair que les LLM n’ont pas atteint ce qu’on appelle généralement le raisonnement
      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
    • Ce test suffirait-il vraiment à le prouver ? Si le LLM n’a été entraîné que sur des ensembles de coups légaux, il est possible qu’il ait appris fonctionnellement comment chaque pièce peut se déplacer, sans véritablement raisonner
      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
    • Le problème est que le LLM n’apprend pas à jouer un coup dans une position donnée : dans les archives d’Internet, on trouve généralement seulement des notations de parties
      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

    • Je suis un joueur d’échecs de niveau expert, et j’ai vu plusieurs personnes proches de mon niveau jouer des coups illégaux dans des parties classiques hors ligne avec cadence longue
      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
    • Dire que « les gens qui connaissent les échecs ne jouent pas de coups illégaux » est quelque peu inexact
      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
    • Le problème, c’est que les chercheurs sur les LLM ont presque renoncé à examiner comment les LLM fonctionnent réellement en interne
      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é »
    • Si le LLM ne reçoit que la séquence des coups et pas la position, il joue en fait aux échecs à l’aveugle
      Pour ne jamais jouer de coup illégal aux échecs à l’aveugle, il faut déjà être assez fort
    • La discussion dans ce fil est étonnante
      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

    • Je ne pense pas que ce soit vraiment le point central
      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
    • Les coups illégaux aux échecs sont triviaux à détecter informatiquement, ce n’est donc pas du tout comparable au fait de filtrer de mauvais conseils médicaux
    • Si l’on pouvait écrire un script qui supprime automatiquement les mauvais conseils médicaux, l’analogie pourrait tenir
      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
    • 3-turbo-instruct compte environ 5 coups illégaux ou moins sur 8 205 coups
      Ce n’est pas ici, mais turbo instruct a déjà été évalué par le passé
      https://github.com/adamkarvonen/chess_gpt_eval
    • Observation pertinente. De manière similaire, Andrew Ng et l’équipe de Stanford University ont fait la même entourloupe de surapprentissage du ratio entraînement-test dans leur célèbre article de niveau cardiologue publié dans Nature Medicine
      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

    • J’avais suggéré qu’ils aient pu entraîner le modèle à bien jouer aux échecs pour voir si cela aidait l’intelligence générale, de la même manière que l’apprentissage des mathématiques et du code améliore aussi d’autres aspects du raisonnement logique
      Après tout, OpenAI a beaucoup d’expérience en IA de jeu
      https://news.ycombinator.com/item?id=42145215
    • Cela me paraît un peu paranoïaque
      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
    • L’explication la plus simple et la plus plausible est qu’OpenAI a changé ses objectifs d’entraînement
      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
    • J’aimerais que cette approche soit aussi utilisée dans d’autres domaines plus pratiques
      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 ?

    • On accorde, je pense, beaucoup trop de poids à l’intention. Un LLM n’a pas d’intention ; c’est un modèle mathématique entraîné à produire la sortie la plus plausible.
      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.
    • Je pense que c’est clairement implicite dans l’invite « vous êtes un grand maître d’échecs ».
      Cette phrase augmentera la probabilité de générer les tokens du meilleur coup possible.
    • Même si on l’ajoutait à l’invite, ce serait probablement surtout décoratif.
      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.
    • Quand on lui fait générer du code, on ne se contente généralement pas de dire « vous êtes un expert Python et voici le code » ; préciser la direction souhaitée donne en général de meilleurs résultats.
      J’ai donc été surpris qu’il n’y ait pas de formulation comme « et gagne » ou « les noirs gagnent ».
    • En plus, l’invite ne dit pas « le meilleur coup », mais « choisissez le coup suivant ».
      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.

    • Je ne pense pas que lui faire dessiner un échiquier ASCII changerait grand-chose.
      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 2 ne me semble pas utile, pour les raisons déjà données par d’autres.
      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.
    • La chaîne de pensée aide sur beaucoup de problèmes, mais elle dégrade au contraire fortement les performances de GPT aux échecs.
      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.
    • Comme cette formulation est relativement rare dans les données d’entraînement, elle risque davantage de détériorer la réponse que de l’améliorer.
      J’aimerais voir les résultats, mais je serais assez surpris si cela l’améliorait.
    • Je pense que l’amélioration observée quand on lui faisait répéter tous les coups joués jusqu’ici venait du fait qu’on donnait au LLM plus de temps et d’espace pour réfléchir.
      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.

    • Intuitivement, cela me semble très juste.
      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.
    • Je suis d’accord avec l’idée que fournir des exemples est plus utile que le fine-tuning.
      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

    • Prédire le prochain coup d’une politique d’échecs experte n’est rien d’autre que de l’apprentissage par imitation, un domaine bien étudié
      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