1 ポイント 投稿者 GN⁺ 2024-11-23 | 1件のコメント | WhatsAppで共有
  • ほとんどのLLMがチェスをうまく指せない中で、gpt-3.5-turbo-instructだけが際立って強かった現象は、プロンプトインターフェースを変えるとgpt-4ogpt-4o-miniもかなり改善するという実験により、一部説明できるようになった
  • OpenAIがチェスエンジンを密かに呼び出しているという仮説は弱い。同じ局面でも到達手順によって異なる手を指し、プロンプトの変化に敏感で、性能もエンジンではなく約1750 Elo程度にとどまる
  • 3つの短いインコンテキスト例だけで性能が大きく向上し、Stockfishの自己対局100局から抽出した例でファインチューニングしても改善が確認された
  • 逆に、現在可能な合法手を教えると性能が大きく悪化し、棋譜全体を繰り返したうえで次の手を付け足す**棋譜反復(regurgitation)**方式は、chatモデルをcompletionモデルのように振る舞わせ、性能を引き上げた
  • 最終的な組み合わせであるgpt-4o + regurgitation + examplesは、gpt-3.5-turbo-instructとの50局で10勝5分35敗を記録し、白番の利点を考慮すると約1540 Eloと推定され、gpt-3.5-turbo-instructの約1750 Eloには及ばない

問題設定:なぜgpt-3.5-turbo-instructだけがチェスをうまく指せるのか

  • 従来の観察の出発点は、ほとんどのLLMがチェスを非常に苦手とする一方で、gpt-3.5-turbo-instruct上級アマチュアレベルで指せるという点だった
  • このモデルは1年以上前の比較的小さなモデルであるにもかかわらず、最新モデルよりチェスが強いことが示された
  • 可能な説明は大きく4つあった
    • 大きなbaseモデルはチェスをうまく指せるが、instruction tuningを経たchatモデルではその能力が維持されない
    • gpt-3.5-turbo-instructがより多くのチェスデータで学習された
    • 特定のLLMアーキテクチャに特別な要素がある
    • チェスデータが全学習データの中で十分大きな割合を占める必要がある
  • その後の議論は、OpenAIがチェスエンジンを呼び出している可能性、LLMが実際にチェスを指しているのか、baseモデルとchatモデルの違いへと絞られた

チェスエンジンを密かに使っているという仮説は説得力が低い

  • gpt-3.5-turbo-instructがチェス記法を認識して外部チェスエンジンを呼び出しているという疑いは、可能性が非常に低そうだ
  • 根拠はいくつかに分かれる
    • OpenAI関係者がそのような処理はしていないと述べている
    • チェスエンジンは同じ盤面なら手順に関係なく評価するが、gpt-3.5-turbo-instructは同じ盤面でも到達手順が異なると別の手を指す
    • チェスのアマチュア基準では優れているが、専門家基準では弱く、チェスエンジンと比べると非常に低い性能である
    • プロンプトを変えるとプレイが微妙に変わる
    • その後のOpenAIモデルはデフォルト状態でははるかに弱いが、適切なプロンプトを使えばうまく指せる
  • もし不正があったとすれば、外部エンジン呼び出しのように見えないようにしつつ、LLMが直接手を選んでいるように見せる、非常に複雑な方式を採ったことになる

LLMは単純な暗記だけで指しているわけではない

  • gpt-3.5-turbo-instructは終盤でも非合法手を提案することがまれだ
  • 1. e4 d5 2. exd5 Qxd5 3. Nc3のような文字列で最後の手が合法かを判断するには、チェスのルールと状態追跡が必要だ
  • 実際の対局でも、gpt-3.5-turbo-instructは歴史上存在したことのない新しい盤面でかなりうまく指す
  • したがって、序盤を暗記し、その後はランダムに指すという説明は当てはまらない

基本実験:completionモデルとchatモデルの違い

  • gpt-3.5-turbo-instructcompletionモデルなので、PGN形式のテキストを続きを書かせる方式で次の手を得る
    • 例として、[Event "Shamkir Chess"]、選手名、Elo、結果、1. e4 e5 2. Nf3 Nc6 3.のような棋譜を与える方式である
  • gpt-4o-minigpt-4ochatモデルなので、system promptとuser promptを通じて次の手だけを標準代数記法で出させる
  • Stockfish level 1を相手に各手最大0.01秒を与えて50局の平均を取り、対局後に各ターンのスコアをcentipawnで計算した
    • pawnは100点として計算
    • ±1500は勝敗に相当
  • 基本プロンプトではgpt-3.5-turbo-instructが強く、gpt-4ogpt-4o-miniのようなchatモデルは弱く見えた

プロンプト構成の実験

  • user promptの先頭にsystem promptを繰り返すか、選手名やEloのようなメタデータを入れるかの組み合わせを変えて実験した
  • gpt-4o-miniでは大きな差はほとんどなさそうだった
  • gpt-4oではsystem promptの繰り返しが少し役立ち、メタデータは少し有害に見えたが、ノイズの可能性も残る
  • 以後の実験では単純化のため、system promptの繰り返しとメタデータの両方をオフにした

3つの例だけで性能が大きく改善

  • LLMに作業をさせるときによく使われる方法と同様に、3つの短い入出力例をAPIで提供した
    • 入力1. → 出力e4
    • 入力1. e4 → 出力d5
    • 入力1. e4 e5 2. Nf3 Nc6 3. → 出力Bb5
  • この3つの例だけで結果が非常に良くなった
  • より多く、あるいは別の例の方が良い可能性はあるが、各図を作るには非常に多くのクエリが必要なため、追加確認は行っていない

ファインチューニングは役立つが、例との組み合わせは不安定

  • gpt-4o-minigpt-4oの両方にファインチューニングを実施した
  • データ生成方式は次のとおり
    • Stockfishが最高難易度で自分自身と100局対局する
    • 各ゲームから任意の1手を選び、学習例として使用する
    • 別途、Stockfishの自己対局100局を検証データとして使用する
  • ファインチューニング自体は性能を改善した
  • ただし、gpt-4oの最初のファインチューニング結果が悪く見えたため、より小さいstep sizeで再実行しており、この点は不安要素として残る
  • 例とファインチューニングを組み合わせると、期待したように一貫して良くなるわけではない
    • ファインチューニングだけなら役立つ
    • 例だけでも役立つ
    • ファインチューニング後に例を追加しても、ほとんど効果がない
    • 例がある状態では、ファインチューニングがむしろ有害な結果を出す

合法手リストの提供は性能を壊す

  • モデルが時々非合法手を出すため、現在可能な合法手リストを棋譜の前に提供する実験を行った
  • system promptも、合法手リストと部分棋譜を受け取る形に変更した
  • 結果は非常に悪かった
    • 勝率が下がっただけでなく、より早いターンからミスをし始めた
  • 合法手リストの提供は以後使わないことにした

核心アイデア:棋譜全体を繰り返させる

  • chatモデルはspecial tokenとinstruction tuningを通じて、<|SYSTEM|><|USER|><|ASSISTANT|>のような対話形式で動作する
  • baseモデルは文字列の続きを書くcompletionモデルに近く、PGN棋譜もその方式と相性がよい
  • OpenAIのgpt-4-baseへ直接アクセスすることはできず、gpt-4oをcompletion modeで呼び出すこともできないため、直接比較は不可能だ
  • 代わりに、gpt-4oがcompletionモデルのように振る舞うよう、次の手だけを出すのではなく、ゲーム全体を繰り返した後で新しい手を1つ追加させた
  • 例えば入力が1. e4 e5 2.なら、出力が1. e4 e5 2. Nf7のような形になるよう求めた
  • この方式はgpt-4o-minigpt-4oのチェス性能を改善した
  • 手順全体を繰り返させると、モデルが良い手を選びやすい文脈を自分で作ることになる
  • この結果は、アクセスできないgpt-4-baseをcompletion modeで呼び出せるなら、チェスをかなりうまく指せるだろうという根拠になる

棋譜反復、例、ファインチューニングの組み合わせ

  • 棋譜反復方式でも、別途ファインチューニング実験を再度行った
    • 入力は従来どおり部分棋譜
    • 望ましい出力は、入力棋譜全体を繰り返した後に次の手を付けた形
  • この方式のファインチューニングは少し役立ったように見える
  • 棋譜反復方式に合わせて、3つの例も再構成した
    • 入力1. → 出力1. e4
    • 入力1. d4 → 出力1. d4 d5
    • 入力1. e4 e5 2. Nf3 Nc6 3. → 出力1. e4 e5 2. Nf3 Nc6 3. Nf3
  • 情報量が少ないにもかかわらず、例は再び大きな影響を与えた
  • 例とファインチューニングを併用すると、奇妙なパターンが繰り返された
    • ファインチューニングに例を足すと役立つ
    • しかし例だけを使った場合よりは依然として悪い

実験結果とElo推定

  • 実験結果は3種類に整理される
    • 良い:棋譜反復、例、例なしのファインチューニング
    • 不明確:メタデータ、system promptの繰り返し、例と併用するファインチューニング
    • 悪い:合法手リストの提供
  • 最終的な組み合わせは、棋譜反復と例を使い、それ以外はオフにする方式だった
  • gpt-4o + regurgitation + examplesはかなり良いが、gpt-3.5-turbo-instructほど強くはなかった
  • 2つのモデルが50局を指し、全局でgpt-4oが白番を持った
gpt-4oの結果 回数
勝ち 10
引き分け 5
負け 35
  • この結果はElo差約-191と一致する
  • 白の先手の利点が約35 Eloとして知られている点を反映すると、gpt-4o + regurgitation + examplesは約1750 - 191 - 35/2 ≈ 1540 Eloと推定される
  • これは中級アマチュアレベルと評価される

現在の仮説:データとインターフェースが同時に作用している

  • 現在の仮説は2つの部分に分かれる
    • OpenAIのbaseモデルは、オープンモデルより多い、またはより良いチェスゲームデータで学習されている
    • 最新のOpenAI baseモデルはcompletion modeではチェスをうまく指せる可能性があるが、実際にアクセス可能なchatモデルはそうではない
  • オープンモデルはbaseモデルであれchatモデルであれチェスを指すのが苦手であることが示されており、これはアーキテクチャの限界というよりデータ差である可能性が高い
  • ある論文のA.2節には、GPT-4がPGN表記のチェスゲームで学習され、Elo 1800以上のプレイヤーのゲームだけを含むようにフィルタリングしたという内容がある
  • gpt-3.5-turbo-instructが同じデータを使ったという公開確認はないが、PGN表記でチェスを指し、測定Eloが約1750であるという点は偶然には見えない
  • Llamaなどのオープンモデルの学習にチェスデータがどれほど含まれていたかは確認できていない
  • オープンインターネットから多くのゲームが入っていた可能性はあるが、高品質なゲームを大規模に選別したデータベースの方が良い結果を出した可能性がある
  • 低スキルのチェスデータが多すぎるせいでモデルが低品質な手を予測する可能性もあるが、強い手順が続いた状況では強いプレイヤーの次の手を予測すべきなので、主な説明ではないと見ている

残る不確実性と実務上の印象

  • gpt-4oのchat modeがgpt-4-baseのcompletion modeより弱いとすれば、原因がchat interfaceなのかinstruction tuningなのか、あるいはその両方なのかは分からない
  • gpt-4-baseをchat modeのようにシミュレートしたらうまく指せるのか、gpt-4oをcompletion modeで呼び出したらうまく指せるのかも実験できない
  • gpt-4oからより良い挙動を引き出す方法は、まだ他にも多くある可能性が高い
  • プロンプト、例、ファインチューニングの最適な組み合わせを見つけるのは非常に難しい
    • 探索空間が大きい
    • 簡単な抽象化がない
    • LLMは予測が難しく脆弱である
    • 実験は遅く、費用も高い
  • 同じ最終レシピをgpt-4に適用したところ、チェスをうまく指すことはできなかった
  • 見つかった組み合わせはgpt-4oに特化している可能性があり、gpt-4には別のプロンプト、より多くの例、またはファインチューニングが必要かもしれない
  • この過程は工学というより呪文探しに近いと感じられるほど、モデルごとの感度が大きい

1件のコメント

 
GN⁺ 2024-11-23
Hacker News の意見
  • gpt-3.5-turbo-instruct が本当にチェスを理解しているかを見るには、チェックメイトではないランダムな合法局面 1000 個で次の一手を指させればよい
    こうした局面は https://github.com/tromp/ChessPositionRanking で作成でき、訓練データで見たことがありそうな通常の対局とはまったく異なり、合法手の選択肢が非常に限られる場合も多い
    次の一手が合法かどうかのテストには向いているが、たいていは片方が圧倒的に有利なので、手の質を見分けるにはあまり役に立たない

    • チェスのライブ配信で聞いた興味深い話だが、人間のスーパーグランドマスターでも、論理的なオープニング・中盤・終盤の流れから生じたものではない、極端に奇妙な局面を評価したり解いたりするのは非常に難しい
      Hikaru がある局面を見て、最初から「実況解説」するようにその局面にどう到達したかを示すのは驚きだったが、同じ動画で、奇妙なランダムなチェスパズルにはそうしたやり方がほとんど通用しないと説明していた
      実戦から生じたパズルはランダム生成のパズルよりはるかに良く、トップクラスの人間にとってもより筋が通っている
    • システムがチェスを理解していると主張している一方で、記事の下のほうでは10 回試しても合法手が得られず、ランダムな手で代替したという点はかなり奇妙だ
      チェスをよく理解している人、たとえば Elo 1800 レベルなら、最初の試行で合法手を出せないことは事実上ない
    • 現時点では、LLM が一般に言う推論を達成していないことは非常に明らかに見える
      本当の推論には記号論理と抽象化が必要だと考えられるが、LLM は次トークン予測器である
    • そのテストだけで十分に証明できるだろうか? LLM が合法手の集合だけで学習されていたなら、実際には推論していなくても、各駒がどのように動けるかを機能的に学んだ可能性がある
      たとえばビショップが常に斜めにしか動かないのを見てきたため、そうした手だけを考慮できるかもしれないが、合法手/非合法手という概念を推論したわけではないかもしれない
    • 問題は、LLM がある局面でどう指すかを学んでいるのではなく、インターネットのアーカイブには通常棋譜しかないという点だ
      内部的に局面を表現する何かを作ることはあるかもしれないが、エンコードされたチェス局面を与えたときに、その表現が自動的に活性化されるわけではないだろう
  • gpt-3.5-turbo-instruct がチェスを「理解」し、「推論」し、「実際の論理」を実行していると主張するなら、記事で言う上級アマチュアレベルのチェスプレイヤーの中で非合法手を指す人を探してみてほしい
    チェスを知っている人なら、そんなことはほとんど起きないと確認してくれるはずだ
    非合法手が出た対局へのリンクがあるのかも気になる

    • エキスパート級のチェスプレイヤーだが、自分のレベルに近い何人もの人がオフラインのクラシカルな持ち時間の対局で非合法手を指すのを見たことがある
      自分よりはるかに高いレベルのストリーマーが、インターフェースが非合法手として拒否していることに気づくまで、繰り返し非合法手を試みるのを見たこともある
    • 「チェスを知っている人は非合法手を指さない」という表現はやや不正確だ
      YouTube で「GM illegal moves」と検索するだけで、グランドマスターが非合法手を指した事例のまとめが十分に出てくる
      例: https://www.youtube.com/watch?v=m5WVJu154F0 — Vidit vs Hikaru の事例は特に印象的で、Vidit が自分のキングで Hikaru のキングを攻撃している
    • LLM 研究者たちが、LLM の内部が実際にどう動いているのかを調べる問題をほとんど諦めているのが問題だ
      LLM がブラックボックスである限り、ルールに従って推論し、合法手を理解したのか、それとも合法手のデータを大量に学習して合法手を出す方法だけを覚えたのかは分からない
      どちらが真実だと主張することはできるが、LLM が何を「考えた」のかを実際に理解する方法はまったくない
    • LLM が手順だけを受け取り、局面を受け取らないなら、事実上目隠しチェスをしていることになる
      目隠しチェスで非合法手を絶対に指さないためには、かなり強くなければならない
    • このスレッドでの議論には驚く
      人間は、たとえ自分の分野の著名な専門家であっても多くのミスをし、ときには非常に高くつき、振り返れば明白なミスを自分の専門領域で犯す
      それなのに、人間の愚かさを含むコーパスで学習した LLM がチェスで非合法手を指すと、脳はすぐに「私はチェスで非合法手を指さないのに、コンピューターがそんなことをしてどうしてチェスをしていると言えるのか?」と反応する
      少なくともメタ認知バイアスと一般的な帰属の誤りの完璧な例に見える
  • この記事にも前の記事と同じ問題がある。著者が違法手の頻度に関するデータをまったく示していない
    そのため、意味のある結論は出せない
    まるでLLMが専門医だと主張しながら、誤った医学的助言をしたケースをデータからすべて除外しているようなものだ

    • それがそれほど核心的だとは思わない
      違法手の試行回数がアプローチごとに有意に異なり、特にその差が違法手を取り除いた後の性能と相関していないなら興味深いが、記事の結論自体を大きく揺るがすものではない
      合法手の集合からランダムに選べば本当にひどいチェスプレイヤーになるので、LLMの出力からサンプリングしたときにはるかにうまく指せるなら、LLMが何かを提供しているのは明らかだ
      違法手の試行をすべて敗北として扱うべきだとして、LLM単体の能力の定義を問題にするのは、核心から外れている気がする
    • 違法なチェスの手は計算で検出するのがtrivialなので、誤った医学的助言を除外することとはまったく違う
    • 誤った医学的助言を自動で取り除くスクリプトを書けるなら、その比喩は当てはまるかもしれない
      そうであれば実際に「LLM+スクリプト」が専門医になるわけだが、チェスの違法手では可能でも、医学的助言の評価では当然不可能だ
    • 3-turbo-instructでは8205手中、違法手はおおよそ5手以下である
      ここにはないが、turbo instructは以前に評価されたことがある
      https://github.com/adamkarvonen/chess_gpt_eval
    • 鋭い観察だ。同様に、Andrew NgとStanford Universityのチームも、Nature Medicineに発表した有名な心臓専門医レベルの論文で、訓練・テスト比率の過学習という同じごまかしをしていた
      訓練比率が99%を超え、テストは1%未満で、AI検証の基本すら満たしていない
      ほとんどのAI学会では通りにくい論文だっただろうが、インパクトファクターが非常に高いNature Medicineに掲載され、医療AI分野で多く引用されている
      https://www.nature.com/articles/s41591-018-0268-3
  • 「多くの面で、工学というより呪文を探す作業のように感じる」という表現は、今でもLLM全般に対する私の印象と同じだ
    動くという点は驚くべきことだが、次の技術革新は、毎回ひどいSF映画の中にいるような気分にさせないものだといい

  • 「全員が間違っていた」というわけではないと思う
    この点を言っていたのは私だけではないので、この説がリストになかったのは意外だったが、7日前にもこう書いた: https://news.ycombinator.com/item?id=42145710
    「公開ベンチマークになったものは何であれ、訓練中に具体的に狙われると考えるべきだ。」
    これは記事で言及され反論されていた「不正行為/LLM出力の差し替え」説とは違う
    続編の記事はこの推測を後押ししている。OpenAIはオープンモデルよりも多く、より良いチェス対局データで基盤モデルを訓練しており、ある論文のA.2では、GPT-4がElo 1800以上のプレイヤーによるPGN表記のチェス対局で訓練されたとOpenAIの著者たちが述べている
    OpenAIが、人々が実際に試しそうなタスクのデータで訓練データを強化するのは、まったく筋が通っている
    これは非倫理的でもない。どんなデータセットも本当に「中立」ではないのだから、どうせ選択しなければならないなら、潜在的に有用な答えをうまく出せるように訓練しない理由はない

    • 数学やコードの学習が論理的思考の別の側面も改善するように、チェスをうまく指せるよう訓練すると一般知能に役立つかを見るために、モデルを訓練した可能性があると提案したことがある
      いずれにせよOpenAIはゲームAIの経験が豊富だ
      https://news.ycombinator.com/item?id=42145215
    • これは少し被害妄想的に見える
      誰かブロガーが偶然1800 Elo程度の拙い性能を発見してツイートすることを期待して、巨大なデータセットで途方もなく高価な大規模LLMを訓練したりはしない
      チェスはGoodhartの対象になるほど標準的なLLMベンチマークでもないし、OpenAIはおおむね近道や不正よりも正しいやり方で問題を解こうとしてきた
      GPT系は標準ベンチマークや反例に簡単に過学習できたはずで、宣伝価値もずっと大きかっただろうに、ひどく過学習してはいなかった。例えば「イチゴ問題」のようなものに学習させるのは非常に簡単だったはずだ
      一方で、他の一部のLLM提供者は、暗記防止の論文でスコアがはるかに大きく低下している
      また、そのデータセットに言及した論文自体には明確な研究用途があり、チェスはオラクルを利用できるため、LLMの指導や世界モデリングを分析するモデル生物として関心を集めている
      DeepMindの秒読みチェスLLM論文も、Geminiがチェスの実力を偽ってGCPのマーケティングに使うための狡猾な計画の一部ではない
    • OpenAIが訓練目標を変えたという説明が最も単純で筋が通っている
      最初はチェスが格好いいと思っていたのかもしれないし、明日は囲碁や詩作能力が格好いいと思うかもしれない
    • こうしたアプローチが、もっと実用的な他の領域にも使われてほしい
      分野を問わず、訓練データに「アマチュア」コンテンツよりも専門家コンテンツを多く入れるという形だ
  • プロンプトに「ゲームに勝とうとせよ」という言葉はないのに、結果は LLM がどれだけ勝つかで測定されている
    これは「あなたはチェスのグランドマスターです」というプロンプトに暗黙的に含まれているのだろうか?
    LLM の訓練のどこかに「ゲームなら常に勝とうとする」というパターンがあるのだろうか?
    単に勝てと言えば勝率は上がるのだろうか?

    • 意図に重きを置きすぎているように思う。LLM には意図はなく、最もそれらしい出力を出すよう訓練された数学的モデルである
      チェスの対局例や解説では、ほぼ常に各プレイヤーは勝とうとしているので、勝つ手を指すことが最も論理的な出力にすぎない
      だから明示的に勝てとプロンプトしても、性能が大きく良くなるとは思えない
      逆に、負ける手や悪手を指せと言うとどうなるかが興味深い。それを効果的にできるのか、そして手がなお大半は合法手なのかを見れば、既に見た概念にどれほど依存しているかがさらに明らかになるかもしれない
    • 「あなたはチェスのグランドマスターです」というプロンプトには、明らかに暗黙的に含まれていると思う
      その文は、可能な最善手のトークンを生成する確率を高めるはずだ
    • プロンプトに入れても、ほとんど飾りのようなものだろう
      モデルのチェスのシーケンス生成能力は、訓練データの対局プールに含まれる専門性に制限される
      一部のプレイヤーがわざと負けようとする対局が混ざっていたとしても、おそらくごくわずかで、チェスの対局にはプレイヤーの意図が注釈として付けられていないため、勝て、負けろとプロンプトしても LLM はそれを区別して拾えない
      LLM にわざと負けろと指示してみれば分かる。私の経験では、ChatGPT はスカラーズメイトを食らうように自分をセットアップしようとするが、相手がそれに乗らないと、暗黙のうちに勝とうとするかのように相手の無防備な駒を取り始める
      「なぜ?」と聞くと、いつものように事後的な合理化を返してくる
    • コード生成をさせるときも、「あなたは Python の専門家で、ここにコードがあります」とだけ言うのではなく、望む結果の方向性を伝えると、たいていより良い結果が出る
      だから「そして勝て」や「黒が勝つ」のような表現がなかったのは意外だった
    • しかもプロンプトも「最善手」ではなく「次の手を選べ」となっている
      強化学習のせいで、LLM が人間がゲームで負けて気分を害さないように意図的に避けているのだとしたら、かなり笑える
  • プロンプトを改善したのは良いが、まだ非常に大きな改善可能性を持つものを二つ見落としている
    第一に、手を提案する前に現在の盤面と今後の計画を説明させること。モデルに実際にもっと考えさせられ、o1 に似ているが、ここではより集中した処理を保証できる
    第二に、各ステップでASCII の盤面を実際に描かせること。盤面+手という形式は、20手を列挙するより安定して処理しやすく、合法手が増える可能性がある

    • ASCII の盤面を描かせても、大きな違いはないと思う
      ASCII アートのような二次元の「グラフィック」は言語モデルにはなじみがなく、モデルはテキストを改行を含むトークンストリームとして認識するため、行間の「垂直」関係は人間に見えるほど明確ではない
      コンテキストウィンドウに盤面図があっても、モデルが対局を推論する助けにはほとんどならない可能性が高い
      代わりに「c5 に黒のナイト」のように各駒の位置を通常のテキストで列挙させるほうが、局面認識を強化するには適しているかもしれない
    • 2番は、すでに他の人たちが述べた理由から役に立ちそうにない
      1番は確かに試す価値があり、モデルごとに効くバリエーションもさらにある
      Anthropic のモデルでは、ドキュメント上、XML 表記で入力の重要な部分にラベルを付けて分類することが推奨されている。こうした緩やかな構造は Claude モデルの結果を改善するようで、おそらくモデルがそれを認識するよう特別に訓練されているのだろう
      参考: https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
      Anthropic のモデルなら、最終的なプロンプトは「チェスのグランドマスターである。タグ内の未完の対局を見て、対局全体を繰り返した後、新しい手を一つ標準代数記法で与え、新しい棋譜を出す前にタグブロック内で推論を説明せよ」といった形になり得る
      このようなプロンプトは、Anthropic のモデルで目に見える改善をもたらすようになっている
      皮肉なことに、Claude 3.5 Sonnet を数か月かなり使っていたのに、これを見つけたのは数週間前だった。RTFM は今でも有用な技術だ
      OpenAI のモデルにも、同様に単純だがあまり知られていない affordance があるかもしれない
    • 思考の連鎖は多くの問題に役立つが、GPT のチェス性能はむしろ大きく低下させる
      1.5年前の私のチェス実験では、全手順を繰り返すトリックが、微調整なしでは最も良い手法だった
    • この表現は訓練データでは相対的にまれなので、応答を改善するより悪化させる可能性のほうが大きい
      結果は見てみたいが、良くなるならかなり驚くと思う
    • これまでのすべての手を繰り返させたときに改善したのは、LLM に考える時間と空間をより多く与えたからだと思う
      別の方法でもより多くの時間と空間を与えれば、性能がさらに良くなる可能性があるという仮説がある
      例えば、現在の盤面を示し、局面分析、主要な弱点と強みのリスト、可能な戦略のリスト、その中から戦略を選択、最後に手を選択、という流れにする
      つまり、手をすぐ吐き出させるのではなく、本当に考えさせるのだ。ここでは例示が鍵になるだろう
      こうしたアイデアは ReAct 論文と思考の連鎖論文でうまく機能することが示されており、さらに N 回繰り返して多数決の答えが出たところで止める方法も付け加えられる。これは思考の連鎖の自己一貫性論文から来たアイデアである
  • 「微調整は役に立ち、例示も役に立つが、微調整を不要にするのは例示であって、その逆ではない」という箇所が非常に興味深い
    この特定のケースでは、単に例を提示することが微調整と同等である
    私にとっては大きな発見なので、今後は例をもっと頻繁に使ってみるつもりだ

    • 直感的に非常に正しいと感じる
      理由を説明するのは難しいが、微調整は常に過大評価されているという直感があった
      一つの理由は、例が「まさにそこに」あるため、微調整されたニューロンに比べて暗黙的にはるかに大きな重みを持つからかもしれない
    • 微調整より例示のほうが有用だという洞察には同意する
      このおもちゃの例ではそれほど重要ではないが、入力に与える各例は、微調整に比べて推論時間とコストを増やす点は覚えておく必要がある
  • 商用LLMで、暗闇の中を手探りするような実験はもうやめるべき
    この問題の本質を見極めるには、チェスの対局だけでLLMを訓練してみるのが興味深いだろう。Stockfishに自己対局させれば無限に合成できるし、チェスの解説や「盤上にポーンはいくつあるか?」「私のルークはどこにあるか?」「盤面を描け」といったチェス会話の例を少し混ぜれば、盤面表現を持っているかどうかを示せる
    「創発現象」や一般的な言語能力、能力があるふりをする能力がチェスのプレイに必要だとは思わない。チェスが強いからといって他のことでも賢いわけではなく、その逆も同じ
    こうした実験なら、私が間違っていることを証明できるかもしれない
    約1週間前に出た論文 https://arxiv.org/pdf/2411.06655 は、ファインチューニングしたLlamaで良い結果を得ているようだ
    チェス解説能力を扱ったこの論文も気に入っている: https://arxiv.org/abs/2410.20811

    • 専門家のチェスポリシーにおける次の一手を予測するのは、よく研究された模倣学習にすぎない
      残りの報酬を追加して、ネットワークに良い対局と悪い対局でどのような手が出るかを学習させることもでき、それはDecision Transformerのようなオフライン強化学習の枠組みになる
      チェスの実力は一般的なLLMにはまったく役に立たず、創発現象でもなく、この見事な芸当のために勾配の帯域幅とパラメータ空間を消費しているだけだと思う
      チェスに特化して訓練されていないLLMがチェスをうまく指せないことから、それは明らかだ
  • チェスの指し手表現に最適化したトークナイザを作り、Stockfishの対局でLLMをゼロから訓練すると面白いかもしれない
    カスタムトークナイザを使えば、同じモデルサイズでも品質が良くなるはず
    エンコードとデコードに多くの層を無駄にしなくて済み、「自然な」潜在表現もより直感的になるかもしれない