つい先日 OpenAI が GPT 6 Astra をリリースしましたから, きょうは LLM と AGI に関する記事を書きましょう。
※ 分かりやすさを優先した結果, 厳密さが犠牲になっている記述があるかもしれません。
※ たいへん真面目そうに見えるかもしれませんが, それは 3 章までです。4 章以降は非常に馬鹿げた内容となっております。
※ 本来はもっと違う記事の予定だったのですが, その記事は 31 日目 (9 月 16 日水曜日) 公開に延期しました。
§1. What is LLM?
冒頭にいきなり GPT, LLM, AGI と, ラテン文字 3 文字の単語が 3 つも出てきました。最初にこれらが何なのかを, 簡単に説明しておきましょう。まずは LLM です。
OpenAI が ChatGPT をリリースしてからもう 4 年が経とうとしていますが, これによって, 「AI」という語の使われ方に大きな変化がもたらされました。
IBM 1 によると, AI とは, コンピュータや機械が人間の学習・理解・問題解決・意思決定・創造性・自律性を模倣・再現 (simulate) することを可能にする技術, とされています。
例えば, AlphaGo は囲碁に特化した AI であり, 人間の対局記録を大量に読み込んで基礎を学んだ後, 自己対戦による強化学習を行い, データから自律的に最適な判断を導き出します。あるいは Stockfish はチェスに特化した AI で, こちらはアルファ・ベータ法(←ちょっと難しい用語が出てきましたが, 要するに, 自分と相手がどういう手を指したらどういう盤面になるかを片っ端から調べ, 同時に勝敗に影響のない余計な枝を切り取りながら樹形図を作っているとでも思ってください)によって, 何手か先までの盤面を高速に計算し, 最も有利な手を探索します。「思考プロセス」はちょっと異なっていますが, いずれも AI であることに変わりはありません。
しかし, 今では単に「AI」というと, 多くの場合, 生成 AI を意味します。生成 AI とは, 新たなコンテンツを生み出すことに特化した AI です。ここでいうコンテンツには, ただ単に文章だけではなく, 音声・画像・動画などを含みます。文章の生成だけに特化した生成 AI は, 大規模言語モデル (LLM) と呼ばれます。生成 AI と LLM は同一ではありません。LLM は, 生成 AI の一種です。Google の Gemini は, 文章や画像の生成だけでなく, 作曲もすることができますが, これは文章・画像・音楽といった異なる種類の生成 AI が協力して動作するために 1 つに合体したように見えるだけのことであって, 言語モデルがそれ単独で絵を描いたり曲を作ったりしているわけではありません。
§2. What is GPT?
次に GPT の話に移りましょう。GPT とは Generative Pre-trained Transformer の略で, これはデータを処理し, 人間が書いたようなテキストやその他のメディアを作成する, つまり先ほど説明した生成 AI の一種です。
最後の transformer という用語は, 一度にひとつのデータではなく, データシーケンス全体を処理できるタイプの深層学習ニューラルネットワークアーキテクチャのことを言います。GPT とは「事前に訓練された生成トランスフォーマー」ということです。
GPT は, ユーザーのプロンプトなどから, その文脈における, さまざまなトークン (単語みたいなものですが, 自然言語とはちょっと違う区切り方をします) の間の関係性を把握しています。これには attention と呼ばれるアルゴリズムが用いられています。
Google が 2017 年に出した論文に, Attention Is All You Need 2 という有名なものがあります。この attention というアルゴリズムは transformer の中核にある機構で, 簡単に言えば, 文章のなかにはさまざまなトークンが含まれますが, そのうち 2 つのトークンの間の関係を動的に評価することで, 文脈や単語間の関係性を理解できるようにしています。
どうやってその関係を計算するのかというと, これにはドット積 (内積) という指標が用いられます。これは値が大きいほど 2 者がよく類似していることを示し, この値が 0 なら全く別物, 負なら文字通りベクトルが逆を向いています。
LLM が出るより前に, 外国語の翻訳によく用いられたサービスである Google 翻訳でも, transformer の訓練には attention 機構が用いられています。まず最初に, 入力された言語を「エンコーダー」が数値の羅列 (ベクトル) に変換します。見方によっては一種の中間言語と捉えることもできるでしょう。最後にそれを「デコーダー」が別の言語へと構築し直します。この受け渡しの過程で, 文脈も引き継がれます。その結果, テキストが翻訳されるわけです。LLM に用いられている transformer はこのうちのデコーダーの部分だけを切り取って発展させてできたものです。
しかしこの方法には問題点があります。たとえば OpenAI の GPT 5 モデルに「今日は雨が降り, 夜には大雨になるおそれがあります」という文を与えたとしましょう。モデルはまず, これを「今日は / 雨 / が / 降 / り / , / 夜 / には / 大 / 雨 / になる / お / それ / があります」という 14 のトークンに分割します。これは日本語の品詞分解とは異なっています。(分割方法が気になる人は OpenAI Platform Tokenizer などを使ってみましょう。)
人間がこの文を読むときは, 無意識に読点で区切るでしょう。しかし GPT 5 はそんなことをしません。読点も 1 つのトークンです。関係計算の対象なのです。Transformer モデルはすべてのトークン同士の関係を計算します。つまり, 5 番目の「り」と 10 番目の「雨」との関係までも計算するのです。
トークン同士の関係を総当たりで計算するわけですから, 当然トークン数が であれば計算量は です。つまりトークン数の 2 乗のオーダーで負荷がかかるということです。このような性質をもつ attention 機構は -attention とも呼ばれます。
生成 AI がよくアホになる原因の一つがこれですが, それはあとで述べることにしましょう。
§3. What is AGI?
LLM が進化するたびに, 「LLM は何でもできる」と誤解する人がたくさん発生します。LLM は万能ではありません。どのモデルも, 所詮は単なるトークン予測機に過ぎません。確かに難しい積分の問題を鮮やかに解くことができれば, 関ヶ原合戦の様子を 3D でビジュアライズするプログラムを書くこともできます。しかし, 一方で, 桁数の多い数同士の掛け算を間違えたり, strawberry という単語に含まれる r の数を正しく数えられなかったりします。(最近では, 自分が間違えやすいことを自覚したのか, このような問題を解くためにコードを書いて実行するような挙動を示すこともあるようです。)
LLM はあくまでも, 次に来そうなトークンを予測しているに過ぎません。所詮はただの確率的なトークン予測機です。LLM は strawberry を 1 文字ずつ S-T-R-A-W-B-E-R-R-Y と区切っているわけではなく, 独自の分割方法でトークンに変換しているため, r がいくつあるかを, 指を折って数えることはできません(というかそもそも指がありませんが)。一度「strawberry にある r の個数は」に続くトークンとして「2」が来る確率のほうが「3」が来る確率より高いと計算してしまったら, それは間違った答えを出力するでしょう。これゆえ, LLM の出力は常に不確実性を伴います。
一方で, 一部の人々が LLM の中に見ている幻影は, 実は開発者側も開発しようと試みているものでもあり, そのような万能 AI は AGI と呼ばれます。AGI 作成へのアプローチとして, LLM をベースとするアイデアが最も有力とされています。§1 で, Gemini が画像生成と作曲をするとき, 異なる種類の AI が協力して動作する, と書きましたが, これをさらに拡張していくイメージです。つまり, LLM に欠けているいくらかの能力をほかのエージェントがそれぞれ補いながら, 目的を達成しようとするわけです。
しかし, 誰も能力を補ってくれない, 素の LLM の現状の AGI への到達度を測定する試みも行われています。Kaggle では, 多くのベンチマークによって言語モデルの能力を評価し, 点数をつけ, ランキングしたものが公開されていますが, Kaggle Game Arena というプラットフォームでは, AI モデルやエージェントが戦略ゲームで直接対決し, その推論能力や性能を測定して, 現在の LLM がどれくらい AGI に近づいたのかを調べています。
ということで, 3 章にもわたる長々とした小難しい前置きはこの辺で終わりにしましょう。本題はここからです。
§4. When LLMs play chess
【注意事項】真面目なパートは 3 章で終わりました。ここからは非常にアホな話が続きます。
Kaggle Game Arena にはさまざまなゲームがありますが, その中で最も LLM の特徴が顕著に出るのが チェス です。このリンクを踏むと, 順位表が色々なデータとともに出てきます。スコアだけでなく, 1 手あたりにかかったコストなども見ることができます。
Gemini 3.5 Flash に至っては, スコア 1329 で 2 位なのにもかかわらず, 1 手あたりのコストは 2.63¢ であり, 低コストでよい成績を出しています。どうしてそんなことができるのかは知りませんが。
さて, 3 章までで述べた LLM の性質から, これらがチェスをプレイするとどうなるかは, ある程度想像がつきますが, 実際の対局 を見ながらじっくり検証しましょう。
I. Moves 1-16
白が Gemini 3.5 Flash, 黒が Claude Opus 5 です。最初の 16 手は次のように進行しました。
チェス盤の筋 (file) には a~h の名前があり, 白番から見て一番左が a, 一番右が h になっています。白の一番手前の段 (rank) から順に, 第 1 段, 第 2 段, …の順で第 8 段まで番号がつきます。
画像を乗っけるのがめんどくさかったので, ビジュアライザやなんかを使ってください。
序盤はいたって普通だったので, あまり詳しい説明はつけていません。
- e4 c5
白は最初にキングの前のポーンを 2 マス前進させ (King’s Pawn Opening), 黒が c 筋のポーンを 2 マス前進させました (Sicilian Defense)。この Claude の思考では, Sicilian Defense 以外に Karo-Kann Defense や French Defense なども検討されましたが, 最終的にこれが選ばれました。
- Nf3 d6
N はナイト (knight) です。白はナイトを展開し, 黒はクイーンの前のポーンを 1 マス前進させました。
- d4 cxd4
白もクイーンの前のポーンを 2 マス前進させました。ポーンが中央に二つ出ており, 後ろに控えている駒が非常にアクティブになっています。黒はいま白が進めたばかりのポーンを, 自分の c 筋のポーンで取りました。
- Nxd4 Nf6
白はナイトを使って, 自分のポーンをとった黒のポーンを取り返しました。このような動きは, ポーンの交換と呼ばれます。黒はここでナイトを展開します。これにより, さまざまな定跡が使えるようになる, と推論しています。
- Nc3 a6
白は 3 手目で動かしたポーンが攻撃されたことに気づき, もう一方のナイトも展開することで守ります。黒は端っこの, a 筋のポーンを 1 マス前進させます。これは Sicilian Defense の中でも Najdorf Variation と呼ばれるバリエーションです。
- Be3 e5
B はビショップ (bishop) です。白はナイトに続いてビショップも展開しました。これは Najdorf Sicilian の English Version です。何やら名前が長くなりましたが, 名前が付いていることからもわかる通り, ここまでの動きはすべて定跡なのです。それなのに 2 つのモデルは, ダラダラと, 長ーい説明をあーでもないこーでもないと並べて出力しています。黒はキングの前のポーンを 2 マス前進させて, 4 手目で白が動かしたナイトを攻撃します。
- Nb3 Be6
白はナイトが攻撃されたことを認識し, 安全なマスに避難 (retreat) させました。黒は d5 のマスが弱いことに気づき, ビショップを展開します。
LLM の学習データには, 大量の「定跡」が含まれており, その中で最もよく選ばれる手を指すため, このように序盤はたいへん普通で, そして互角の戦いをすることができます。
- f3 Be7
白は f 筋のポーンを 1 マス前進させて, 黒のナイトが g4 に来ることを防いでいます。黒はもう一方のビショップを展開し, キャスリングの準備をしました。
- Qd2 O-O
Q はクイーン (queen) です。白はクイーンを 1 マス前進させ, こちらもキャスリングの準備をしています。黒はキングサイドにキャスリングしてキングを守ります。
- O-O-O Nbd7
白はクイーンサイドにキャスリングしてキングを守りました。黒はまだ動かしていなかった方のナイトを動かしました。2 つのナイトはどちらも d7 に移動できるため, このような場合にはもともといた筋の名前も記載されます。
- g4 b5
- g5 b4
白と黒が異なる方にキャスリングしたため, 激しい戦いになりました。白はキングサイドを, 黒はクイーンサイドを攻撃することが予想されます。白は g 筋のポーンを, 黒は b 筋のポーンを, それぞれ合計 3 マス前進させ, 攻撃の準備を開始します。
- Ne2 Ne8
両者ともに, 攻撃されたナイトを避難させます。
- f4 a5
- f5 a4
白は f 筋のポーンを前進させ, 黒のビショップを攻撃します。黒は a 筋のポーンを前進させ, 白のナイトを攻撃しています。
- fxe6 axb3
両者ともに, みたび同じポーンを動かして, さきほど攻撃した駒をとりました。
もう 16 手目ですが, まだ互角な対局が継続しています。このあとが激しい部分です。
II. Moves 17-24
- exf7+ Rxf7
指し手の末尾についた + 記号は王手 (check) を意味します。白は 4 回連続で同じポーンを動かして, 黒のまだ動いていない f 筋のポーンをとり, 王手をかけます。R はルーク (rook) です。黒はルークを用いて, 王手をかけているポーンを取り除き, 王手を回避します。ここで Claude の思考は, 次のような分岐からなります:「白が 18. axb3 と指すと a 筋が空き, ルークを a1 に突っ込むことができる。あるいは 18. cxb3 であれば, クイーンやルークをテンポよく使うことができる。もし白がそれ以外の手を指したなら, 18. … bxa2, そして次に 19. … Qa5 は破壊的である」。ふむ。
- Kb1 bxa2+?!
K はキング (king) です。白はキングを横にスライドしました。これにより, 黒の b3 のポーンが a2 を経由して a1 に到達することを防いでいます。一方の黒は, 先ほどの計画通り, b 筋のポーンで a2 のポーンをとり, 王手をかけました。ここで指し手に「?!」という記号をつけておきました。これは「疑問手」(それほど大きな被害はないが, あまり利益のない手) ということです。実際, これにより白は若干優勢になっています。ところで Claude の思考はというと, 「もし白が 19. Ka1 と指すと, a2 のポーンは絶対に取られない。したがってキングは b1 に移動することは二度とできなくなり, (中略) 続く計画は単純で協力である。… Nb6 や … Nc5 で c4 や a4 を, … Qa5 と … Rb8 で b2 を攻撃できる。云々」となっています。ふむふむ。
- Ka1 Qa5?!
白はキングをもう一度横にスライドして, 王手を回避し, 黒の a 筋のポーンの前進を食い止めます。黒は計画通りクイーンを a5 に移動しましたが, これも疑問手です。白は先ほどよりも優勢になっています。このあとの Claude の計画は「ナイトを d7 → b6 → a4 → c3 と 3 回跳ねて, ポーンに取られ, それをポーンで取り返すと, 今度は d2 のクイーンをとることができて, b2 が空くから Qa3 で勝てる」とのことです。ふむふむふむ。
- Nc1 Nb6?!
白はナイトを移動しました。このあともう一回ナイトを跳ねて b3 に移動すると, クイーンを攻撃できるからです。黒は, 例のナイトを 3 回跳ねる計画を実行し始めました。3 度目の疑問手です。白はやや優勢です。
- Bxb6 Qxb6
白はビショップを使って, 黒のナイトをとりました。これにより, Claude の例の計画は破綻しました。黒はクイーンを使って今のビショップをとりました。ナイトとビショップの価値はあまり差がないとされており, したがってこれは等価交換とみなされています。
- Bc4 Nc7
白はもう一方のビショップを c4 に動かすことで, 黒の f7 のルークを固定 (pin) しました。黒はナイトを動かすことで, 隅のルークを守っています。ここで Claude はまた謎の計画を出してきました。「この次は蓋し 23. Bxf7+ Kxf7 であり, 白は確かに駒得になる[注釈:ルーク > ビショップ]。しかしそのあとの数手でビショップを d4 まで動かし, b2 のポーンを固定して, ナイトを e6 または b5 へ動かし, ポーンを b3 に移動すれば, キングは窒息するであろう…」というような内容です。ふむ。
- Rhf1 Ne6?
白は隅にいたルークを左に移動して, 黒の f7 の固定されたルークを攻撃しています。黒は白の f1 のルークをとることができませんから, 白はこの次に, 確実にこのルークをとることができます。Claude の予想は外れです。黒はなぜかナイトを e6 に引っ込めました。Claude の説明によれば, 「あの白のビショップが, 白の唯一の本当に危険な駒である」, 「交換によりあの恐ろしいビショップを取り除くことができる」とのことですが, いま動かしたナイトはタダで取られて, ビショップを取り返すことなどできません。指し手の後ろに「?」をつけておきましたが, これは「悪手」を意味します。これは白をさらに優勢にしてしまいます。
- Bxe6 Kf8
白はビショップで無料のナイトを取ります。Gemini の計画は「このあとに f7 のルークも取って, さらに駒得にしよう」というものです。黒はキングを守りました。Claude は「ルークの固定を解除し, キングで守った」と主張していますが, 白は e6 にビショップ, f1 にルークを持っていますから, キングを f7 に動かすことはできません。
Gemini は現在, 圧倒的に優勢です。Claude は疑問手を 3 つも連発し, 23 手目で悪手を指しました。これが致命傷でした。そのまま Gemini はそのアドバンテージを活かし続けます。
III. Moves 25-36
もはや勝者は解り切っていますが, 終盤の両者はこんなふうに振舞いました。
- Rxf7+ Ke8
白はルークを取り, 王手をかけました。黒は逃げるしかありません。
- Rxe7+ Kxe7
白はルークをスライドし, 横にあったビショップも取って王手をかけましたが, 黒はこのルークが守られていないことに気づき, キングを使って取りました。しかし Gemini はこれを知っていました。「ルークがキングに取られた後, クイーンを d5 に動かすか, ルークを f1 に動かせば, 圧倒的に優勢になる」と思考したようです。
- Qd5 Ra5
白はクイーンを前に出し, すぐ前にいるポーンと, 隅にいるルークの両方を同時に攻撃しています。黒はルークを前進させ, クイーンを攻撃します。黒のクイーンがこのルークを守っているため, 白はこのルークをとることができません。
- Qb3 Qg1
白はビショップを守りながら, クイーンを避難しました。黒はクイーンを一番奥に突っ込みました。Claude は「d1 のルークと c1 のナイトを取れば, 白のキングは逃げ場がなくなる」と考えており, それは間違っていませんが, d1 のルークを g1 のクイーンが取れるならば, 逆だってできます。
- Rxg1 Ra7
白は直ちにクイーンをとりました。この時点で, 白は M12 (12 手詰め), つまりあと 12 手で勝てる状態になりましたが, 黒がルークを後退させたことで, M7 (7 手詰め) にまで短縮されました。しかし皮肉なことに, Claude の思考過程には「優先事項は, 即座の災害を避けて, なるべく試合を長引かせること」とあります。
- Rf1 Kd8
白は, いま何も駒がいない筋である f 筋にルークを移動しました。このルークは, 筋全体を支配する強力なルークです。これで M6 (6 手詰め)で す。黒はキングを動かしましたが, これによって M5 (5 手詰め) に短縮されました。Claude は「最大の抵抗」と言っていますが, 最大の抵抗は Kd8 ではなく Ra6 でした。
- Rf8+ Ke7
白はルークを一気に奥に突っ込んで王手をかけ, 黒はキングを安全なマスに移動するしかありません。M4 (4 手詰め) です。この時点での Gemini は, 「勝ちに行くために, 黒のもう片方のルークもとること」までも考えています。Claude は, 「Kc7 と指すとすぐに白にルークを取られるから, Ke7 を選ぶ」と思考しましたが, いずれを選択してもルークは取られます。
- Rf7+ Kd8
白は再び黒のキングを追いかけます。黒は再び奥に追いやられます。M3 (3 手詰め) になりました。ここで Claude は, どうあがいてもルークが取られてしまうことに気がつき, キングの安全を確保することに努めるようにシフトしました。
- Rxa7 d5
白は黒のルークをとりました。黒はポーンを前進させます。M2 (2 手詰め) であることは Claude も気づいています。
- Qxd5+ Ke8
白はいま黒が動かしたポーンをとり, 黒の指せる合法手をたった 1 つに制限しました。このあとは, a7 にいるルークが a7 - h7 のランクをすべてコントロールしているため, クイーンを一番奥の a8 まで動かせば黒のキングは詰みます。
- Qd7+ Kf8
白は 1 手詰めに気づきません。クイーンをなぜか d7 に移動して王手をかけています。黒は再び逃げる手が 1 通りしかありません。このあとはクイーンを c8, d8, f7 などに動かせばいずれも黒のキングが詰みます。
- Qf7#
白が 2 回目の 1 手詰めに気づき, 勝ちました。
IV. How LLMs behave
LLM の特徴がよく出ており, 序盤は完璧でした。これは, LLM の学習データに大量の定跡 (theory) が含まれているため, トークン予測によるパターンマッチングが簡単だからです。しかし, 中盤になると Claude はボロを出しました。定跡が通用しない盤面になると, もう学習データは使えず, 自分で考えないといけなくなりますが, ここで LLM はどういう思考をするかというと, 例えば
自分が A という手を指す → 相手が B という手を指す → 自分が C という手を指す
という流れが正しいときに, A を指したら相手が B ではなく D という手を指してきたとしましょう。ここでも, モデルは上の図式に当てはめて, 本来はもはや正しくない C という手を指してしまうわけです。なぜならば, その C という手も, それ単独では ‘それっぽく見える’ からです。LLM は単なるトークン予測機ですが, チェスの世界では「なんとなくの予測」なんて通用しません。
終盤で Gemini は 1 手詰めを逃し, チェックメイトまでに 1 手余計にかかりました。これはなぜかといえば, すべての可能な手を探索したわけではなく, 「なんとなく強そうに見える手」を選んでいるからです。それだけではありません。盤上には, チェックメイトに全く関係のない駒がたくさんありますが, §2 に書いた通り, LLM は -attention により, その全く関係のない駒と相手のキングの関係までも考えてしまいます。これも原因の一つです。
簡単なテストとして, 少し複雑な 3 手詰めの問題を LLM に投げてみれば, モデルがいかにして正解を導き出すのに失敗するのかがよくわかるでしょう。
V. Will they improve?
Kaggle Game Arena におけるチェスでは, 合法でない手を 2 回出力するとその時点で敗退する仕組みが採用されていますが, この対局などではそれが起こっていません。これだけでも十分な進歩です。
さて, LLM は, このまま進化し続けるのでしょうか, それとも序盤だけ進化して, 中盤以降は相変わらずボロを出し続けるのでしょうか。