- Während die meisten LLMs schlecht Schach spielen, lässt sich das auffällig starke Abschneiden von
gpt-3.5-turbo-instructteilweise dadurch erklären, dass sichgpt-4oundgpt-4o-minimit einer veränderten Prompt-Schnittstelle deutlich verbessern - Die Hypothese, OpenAI rufe heimlich eine Schach-Engine auf, ist schwach: Selbst bei identischem Brett werden je nach Zugfolge zum Erreichen der Stellung unterschiedliche Züge gespielt, die Modelle reagieren empfindlich auf Prompt-Änderungen, und die Spielstärke bleibt statt auf Engine-Niveau nur bei etwa 1750 Elo
- Schon drei kurze In-Context-Beispiele steigerten die Leistung stark, und auch Fine-Tuning mit Beispielen aus 100 Stockfish-Selbstpartien zeigte Verbesserungen
- Umgekehrt verschlechterte die Angabe aller aktuell legalen Züge die Leistung stark, während der Ansatz der Zugfolgen-Wiederholung (regurgitation) – also die vollständige Partie zu wiederholen und dann den nächsten Zug anzuhängen – Chat-Modelle eher wie Completion-Modelle agieren ließ und die Leistung steigerte
- Die Endkombination
gpt-4o + regurgitation + exampleserreichte gegengpt-3.5-turbo-instructin 50 Partien 10 Siege, 5 Remis und 35 Niederlagen und wird unter Berücksichtigung des Weißvorteils auf etwa 1540 Elo geschätzt, bleibt damit aber unter den rund 1750 Elo vongpt-3.5-turbo-instruct
Problemstellung: Warum spielt nur gpt-3.5-turbo-instruct gut Schach?
- Ausgangspunkt der bisherigen Beobachtungen war, dass die meisten LLMs sehr schlecht Schach spielen,
gpt-3.5-turbo-instructaber auf gehobenem Amateur-Niveau spielt - Obwohl dieses Modell relativ klein und schon über ein Jahr alt ist, scheint es besser Schach zu spielen als neuere Modelle
- Es gab im Wesentlichen vier mögliche Erklärungen
- Große Base-Modelle können gut Schach spielen, aber bei per Instruction Tuning entstandenen Chat-Modellen bleibt diese Fähigkeit nicht erhalten
gpt-3.5-turbo-instructwurde mit mehr Schachdaten trainiert- In bestimmten LLM-Architekturen steckt ein spezieller Faktor
- Schachdaten müssen im gesamten Trainingsdatensatz einen ausreichend großen Anteil haben
- Die spätere Diskussion konzentrierte sich dann auf die Möglichkeit eines OpenAI-internen Aufrufs einer Schach-Engine, darauf, ob LLMs tatsächlich Schach spielen, und auf die Unterschiede zwischen Base- und Chat-Modellen
Die Hypothese einer heimlich genutzten Schach-Engine ist wenig überzeugend
- Der Verdacht,
gpt-3.5-turbo-instructerkenne Schachnotation und rufe eine externe Schach-Engine auf, wirkt sehr unwahrscheinlich - Die Belege dafür gehen in mehrere Richtungen
- Personen bei OpenAI haben angegeben, dass eine solche Verarbeitung nicht stattfindet
- Eine Schach-Engine bewertet bei identischer Brettstellung unabhängig von der Zugfolge gleich,
gpt-3.5-turbo-instructspielt bei derselben Stellung aber je nach Zugfolge zum Erreichen der Stellung unterschiedliche Züge - Nach Amateurmaßstäben spielt das Modell gut, nach Profi-Maßstäben aber schwach, und im Vergleich zu Schach-Engines ist die Leistung sehr niedrig
- Wenn man den Prompt verändert, ändert sich auch das Spielverhalten leicht
- Spätere OpenAI-Modelle spielen im Standardzustand deutlich schlechter, können mit geeigneten Prompts aber gut spielen
- Falls hier tatsächlich getrickst worden wäre, hätte man einen sehr komplizierten Ansatz wählen müssen, der nicht wie ein externer Engine-Aufruf aussieht und zugleich den Eindruck erweckt, das LLM wähle die Züge selbst
LLMs spielen nicht nur durch bloßes Auswendiglernen
gpt-3.5-turbo-instructschlägt auch im späteren Partieverlauf nur selten illegale Züge vor- Um bei einer Zeichenfolge wie
1. e4 d5 2. exd5 Qxd5 3. Nc3zu beurteilen, ob der letzte Zug legal ist, muss man Schachregeln anwenden und den Zustand verfolgen - Auch in echten Partien spielt
gpt-3.5-turbo-instructbei neuen Brettstellungen, die historisch nie vorgekommen sind, ziemlich gut - Daher trifft die Erklärung nicht zu, dass das Modell nur Eröffnungen auswendig lernt und danach zufällig weiterspielt
Grundexperiment: Unterschied zwischen Completion- und Chat-Modellen
gpt-3.5-turbo-instructist ein Completion-Modell, daher wird der nächste Zug erzeugt, indem PGN-Text fortgesetzt wird- Ein Beispiel dafür ist die Vorgabe von
[Event "Shamkir Chess"], Spielernamen, Elo, Ergebnis und einer Partie wie1. e4 e5 2. Nf3 Nc6 3.
- Ein Beispiel dafür ist die Vorgabe von
gpt-4o-miniundgpt-4osind Chat-Modelle; dort werden über System- und User-Prompt nur der nächste Zug in standardisierter algebraischer Notation angefordert- Gegen Stockfish Level 1 wurden pro Zug höchstens 0,01 Sekunden gegeben und über 50 Partien gemittelt; nach der Partie wurde jeder Zug in Centipawns bewertet
- Ein Bauer zählt 100 Punkte
- ±1500 entspricht Gewinn oder Verlust
- Mit dem Standard-Prompt ist
gpt-3.5-turbo-instructstark, während Chat-Modelle wiegpt-4oundgpt-4o-minischwach wirken
Experimente zur Prompt-Zusammensetzung
- Es wurde getestet, ob der System-Prompt am Anfang des User-Prompts wiederholt werden sollte und ob Metadaten wie Spielernamen und Elo aufgenommen werden sollten
- Bei
gpt-4o-miniwar kaum ein größerer Unterschied zu erkennen - Bei
gpt-4oschien die Wiederholung des System-Prompts leicht zu helfen, während Metadaten eher leicht schädlich wirkten, wobei das auch Rauschen sein könnte - In den späteren Experimenten wurden zur Vereinfachung sowohl die Wiederholung des System-Prompts als auch Metadaten weggelassen
Schon drei Beispiele verbessern die Leistung deutlich
- Wie bei LLM-Aufgaben üblich wurden dem Modell über die API drei kurze Eingabe-/Ausgabe-Beispiele gegeben
- Eingabe
1.→ Ausgabee4 - Eingabe
1. e4→ Ausgabed5 - Eingabe
1. e4 e5 2. Nf3 Nc6 3.→ AusgabeBb5
- Eingabe
- Schon diese drei Beispiele verbesserten die Ergebnisse stark
- Mehr oder andere Beispiele könnten noch besser sein, wurden aber nicht weiter geprüft, weil für jede Abbildung sehr viele Abfragen nötig gewesen wären
Fine-Tuning hilft, aber die Kombination mit Beispielen ist instabil
- Sowohl für
gpt-4o-minials auch fürgpt-4owurde Fine-Tuning durchgeführt - Die Daten wurden wie folgt erzeugt
- Stockfish spielte 100 Partien gegen sich selbst auf höchster Stufe
- Aus jeder Partie wurde zufällig ein Zug als Trainingsbeispiel ausgewählt
- Weitere 100 Stockfish-Selbstpartien dienten als Validierungsdaten
- Fine-Tuning an sich verbesserte die Leistung
- Allerdings wirkte das erste Fine-Tuning-Ergebnis bei
gpt-4oschlechter, weshalb es mit kleinerer step size erneut ausgeführt wurde; das bleibt ein Unsicherheitsfaktor - Die Kombination aus Beispielen und Fine-Tuning verbesserte sich nicht so konsistent wie erwartet
- Fine-Tuning allein hilft
- Beispiele allein helfen ebenfalls
- Nach Fine-Tuning bringen zusätzliche Beispiele fast keinen Effekt
- Wenn bereits Beispiele vorhanden sind, kann Fine-Tuning sogar schaden
Eine Liste legaler Züge ruiniert die Leistung
- Weil das Modell gelegentlich illegale Züge ausgibt, wurde getestet, ob man vor der Notation eine Liste aller legalen Züge der aktuellen Stellung angibt
- Auch der System-Prompt wurde so angepasst, dass er eine Liste legaler Züge und einen Teil der Partie erhält
- Das Ergebnis war sehr schlecht
- Nicht nur sank die Gewinnrate, auch Fehler traten schon in früheren Zügen auf
- Die Angabe legaler Züge wurde danach nicht weiter verwendet
Kernidee: Das Modell die gesamte Partie wiederholen lassen
- Chat-Modelle arbeiten über Special Tokens und Instruction Tuning in einem Dialogformat mit
<|SYSTEM|>,<|USER|>,<|ASSISTANT|> - Base-Modelle ähneln eher Completion-Modellen, die eine Zeichenfolge fortsetzen, und PGN-Notation passt besser zu diesem Format
- Da es keinen direkten Zugriff auf OpenAIs
gpt-4-basegibt undgpt-4onicht im Completion-Modus aufgerufen werden kann, ist ein direkter Vergleich unmöglich - Stattdessen wurde
gpt-4odazu gebracht, sich wie ein Completion-Modell zu verhalten: Es sollte nicht nur den nächsten Zug ausgeben, sondern die gesamte bisherige Partie wiederholen und dann einen neuen Zug anhängen - Wenn die Eingabe etwa
1. e4 e5 2.ist, soll die Ausgabe also die Form1. e4 e5 2. Nf7haben - Dieser Ansatz verbesserte die Schachleistung von
gpt-4o-miniundgpt-4o - Durch das Wiederholen der gesamten Zugfolge erzeugt sich das Modell selbst eher einen Kontext, in dem ein guter Zug wahrscheinlich ist
- Das stützt die Vermutung, dass das unzugängliche
gpt-4-baseim Completion-Modus recht gut Schach spielen könnte
Kombination aus Zugfolgen-Wiederholung, Beispielen und Fine-Tuning
- Auch für den Ansatz mit Zugfolgen-Wiederholung wurden getrennte Fine-Tuning-Experimente erneut durchgeführt
- Die Eingabe blieb wie zuvor eine partielle Zugfolge
- Die gewünschte Ausgabe bestand aus der vollständigen Wiederholung der Eingabe plus dem nächsten Zug
- Das Fine-Tuning in diesem Format schien leicht zu helfen
- Auch die drei Beispiele wurden an die Zugfolgen-Wiederholung angepasst
- Eingabe
1.→ Ausgabe1. e4 - Eingabe
1. d4→ Ausgabe1. d4 d5 - Eingabe
1. e4 e5 2. Nf3 Nc6 3.→ Ausgabe1. e4 e5 2. Nf3 Nc6 3. Nf3
- Eingabe
- Trotz der geringen Informationsmenge hatten die Beispiele erneut großen Einfluss
- Beim gemeinsamen Einsatz von Beispielen und Fine-Tuning wiederholte sich ein merkwürdiges Muster
- Fine-Tuning plus Beispiele hilft
- Es bleibt aber immer noch schlechter als nur Beispiele
Versuchsergebnisse und Elo-Schätzung
- Die Ergebnisse lassen sich in drei Gruppen einteilen
- Gut: Zugfolgen-Wiederholung, Beispiele, Fine-Tuning ohne Beispiele
- Unklar: Metadaten, Wiederholung des System-Prompts, Fine-Tuning zusammen mit Beispielen
- Schlecht: Angabe legaler Züge
- Die Endkombination bestand aus Zugfolgen-Wiederholung und Beispielen; alles andere war deaktiviert
gpt-4o + regurgitation + exampleswar ziemlich ordentlich, aber nicht so stark wiegpt-3.5-turbo-instruct- Die beiden Modelle spielten 50 Partien, und in allen Partien hatte
gpt-4oWeiß
gpt-4o Ergebnis |
Anzahl |
|---|---|
| Sieg | 10 |
| Remis | 5 |
| Niederlage | 35 |
- Dieses Ergebnis entspricht einer Elo-Differenz von etwa -191
- Berücksichtigt man, dass der Anzugsvorteil von Weiß mit ungefähr 35 Elo angegeben wird, ergibt sich für
gpt-4o + regurgitation + exampleseine Schätzung von etwa1750 - 191 - 35/2 ≈ 1540 Elo - Das wird als mittleres Amateur-Niveau bewertet
Aktuelle Hypothese: Daten und Schnittstelle wirken zusammen
- Die aktuelle Hypothese hat zwei Teile
- OpenAIs Base-Modelle wurden mit mehr oder besseren Schachpartie-Daten trainiert als offene Modelle
- Neuere OpenAI-Base-Modelle könnten im Completion-Modus gut Schach spielen, die tatsächlich zugänglichen Chat-Modelle aber nicht
- Offene Modelle scheinen unabhängig davon, ob sie Base- oder Chat-Modelle sind, schlecht Schach zu spielen, was eher auf Datenunterschiede als auf Architekturgrenzen hindeutet
- In Abschnitt A.2 einer Arbeit steht, dass GPT-4 mit Schachpartien in PGN-Notation trainiert wurde und nur Partien von Spielern ab Elo 1800 enthalten waren
- Es gibt keine öffentliche Bestätigung, dass
gpt-3.5-turbo-instructdieselben Daten nutzte, aber dass es in PGN-Notation Schach spielt und auf etwa 1750 Elo kommt, wirkt kaum zufällig - Wie viel Schachdaten im Training offener Modelle wie Llama enthalten waren, konnte nicht überprüft werden
- Es ist zwar möglich, dass aus dem offenen Internet viele Partien enthalten waren, aber eine gezielt kuratierte große Datenbank hochwertiger Partien könnte bessere Ergebnisse geliefert haben
- Zu viele Daten von schwachen Spielern könnten zwar dazu führen, dass das Modell Züge geringerer Qualität vorhersagt, doch in Stellungen mit starker Zugfolge müsste es ohnehin den nächsten Zug starker Spieler vorhersagen, daher gilt das nicht als Haupterklärung
Verbleibende Unsicherheiten und praktischer Eindruck
- Falls
gpt-4oim Chat-Modus schwächer ist alsgpt-4-baseim Completion-Modus, bleibt unklar, ob die Ursache die Chat-Schnittstelle, das Instruction Tuning oder beides ist - Es lässt sich nicht testen, ob
gpt-4-basegut spielen würde, wenn man einen Chat-Modus simuliert, oder obgpt-4oim Completion-Modus gut spielen würde - Es ist gut möglich, dass es noch weitere Wege gibt,
gpt-4ozu besserem Verhalten zu bringen - Die optimale Kombination aus Prompt, Beispielen und Fine-Tuning zu finden, ist sehr schwierig
- Der Suchraum ist groß
- Es gibt keine einfache Abstraktion
- LLMs sind schwer vorhersehbar und fragil
- Experimente sind langsam und teuer
- Als dasselbe Endrezept auf
gpt-4angewendet wurde, spielte dieses Modell nicht gut Schach - Die gefundene Kombination könnte speziell auf
gpt-4ozugeschnitten sein; fürgpt-4wären womöglich andere Prompts, mehr Beispiele oder Fine-Tuning nötig - Der Prozess wirkte eher wie die Suche nach einem Zauberspruch als wie klassisches Engineering, so empfindlich reagierten die Modelle je nach Variante
1 Kommentare
Meinungen auf Hacker News
Wenn man sehen will, ob gpt-3.5-turbo-instruct Schach wirklich versteht, lässt man es in 1000 zufälligen legalen Stellungen, die kein Schachmatt sind, den nächsten Zug machen.
Solche Stellungen lassen sich mit https://github.com/tromp/ChessPositionRanking erzeugen; sie unterscheiden sich völlig von normalen Partien, wie sie in Trainingsdaten vorgekommen sein könnten, und oft ist die Auswahl legaler Züge sehr eingeschränkt.
Das ist gut, um die Legalität des nächsten Zugs zu testen, aber weniger nützlich, um die Qualität der Züge zu unterscheiden, weil meist eine Seite überwältigend im Vorteil ist.
Es war erstaunlich, wie Hikaru sich eine Stellung ansah und von Anfang an wie in einer „Live-Kommentierung“ zeigte, wie diese Stellung entstanden sein könnte; im selben Video erklärte er aber, dass diese Methode bei seltsamen zufälligen Schachrätseln kaum funktioniert.
Rätsel aus echten Partien sind viel besser als zufällig generierte Rätsel und ergeben auch für die besten menschlichen Spieler mehr Sinn.
Bei jemandem, der Schach gut versteht, etwa auf Elo-1800-Niveau, kommt es praktisch nicht vor, dass er beim ersten Versuch keinen legalen Zug findet.
Echte Schlussfolgerung erfordert wohl symbolische Logik und Abstraktion; ein LLM ist ein Next-Token-Prädiktor.
Zum Beispiel könnte es, weil es gesehen hat, dass Läufer sich immer nur diagonal bewegen, nur solche Züge berücksichtigen, ohne daraus ein Konzept legaler/illegaler Züge abgeleitet zu haben.
Intern könnte es zwar eine Art Repräsentation der Stellung bilden, aber wenn man ihm eine kodierte Schachstellung gibt, wird diese Repräsentation nicht automatisch aktiviert.
Wenn behauptet wird, gpt-3.5-turbo-instruct „verstehe“ Schach, „schlussfolgere“ und führe „echte Logik“ aus, würde ich gern sehen, dass man unter den im Artikel erwähnten Schachspielern auf fortgeschrittenem Amateurniveau jemanden findet, der illegale Züge macht.
Jeder, der Schach kennt, kann bestätigen, dass so etwas kaum vorkommt.
Mich würde auch interessieren, ob es Links zu Partien gibt, in denen illegale Züge vorkamen.
Ich habe auch schon Streamer gesehen, die weit stärker sind als ich und wiederholt illegale Züge versuchten, bis sie merkten, dass das Interface sie als illegal ablehnte.
Wenn man auf YouTube nur nach „GM illegal moves“ sucht, findet man genügend Sammlungen von Fällen, in denen Großmeister illegale Züge gemacht haben.
Beispiel: https://www.youtube.com/watch?v=m5WVJu154F0 — besonders eindrücklich ist Vidit vs. Hikaru, wo Vidit mit seinem König Hikarus König angreift.
Solange ein LLM eine Blackbox ist, können wir nicht wissen, ob es durch Regelbefolgung schlussfolgert und legale Züge versteht oder ob es nur sehr viele Daten zu legalen Zügen gelernt hat und dadurch gelernt hat, legale Züge auszugeben.
Man kann behaupten, dass das eine oder das andere wahr ist, aber es gibt keinerlei Möglichkeit, wirklich zu verstehen, was das LLM „gedacht“ hat.
Um beim Blindschach niemals illegale Züge zu machen, muss man ziemlich gut sein.
Menschen, sogar renommierte Experten auf ihrem Gebiet, machen viele Fehler und begehen in ihrem Fachgebiet manchmal sehr teure und im Rückblick offensichtliche Fehler.
Aber wenn ein LLM, das auf einem Korpus menschlicher Dummheiten trainiert wurde, im Schach einen illegalen Zug macht, reagiert das Gehirn sofort mit: „Ich mache im Schach keine illegalen Züge; wie kann ein Computer dann Schach spielen, wenn er so etwas tut?“
Es wirkt zumindest wie ein perfektes Beispiel für metakognitive Verzerrung und den fundamentalen Attributionsfehler.
Dieser Beitrag hat dasselbe Problem wie der vorherige. Der Autor liefert keinerlei Daten zur Häufigkeit illegaler Züge
Daher lassen sich keine sinnvollen Schlussfolgerungen ziehen
Das ist ungefähr so, als würde man behaupten, ein LLM sei ein Facharzt, und dabei alle Fälle falscher medizinischer Ratschläge aus den Daten herausfiltern
Es wäre interessant, wenn sich die Zahl der Versuche illegaler Züge je nach Ansatz signifikant unterschiede, insbesondere wenn dieser Unterschied nicht mit der Leistung nach Entfernen illegaler Züge korrelierte, aber das würde die Schlussfolgerung des Beitrags selbst nicht stark erschüttern
Wenn man zufällig aus der Menge legaler Züge wählt, wird man zu einem wirklich miserablen Schachspieler; wenn Sampling aus der Ausgabe eines LLM also deutlich besser abschneidet, liefert das LLM eindeutig etwas
Darüber zu streiten, dass alle Versuche illegaler Züge als Niederlage gewertet werden müssten, um die alleinige Fähigkeit des LLM zu definieren, wirkt am Kern vorbei
Dann wäre tatsächlich „LLM+Skript“ gewissermaßen ein Facharzt, aber während das bei illegalen Schachzügen möglich ist, ist es bei der Bewertung medizinischer Ratschläge natürlich unmöglich
Es steht hier nicht dabei, aber turbo instruct wurde früher schon einmal evaluiert
https://github.com/adamkarvonen/chess_gpt_eval
Der Trainingsanteil lag bei über 99 % und der Testanteil bei unter 1 %, sodass es nicht einmal die Grundlagen der KI-Validierung erfüllt
Auf den meisten KI-Konferenzen hätte dieses Paper wohl kaum Bestand gehabt, aber es erschien in Nature Medicine mit sehr hohem Impact Factor und wird im Bereich medizinischer KI häufig zitiert
https://www.nature.com/articles/s41591-018-0268-3
Die Formulierung „In vielerlei Hinsicht fühlt es sich weniger wie Ingenieurwesen an, sondern eher wie die Suche nach einem Zauberspruch“ entspricht immer noch meinem allgemeinen Eindruck von LLMs
Dass es funktioniert, ist erstaunlich, aber ich hoffe, die nächste technische Innovation fühlt sich nicht jedes Mal so an, als stecke man in einem schlechten Science-Fiction-Film
Ich denke nicht, dass „alle falsch lagen“
Ich war auch nicht der Einzige, der diesen Punkt angesprochen hat, daher war ich überrascht, dass diese Theorie nicht auf der Liste stand; vor 7 Tagen habe ich bereits Folgendes geschrieben: https://news.ycombinator.com/item?id=42145710
„Alles, was zu einem öffentlichen Benchmark geworden ist, sollte man als im Training konkret anvisiert betrachten.“
Das unterscheidet sich von der im Beitrag erwähnten und widerlegten Theorie des „Betrugs/Ersetzens von LLM-Ausgaben“
Der Folgebeitrag stützt diese Vermutung. OpenAI hat das Basismodell mit mehr und besseren Schachpartiedaten trainiert als offene Modelle, und in A.2 eines Papers erklärten OpenAI-Autoren, dass GPT-4 mit im PGN-Format notierten Schachpartien von Spielern über Elo 1800 trainiert wurde
Es ergibt vollkommen Sinn, dass OpenAI seine Trainingsdaten mit Daten zu Aufgaben anreichert, die Menschen tatsächlich ausprobieren könnten
Das ist auch nicht unethisch. Kein Datensatz ist wirklich „neutral“, und wenn man ohnehin eine Auswahl treffen muss, gibt es keinen Grund, nicht darauf zu trainieren, potenziell nützliche Antworten gut zu geben
Schließlich hat OpenAI viel Erfahrung mit Game AI
https://news.ycombinator.com/item?id=42145215
Niemand trainiert ein enorm teures großes LLM auf einem riesigen Datensatz in der Hoffnung, dass irgendein Blogger zufällig eine schwache Leistung auf 1800-Elo-Niveau entdeckt und darüber twittert
Schach ist auch kein Standard-LLM-Benchmark, der als Goodhart-Ziel taugen würde, und OpenAI hat im Allgemeinen versucht, Probleme auf die richtige Weise zu lösen, statt über Abkürzungen oder Betrug
Die GPT-Reihe hätte leicht auf Standard-Benchmarks oder Gegenbeispiele overfitten können, was auch deutlich mehr PR-Wert gehabt hätte, hat aber nicht stark overfittet. Zum Beispiel wäre es sehr einfach gewesen, sie auf Dinge wie das „Erdbeerproblem“ zu trainieren
Einige andere LLM-Anbieter fallen dagegen in Papers zur Vermeidung von Auswendiglernen deutlich stärker in der Punktzahl ab
Außerdem gibt es in dem Paper, das diesen Datensatz erwähnt, selbst einen klaren Forschungszweck, und Schach ist als Modellorganismus für die Analyse von Steuerung und World Modeling von LLMs interessant, weil man ein Orakel verwenden kann
Auch DeepMinds Paper zu Bullet-Chess-LLMs ist nicht Teil eines gerissenen Plans, Gemini seine Schachstärke vortäuschen zu lassen, um es im GCP-Marketing zu nutzen
Anfangs fanden sie Schach vielleicht beeindruckend, und morgen könnten sie Go oder die Fähigkeit zum Gedichteschreiben beeindruckend finden
Etwa indem man unabhängig vom Fachgebiet mehr Experten-Content als „Amateur“-Content in die Trainingsdaten aufnimmt
Im Prompt steht nicht „versuche, das Spiel zu gewinnen“, aber gemessen wird am Ende, wie oft das LLM gewinnt.
Ist das implizit in dem Prompt „Sie sind ein Schachgroßmeister“ enthalten?
Gibt es irgendwo im LLM-Training ein Muster wie „bei Spielen versucht man immer zu gewinnen“?
Könnte die Gewinnquote steigen, wenn man einfach sagt, es solle gewinnen?
In Beispielen und Erklärungen zu Schachpartien versucht fast immer jeder Spieler zu gewinnen, also ist ein gewinnbringender Zug schlicht die logischste Ausgabe.
Deshalb glaube ich nicht, dass ein expliziter Prompt, zu gewinnen, die Leistung stark verbessern würde.
Interessant wäre umgekehrt, was passiert, wenn man es auffordert, einen verlierenden oder schlechten Zug zu machen. Ob es das effektiv kann und ob die Züge trotzdem größtenteils legal bleiben, könnte stärker offenlegen, wie sehr es sich auf zuvor gesehene Konzepte stützt.
Dieser Satz dürfte die Wahrscheinlichkeit erhöhen, Tokens für den bestmöglichen Zug zu erzeugen.
Die Fähigkeit des Modells, Schachsequenzen zu erzeugen, ist durch die Expertise begrenzt, die im Partien-Pool der Trainingsdaten steckt.
Selbst wenn einige Partien dabei waren, in denen Spieler absichtlich verlieren wollten, dürfte das kaum ins Gewicht fallen; außerdem werden Schachpartien nicht mit den Absichten der Spieler annotiert, daher kann ein LLM nicht unterscheiden und herausgreifen, ob es zum Gewinnen oder Verlieren aufgefordert wird.
Man kann das sehen, wenn man ein LLM auffordert, absichtlich zu verlieren. ChatGPT versucht meiner Erfahrung nach, sich so aufzustellen, dass es ein Schäfermatt kassiert; wenn der Gegner das aber nicht annimmt, beginnt es implizit wie zum Gewinnen, ungeschützte gegnerische Figuren zu schlagen.
Fragt man „warum?“, liefert es wie immer eine nachträgliche Rationalisierung.
Deshalb fand ich es überraschend, dass Formulierungen wie „und gewinnen Sie“ oder „Schwarz gewinnt“ fehlten.
Es wäre ziemlich witzig, wenn das LLM wegen Reinforcement Learning absichtlich vermeidet, dass der Mensch sich schlecht fühlt, weil er ein Spiel verliert.
Es ist gut, dass der Prompt verbessert wurde, aber zwei sehr große Verbesserungsmöglichkeiten fehlen weiterhin.
Erstens: das Modell vor dem Vorschlagen eines Zugs die aktuelle Brettstellung und den weiteren Plan erklären lassen. Das lässt das Modell tatsächlich mehr nachdenken; ähnlich wie o1, aber hier kann man eine stärker fokussierte Verarbeitung sicherstellen.
Zweitens: es bei jedem Schritt tatsächlich ein ASCII-Brett zeichnen lassen. Eine Brett+Zug-Form dürfte stabiler und leichter zu verarbeiten sein als eine Liste von 20 Zügen und könnte zu mehr legalen Zügen führen.
Zweidimensionale „Grafiken“ wie ASCII-Art sind Sprachmodellen fremd, und das Modell nimmt Text als Token-Stream einschließlich Zeilenumbrüchen wahr; dadurch sind die „vertikalen“ Beziehungen zwischen Zeilen nicht so klar, wie sie für Menschen erscheinen.
Selbst wenn im Context Window ein Brettdiagramm steht, hilft das dem Modell wahrscheinlich kaum dabei, die Partie zu durchdenken.
Stattdessen könnte es besser sein, die Positionen der Figuren als normalen Text auflisten zu lassen, etwa „schwarzer Springer auf c5“, um die Positionswahrnehmung zu stärken.
Punkt 1 ist definitiv einen Versuch wert, und es gibt weitere Varianten, die je nach Modell funktionieren.
Bei Anthropic-Modellen empfiehlt die Dokumentation, wichtige Teile der Eingabe mit XML-Notation zu labeln und zu klassifizieren. Eine solche weiche Struktur scheint die Ergebnisse von Claude-Modellen zu verbessern, und vermutlich wurden die Modelle speziell darauf trainiert, sie zu erkennen.
Siehe: https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
Bei einem Anthropic-Modell könnte der finale Prompt etwa lauten: „Sie sind Schachgroßmeister. Betrachten Sie die unvollständige Partie innerhalb der Tags, wiederholen Sie die gesamte Partie und geben Sie dann einen neuen Zug in algebraischer Standardnotation an; erklären Sie Ihre Schlussfolgerung innerhalb eines Tag-Blocks, bevor Sie die neue Notation ausgeben.“
Solche Prompts sollen bei Anthropic-Modellen spürbare Verbesserungen bringen.
Ironischerweise habe ich das erst vor ein paar Wochen entdeckt, obwohl ich Claude 3.5 Sonnet monatelang intensiv genutzt habe. RTFM ist immer noch eine nützliche Fähigkeit.
Auch OpenAI-Modelle könnten ähnlich einfache, aber wenig bekannte Affordances haben.
In meinen Schachexperimenten vor 1,5 Jahren war der Trick, die gesamte Zugfolge zu wiederholen, ohne Fine-Tuning die beste Methode.
Ich würde die Ergebnisse gern sehen, wäre aber ziemlich überrascht, wenn es besser würde.
Meine Hypothese ist, dass die Leistung noch besser werden könnte, wenn man ihm auf andere Weise mehr Zeit und Raum gibt.
Zum Beispiel könnte man ihm die aktuelle Brettstellung zeigen lassen, dann eine Positionsanalyse, eine Liste zentraler Schwächen und Stärken, eine Liste möglicher Strategien, daraus eine Strategieauswahl und erst zuletzt die Zugwahl.
Also nicht sofort einen Zug ausspucken lassen, sondern es wirklich zum Denken bringen. Die Beispiele wären hier wohl entscheidend.
Solche Ideen haben in der ReAct-Arbeit und in Arbeiten zu Chain-of-Thought gut funktioniert; außerdem könnte man ergänzen, das Ganze N-mal zu wiederholen und anzuhalten, wenn eine Mehrheitsantwort entsteht. Diese Idee stammt aus der Arbeit zur Selbstkonsistenz bei Chain-of-Thought.
Die Stelle „Fine-Tuning hilft und Beispiele helfen auch, aber Beispiele machen Fine-Tuning überflüssig, nicht umgekehrt“ finde ich sehr interessant.
In diesem konkreten Fall ist das bloße Bereitstellen von Beispielen gleichwertig mit Fine-Tuning.
Für mich ist das eine große Entdeckung, und ich werde künftig häufiger Beispiele verwenden.
Es ist schwer zu erklären, warum, aber ich hatte immer das Bauchgefühl, dass Fine-Tuning überschätzt wird.
Ein Grund könnte sein, dass Beispiele „direkt da“ sind und deshalb implizit ein viel größeres Gewicht bekommen als feinabgestimmte Neuronen.
In diesem Spielzeugbeispiel ist das nicht so wichtig, aber man sollte im Kopf behalten, dass jedes Beispiel in der Eingabe gegenüber Fine-Tuning Inferenzzeit und -kosten erhöht.
Wir sollten aufhören, mit kommerziellen LLMs im Dunkeln herumzustochern
Um diesem Problem wirklich auf den Grund zu gehen, wäre es interessant, ein LLM ausschließlich mit Schachpartien zu trainieren. Man kann Stockfish gegen sich selbst spielen lassen und so unbegrenzt synthetische Daten erzeugen; mischt man etwas Schachkommentar und Beispiele für Schachdialoge wie „Wie viele Bauern sind auf dem Brett?“, „Wo ist mein Turm?“ oder „Zeichne das Brett“ dazu, ließe sich zeigen, ob es über eine Brettrepräsentation verfügt
Ich glaube nicht, dass „emergente Phänomene“, allgemeine Sprachfähigkeiten oder die Fähigkeit, Kompetenz vorzutäuschen, zum Schachspielen nötig sind. Wer gut Schach spielt, ist deshalb nicht auch in anderen Dingen intelligent, und umgekehrt genauso wenig
Ein solches Experiment könnte auch beweisen, dass ich falschliege
Ein Paper von vor etwa einer Woche https://arxiv.org/pdf/2411.06655 scheint mit einem feinabgestimmten Llama gute Ergebnisse zu erzielen
Dieses Paper zur Fähigkeit, Schachkommentare zu verfassen, gefällt mir ebenfalls: https://arxiv.org/abs/2410.20811
Man könnte zusätzlich die verbleibende Belohnung einbeziehen, sodass das Netzwerk lernt, welche Züge in guten und schlechten Partien vorkommen; das wäre dann ein Offline-Reinforcement-Learning-Ansatz wie ein Decision Transformer
Schachspielstärke ist für allgemeine LLMs völlig nutzlos und kein emergentes Phänomen; aus meiner Sicht verbraucht sie lediglich Gradienten-Bandbreite und Parameterraum für diesen netten Trick
Das wird daran deutlich, dass LLMs, die nicht speziell auf Schach trainiert wurden, darin schlecht sind
Es könnte interessant sein, einen für Schachzug-Notation optimierten Tokenizer zu erstellen und ein LLM von Grund auf mit Stockfish-Partien zu trainieren
Mit einem maßgeschneiderten Tokenizer dürfte die Qualität bei gleicher Modellgröße steigen
Man müsste nicht so viele Schichten für Encoding und Decoding verschwenden, und auch „natürliche“ latente Repräsentationen könnten intuitiver sein