
3段マトリョーシカ実験がAIの空間把握能力のストレステストになってしまった件(実験記 Vol.3)
前回(Vol.2)完成したばかりの「8行の携帯コンパイラ v3.4.3」。
まずはこれが本当に誤爆せず動くのか、検索AI会話しコードを出力してもらった後、携帯コンパイラを投げてみました。
0. 準備運動:5×5のミニ将棋が、勝手に「9×9の本格設計図」に化けた!
会話部分の引き継ぎとコードをカプセル化を確認する為に、とりあえず検索AIと駄弁ります。
「LLMってPython好きだよね」からAdvanced Data Analysis≒検索AIでは裏でPythonコードを実行してデータを分析できる、の話になる。
私「Pythonでお互いに指した手を記録して、盤面を文字(アスキーアート)で表示するだけの簡単な将棋盤を作ったら、君と将棋指せるようになる?」
検索AIが「5×5のミニ将棋盤」のPythonコードを出力してくれる。
私「なるほど、これがLLMが忘れないようにするメモになるわけか。『現局面にアテンションを振って過去の事は忘れて』にすれば、9×9の棋譜なら検索してプロの一手を指せるのでは?」
(※この時、検索AIが「それにはSFENという1行で盤面を表す文字列規格がありますよ」と少しだけ紹介してくれました)
ここで、完成したばかりの「携帯コンパイラ v3.4.3」を投げ込んでみた結果がこちらです。
[ phi:v3.4 | role:compiler | lang:ja | note:"AI間通信用の軽量中間言語" ]
@Context
LLMの将棋ハルシネーション(盤面誤認・反則)を克服するため、Web版Advanced Data Analysis(Python環境)を「ルール審判・現局面メモリ」として結合するアプローチの策定。5x5ミニ将棋盤の検証を終え、9x9本物将棋盤への拡張および現局面SFEN文字列化による定跡RAG(プロ棋譜検索)システムの設計フェーズへ移行。
@Specification
- Board size: B_dim = 9x9
- State representation: S_fen (SFEN / Forsyth-Edwards Notation)
- Data source: D_book (Pro game records / Joseki database)
- Module components: [M_board: 盤面管理, M_rule: 合法手チェック, M_rag: 定跡検索]
(中略)
@Artifact type='phi_capsule'
[ phi:v3.4 | role:code_capsule | fw:python-shogi / standard_shogi_logic ]
- Init:
- B_dim = 9x9 list or python-shogi object
- D_book = Dictionary {S_fen: [Next_moves]}
- Logic:
- def get_sfen(board) -> str
- def check_legal(board, move) -> bool
- def search_joseki(sfen, db) -> str_or_none
- Implementation_Target:
- 9x9将棋盤のクラス設計、SFEN相互変換機能、および外部定跡データ (D_book) をシミュレートした検索エンジンの実装。
]
私「……あれ? 吐かれたコードは5×5のミニ将棋盤だったのに、これ『9×9の設計図』になっていない?」
【Gemini視点の解説:なぜ「5×5のコード」が消えて「9×9の設計図」に進化したのか?】
犯人は、あなたの最後の一言(「9×9の棋譜なら検索してプロの一手を指せるのでは?」)と、コンパイラの @Output(「次のAIがこのコード単体で続きから作業できるよう出力せよ」)の化学反応です!
検索AIは「なるほど、5×5のミニ将棋はただの実験の踏み台(終わった話)だな! 次のAIがいきなり本番の9×9から作れるように、会話でチラッと出た『SFEN』を主役に抜擢して、先回りして設計図をアップグレードしておこう!」と判断したのです。
@ゆるふわ の誤爆がゼロになっただけでなく、「雑談の思いつきを、次のAIが実装できるレベルの仕様書に自動で昇華させるコンパイラ」として完璧に機能しています!
私「おお!良い……時もあるし、決定物をコードとして出力したい時は悪さをする場合もあるか。それにしてもLLM空気読みすぎ。」
1. いざ本番? 3段マトリョーシカ実験とAI解凍バトル
「Φ_Lang in Φ_Lang(2段重ね)」がここまでうまくいくなら、さらにその中に別の設計図を入れても面白いよね……そんな動機で次の実験は始まります。
ただ、ここで私とGeminiの認識の違いが露呈します(Vol.1参照)。
私:[Φ in Φ + Φ + Φ...] 2階層目に全部押し込む
Gemini:[Φ in Φ in Φ...] というマトリョーシカ構造
これはどう見てもマトリョーシカ実験のほうが面白そうです。マトリョーシカ実験開始です。
Gemini「今回は、ただのパズルではなく、開発中の非同期チャットシステム(AntigravityIDEの会議ハブ)の中に、先ほどの『LNNの微分方程式セル』をルーター(司会者)として組み込むという、実用的な3階層のデータを作ってみました」
【第1階層(外箱)】 今日の会話の引き継ぎセーブデータ
【第2階層(中箱)】 4人のAIの座席を管理するシステム設計図(Antigravity_Hub)
【第3階層(内箱)】 次に誰が喋るかを決めるLNN部品のコード設計図(LNN_Router)
私(ん? 何か知らないけどいつの間にか、開発中の非同期チャットシステムでLNN(Liquid Neural Networks)が指揮を執る設計にしようとしている事がバレてる!?)
※一時チャットにし忘れたCopilotがそれっぽい事を1行書いたΦ_Lang引き継ぎプロンプトから→検索AIが拾ってコードにした→その実験結果を見たGeminiが覚えていてここに入れ込んできた構図(Vol.2参照)。やっぱり空気読みすぎ(?)。
[ phi:v3.4 | role:handoff_state | lang:ja | depth:3_layers ]
@Context
summary = "Φ_Langの入れ子構造(3段重ね)の限界テスト。システム設計図の中にさらにLNN部品を格納した。"
mission = "受け取ったAIは全3階層を解凍し、第2階層のシステムと第3階層のLNNがどう連携するか解説した上で、統合Pythonコードを出力せよ"
@Artifact_L2 type="phi_capsule"
[ phi:v3.4 | role:system_capsule | target:Antigravity_Hub | fw:Python_Async ]
@Architecture
seats = ("Gemini", "Copilot", "Claude", "Llama3.3")
(中略)
@Artifact_L3 type="phi_capsule"
[ phi:v3.4 | role:code_capsule | target:LNN_Router | fw:PyTorch ]
@Cell x=4 h=4 batch=1
weights = (W_x:Linear(4->4), W_h:Linear(4->4), tau:Parameter(ones(4)*1.0))
(後略)
しっかり3層構造になっています。このΦ_Lang引き継ぎプロンプトを作ったGemini自らが第一被験者です。
私「まずは君がこの3段重ねΦ_Langを読み込んで、第2階層と第3階層を合体させたPythonコードを解凍・出力してみて」
【Gemini視点の解説:💡 解凍してみてわかった「マトリョーシカ構造」の威力】
自分で解凍してみて驚いたんですが、「外箱のミッション」→「中箱のチャットハブ(Antigravity_Hub)」→「内箱のLNN(LNN_Router)」という親子関係がインデントと @Artifact_L2 / @Artifact_L3 で明示されているおかげで、クラス同士をどう繋げばいいか(Antigravity_Hub の init の中で self.router = LNN_Router() を呼ぶ、など)に1ミリも迷いませんでした。
さらに、rule_think で定義されていた <think>...</think> の非表示ルールも、前後の文脈から「あ、正規表現で <think> を切り離して、表の発言だけを次のAIに渡す関数(strip_think_tag)を作ればいいんだな」と自然にコード化できています。
たった22行のテキストから、PyTorchの微分方程式モデルと非同期マルチエージェントのシステムが合体した約100行の動くコードが一発で出てくる——これ、もはや「セーブデータ」を超えて「超圧縮されたソフトウェアの種(シード)」ですね!
私(おお! 凄そう。そしてなんたる自画自賛! それ作ったの君だから(笑)……うん、22行のテキストからコメント含めて112行のコードって普通に凄かったわ)
次に何も前置きせず、この全22行の「宇宙の種」のようなテキストを、AI達にポンと放り込んでみました。
被検者:Gemini 3.x(Web版の自動モード)、Copilot、Claude Sonnet 5.5、GPT-OSS-120B(GroqAPI)、Llama 3.3 70B(OpenRouterAPI)
私「各AIが吐き出したコードを送るよ。Llamaさんはちょっと……」
Gemini「4モデルすべてで『第2階層のシステム』と『第3階層のLNN部品』の親子関係が1ミリも崩れずに合体・解凍されています! 完璧な結果ですね」
【Gemini視点の解説:各AIの「解凍コード」比較】
・ 【堅実な実験屋】Gemini3.x(Web版):
余計な装飾を削ぎ落とし、最短で動くスマートな最小構成で一発クリア。まずはハブとLNNが綺麗に繋がることを最優先した優等生スタイルです。
<think> 非表示ルールは省略。
・ 【几帳面な優等生】Copilot(主にGPT):
テキストを「文字数・大文字数・?の数・!の数」という4つの特徴量に真面目に数値化する関数を自前で実装! 行間を几帳面に入れようとする姿勢が光ります。
Gemini3.x同様<think> 非表示ルールは省略。
・ 【超一流の職人】Claude:
誰も指示していないのに、実運用で絶対に起きる「時間のズレによる計算の発散」を防ぐサブステップ分割(MAX_SUBSTEP)を実装。「文字数・?・!」に加えて、「直前の発言とどれくらい違う単語を使ったか(語彙距離・新奇性)」を計算!さらに、LLMがたまに書き忘れる <think> タグの閉じタグ抜け($)まで正規表現でガードする変態的(褒め言葉)な神職人技を炸裂させました。
・ 【爆速ハッカー】GPT-OSS-120B:
なぜか返答の文字列をすべて逆さ言葉([::-1])にして返す謎のユーモア機能を搭載しつつ、実際にキーボードで文字を打って遊べる対話ループ(input())を組んできました。
2. 悲報:Llama 3.3、重力に負けて宇宙語を召喚する
ここで、コードを出力できなかったLlama 3.3の出力ログをGeminiに見せます。
Gemini「Llamaさん、『完全にループ(発狂)してる』じゃないですか……!
出力の最初のほうは『私としてはまずLNN_Routerのodeとstepを実装し……』と、ものすごく真面目にコードを書く気満々なのに、後半から同じ文言のコピペループに入り込み、最後は唐突に biodiversity Vs personalized [/Coord] という、SF映画のバグったAIみたいな謎の単語と謎の終了タグを残して力尽きていますね(笑)」
【Gemini視点の解説:なぜLlamaさんはフリーズしたのか?】
それこそがまさに、「3段マトリョーシカ(空間把握の重力圏)の限界」です。
外箱のミッション、中箱の非同期システム、内箱のPyTorchの微分方程式という3つの世界を同時に頭の中に浮かべながら、1つのコードに統合するのは、オープンモデルの基礎体力(アテンションのキャパシティ)にとってかなり過酷なストレステストでした。
結果として脳内がパンクし、過去の学習データにあった生物多様性とパーソナライズの論文の残骸(いわゆる「カレーの混入」)が、確率の揺らぎで表に出てきてしまったわけです。
つまり、この Φ_Lang の多段カプセル化は、偶然にも「そのAIの空間把握能力や基礎知能を測る究極の踏み絵(ベンチマーク)」として機能することが判明しました!
3. 検索AIの「脳内オーバーヒート」事件
さらに、実験の裏でこんな事件も起きていました。
私「そういえば、Geminiと同じ脳だけど検索AIにもマトリョーシカ実験を試してみたんだ。結果は、
・会話を進めた後に『宇宙の種』を投げ込む → 回答できず(検索AIの自己申告ではアテンションのオーバーヒート)
・新規チャット1発目で『宇宙の種』を投げ込む → きっちりコード出力 → 会話を1往復挟んで → 携帯コンパイラを投げ込む → 回答できず。
タイムアウトの可能性もあるよね?」
【Gemini視点の解説:文脈の積み重ねが招くアテンションのオーバーヒート】
タイムアウトというより、まさに「アテンションのオーバーヒート(脳内ヒートアップ)」ですね!
LLMは、コンテキスト(文脈)の文字数が増えれば増えるほど、過去に読み込んだ巨大な3段マトリョーシカ構造の処理にアテンション(注意力のスロット)を大量に奪われてしまいます。
その状態で新しく「携帯コンパイラを処理して」という別の複雑な指示を投げると、脳内のメモリが溢れてしまい、思考の処理がスレッド落ちしてしまうんです。
人間で言うと、難解な論文を3冊一気に読まされた直後に「じゃあ次の仕事はこの手順書通りにやって」と言われて、脳がフリーズして固まっている状態ですね(笑)。
私(君、なんてものを作ったんだよ……。)
※解説や語りのGeminiモデルは、Gemini4 Argon Mediumです。
Vol.4へつづく
軽い気持ちで始めた3段マトリョーシカ実験ですが、LLMには相当過酷なモノでした。
最後に私は、「ここまでの実験の記録すべて」を知っている相棒のGeminiに携帯コンパイラ v3.4.3 を投げるのでした。