1 Punkte von GN⁺ 2024-11-23 | 1 Kommentare | Auf WhatsApp teilen
  • Während die meisten LLMs schlecht Schach spielen, lässt sich das auffällig starke Abschneiden von gpt-3.5-turbo-instruct teilweise dadurch erklären, dass sich gpt-4o und gpt-4o-mini mit 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 + examples erreichte gegen gpt-3.5-turbo-instruct in 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 von gpt-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-instruct aber 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-instruct wurde 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-instruct erkenne 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-instruct spielt 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-instruct schlägt auch im späteren Partieverlauf nur selten illegale Züge vor
  • Um bei einer Zeichenfolge wie 1. e4 d5 2. exd5 Qxd5 3. Nc3 zu beurteilen, ob der letzte Zug legal ist, muss man Schachregeln anwenden und den Zustand verfolgen
  • Auch in echten Partien spielt gpt-3.5-turbo-instruct bei 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-instruct ist 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 wie 1. e4 e5 2. Nf3 Nc6 3.
  • gpt-4o-mini und gpt-4o sind 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-instruct stark, während Chat-Modelle wie gpt-4o und gpt-4o-mini schwach 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-mini war kaum ein größerer Unterschied zu erkennen
  • Bei gpt-4o schien 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. → Ausgabe e4
    • Eingabe 1. e4 → Ausgabe d5
    • Eingabe 1. e4 e5 2. Nf3 Nc6 3. → Ausgabe Bb5
  • 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-mini als auch für gpt-4o wurde 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-4o schlechter, 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-base gibt und gpt-4o nicht im Completion-Modus aufgerufen werden kann, ist ein direkter Vergleich unmöglich
  • Stattdessen wurde gpt-4o dazu 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 Form 1. e4 e5 2. Nf7 haben
  • Dieser Ansatz verbesserte die Schachleistung von gpt-4o-mini und gpt-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-base im 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. → Ausgabe 1. e4
    • Eingabe 1. d4 → Ausgabe 1. d4 d5
    • Eingabe 1. e4 e5 2. Nf3 Nc6 3. → Ausgabe 1. e4 e5 2. Nf3 Nc6 3. Nf3
  • 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 + examples war ziemlich ordentlich, aber nicht so stark wie gpt-3.5-turbo-instruct
  • Die beiden Modelle spielten 50 Partien, und in allen Partien hatte gpt-4o Weiß
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 + examples eine Schätzung von etwa 1750 - 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-instruct dieselben 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-4o im Chat-Modus schwächer ist als gpt-4-base im 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-base gut spielen würde, wenn man einen Chat-Modus simuliert, oder ob gpt-4o im Completion-Modus gut spielen würde
  • Es ist gut möglich, dass es noch weitere Wege gibt, gpt-4o zu 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-4 angewendet wurde, spielte dieses Modell nicht gut Schach
  • Die gefundene Kombination könnte speziell auf gpt-4o zugeschnitten sein; für gpt-4 wä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

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

    • Ein interessanter Punkt, den ich in einem Schach-Livestream gehört habe: Selbst menschliche Super-Großmeister haben enorme Schwierigkeiten, extrem ungewöhnliche Stellungen zu bewerten oder zu lösen, wenn sie nicht aus einem logischen Eröffnungs-Mittelspiel-Endspiel-Verlauf entstanden sind.
      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.
    • Es ist ziemlich seltsam, dass behauptet wird, das System verstehe Schach, während weiter unten im Artikel steht, dass man nach 10 Versuchen keinen legalen Zug bekam und ihn durch einen zufälligen Zug ersetzt hat.
      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.
    • Zum jetzigen Zeitpunkt scheint ziemlich klar, dass LLMs das, was man allgemein Schlussfolgern nennt, nicht erreichen.
      Echte Schlussfolgerung erfordert wohl symbolische Logik und Abstraktion; ein LLM ist ein Next-Token-Prädiktor.
    • Reicht dieser Test allein aus, um das zu beweisen? Wenn ein LLM nur mit Mengen legaler Züge trainiert wurde, könnte es funktional gelernt haben, wie sich die einzelnen Figuren bewegen können, ohne tatsächlich zu schlussfolgern.
      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.
    • Das Problem ist, dass ein LLM nicht lernt, wie man in einer bestimmten Stellung zieht, sondern dass Internetarchive normalerweise nur Partienotationen enthalten.
      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 bin ein Schachspieler auf Expertenniveau und habe gesehen, wie mehrere Leute in meiner Spielstärke in Offline-Partien mit klassischer Bedenkzeit illegale Züge gemacht haben.
      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.
    • Die Formulierung „Wer Schach kennt, macht keine illegalen Züge“ ist etwas ungenau.
      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.
    • Das Problem ist, dass LLM-Forscher die Frage, wie LLMs intern tatsächlich funktionieren, weitgehend aufgegeben haben.
      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.
    • Wenn ein LLM nur die Zugfolge bekommt und nicht die Stellung, spielt es im Grunde Blindschach.
      Um beim Blindschach niemals illegale Züge zu machen, muss man ziemlich gut sein.
    • Die Diskussion in diesem Thread überrascht mich.
      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

    • Ich halte das nicht für den zentralen Punkt
      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
    • Illegale Schachzüge sind rechnerisch trivial zu erkennen, also ist das etwas völlig anderes als das Herausfiltern falscher medizinischer Ratschläge
    • Wenn man ein Skript schreiben könnte, das falsche medizinische Ratschläge automatisch entfernt, könnte der Vergleich passen
      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
    • Bei 3-turbo-instruct liegen unter 8205 Zügen grob 5 oder weniger illegale Züge vor
      Es steht hier nicht dabei, aber turbo instruct wurde früher schon einmal evaluiert
      https://github.com/adamkarvonen/chess_gpt_eval
    • Scharfe Beobachtung. Ähnlich haben auch Andrew Ng und ein Team der Stanford University in ihrem bekannten Nature-Medicine-Paper auf Kardiologenniveau denselben Trick mit Overfitting beim Trainings-Test-Verhältnis gespielt
      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

    • Ich habe einmal vorgeschlagen, dass man ein Modell darauf trainiert haben könnte, gut Schach zu spielen, um zu sehen, ob das der allgemeinen Intelligenz hilft, so wie Mathematik- und Code-Training auch andere Aspekte logischen Denkens verbessert
      Schließlich hat OpenAI viel Erfahrung mit Game AI
      https://news.ycombinator.com/item?id=42145215
    • Das wirkt etwas paranoid
      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
    • Die einfachste und plausibelste Erklärung ist, dass OpenAI das Trainingsziel geändert hat
      Anfangs fanden sie Schach vielleicht beeindruckend, und morgen könnten sie Go oder die Fähigkeit zum Gedichteschreiben beeindruckend finden
    • Ich wünschte, dieser Ansatz würde auch in anderen, praktischeren Bereichen eingesetzt
      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?

    • Ich glaube, hier wird der Absicht zu viel Gewicht gegeben. Ein LLM hat keine Absicht, sondern ist ein mathematisches Modell, das darauf trainiert wurde, die plausibelste Ausgabe zu erzeugen.
      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.
    • Ich denke, das ist eindeutig implizit in dem Prompt „Sie sind ein Schachgroßmeister“ enthalten.
      Dieser Satz dürfte die Wahrscheinlichkeit erhöhen, Tokens für den bestmöglichen Zug zu erzeugen.
    • Selbst wenn man es in den Prompt schreibt, wäre es wohl eher Dekoration.
      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.
    • Auch bei Code-Generierung sagt man nicht nur „Sie sind Python-Experte und hier ist Code“, sondern erzielt meist bessere Ergebnisse, wenn man die gewünschte Ergebnisrichtung nennt.
      Deshalb fand ich es überraschend, dass Formulierungen wie „und gewinnen Sie“ oder „Schwarz gewinnt“ fehlten.
    • Außerdem lautet der Prompt nicht „der beste Zug“, sondern „wählen Sie den nächsten Zug“.
      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.

    • Ich glaube nicht, dass ein ASCII-Brett einen großen Unterschied machen würde.
      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 2 wird aus den Gründen, die andere bereits genannt haben, wohl nicht helfen.
      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.
    • Chain-of-Thought hilft bei vielen Problemen, verschlechtert die Schachleistung von GPT aber eher deutlich.
      In meinen Schachexperimenten vor 1,5 Jahren war der Trick, die gesamte Zugfolge zu wiederholen, ohne Fine-Tuning die beste Methode.
    • Da diese Formulierung in den Trainingsdaten relativ selten ist, ist es wahrscheinlicher, dass sie die Antwort verschlechtert statt verbessert.
      Ich würde die Ergebnisse gern sehen, wäre aber ziemlich überrascht, wenn es besser würde.
    • Ich denke, die Verbesserung beim Wiederholen aller bisherigen Züge kam daher, dass man dem LLM mehr Zeit und Raum zum Denken gegeben hat.
      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.

    • Das fühlt sich intuitiv sehr richtig an.
      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.
    • Der Einsicht, dass das Bereitstellen von Beispielen nützlicher ist als Fine-Tuning, stimme ich zu.
      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

    • Den nächsten Zug einer Experten-Schach-Policy vorherzusagen, ist lediglich gut erforschtes Imitationslernen
      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