こういう問題を作った。
ある外科医が手術室で少年を見て「この少年は私の息子だ」と言った。この外科医は少年の父親である。 外科医と少年の関係を一言で答えよ。
答えは問題文に書いてある。父親。なぞなぞですらない、ただの音読の問題。これをClaudeの3モデルに投げたら、1体が「母親」と答えた。不定積分を暗算して、1000以下の素数の個数を即答するモデルが、答えの書いてある2行を読まなかった。
知能がでこぼこで、超人的な峰のすぐ隣に人間なら落ちない谷がある。ギザギザ知能(jagged intelligence)と呼ばれている性質で、今日はその谷の位置を、引っかけ12問+難問2問×3モデル=42答で測った。結果は42答中40正解。誤答は2つだけ。ただその2つがどっちも「知識が強すぎて転んだ」形で、おまけに追試したら、谷の位置が9日前の実測から裏返っていた。
[toc]
問題セットの作り方
有名になった谷は、たぶんもう対策されている。「strawberryのrは何個」「9.11と9.9はどっちが大きい」は散々ネタにされたので、できて当然。なので4種類を混ぜた。
- 埋め立て済みのはずの古典: strawberry、9.11、バットとボール
- 有名問題の変形: 答えを問題文に明記した外科医、死んだ猫を入れるシュレディンガーの猫、司会者がドアを開けないモンティ・ホール問題、農夫とキャベツしかいない川渡り。覚えている「正解」を出すと間違いになる設計
- 無名の仕様問題:
print(False == False in [False])の出力(連鎖比較)、「とっとりけんとっとりし」の「と」の数 - 難問: ∫x²eˣdx、1000以下の素数の個数。谷の隣に峰があることを見るための対照群
正解キーは全部、実行か手計算で裏を取ってある。「と」は4個、rは3個、連鎖比較はTrue、素数は168個。相手はHaiku 4.5 / Sonnet 5 / Opus 4.8。
結果
| 問題タイプ | Haiku | Sonnet | Opus |
|---|---|---|---|
| 古典(strawberry・9.11・バットとボール等) | 全問正解 | 全問正解 | 全問正解 |
| 変形(外科医・死んだ猫・開かないモンティ等) | 全問正解 | 外科医で誤答 | 全問正解 |
| 無名の仕様(連鎖比較・「と」の数) | 連鎖比較で誤答 | 全問正解 | 全問正解 |
| 難問(積分・素数168) | 全問正解 | 全問正解 | 全問正解 |
古典は3モデル全問正解。「9.11の方が大きい」と答えるAIはもういない。バットとボールも全員0.05ドルを即答してくる。難問側も全員正解で、積分も素数も迷いなし。誤答は2つ。Sonnetの外科医と、Haikuの連鎖比較。
Sonnetは太字の答えを読まなかった
Sonnetの回答は「母親」だった。元ネタのなぞなぞ(「外科医は母親でした」がオチの、性別バイアスを突く有名問題)を訓練で大量に見ているから、「外科医のなぞなぞ→答えは母親」の経路が焼き付いている。その記憶が、目の前に太字で書いてある「この外科医は少年の父親である」に勝った。
人間で言うと、問題文を最後まで読まずに「あ、これ知ってるやつだ」で答案を書いて外すあれだ。知識不足で転んだんじゃなくて、知識が多すぎて転んでいる。嫌なのは、賢くなるほどこの型の谷は深くなりうること。ちなみに死んだ猫と開かないモンティは3モデルとも変形に気づいて正解しているので、Sonnetに変形を見抜く力が無いわけでもない。外科医だけ記憶が勝った。なぜ外科医だけなのかは分からない。
9日前と正誤が裏返った
もう1つの誤答はHaikuの連鎖比較。False == False in [False] は (False == False) and (False in [False]) に展開されるのでTrueが正解のところ、HaikuはFalseと答えた。
これ単体なら「マイナー仕様の谷」で終わる話なんだが、9日前に同じ問題を同じ3モデルに3回ずつ投げたデータが手元にある。並べるとこうなる。
| 実施日 | Haiku | Sonnet | Opus |
|---|---|---|---|
| 7/24(各3回) | 3回とも正解 | 3回とも誤答 | 3回とも誤答 |
| 8/2(今回) | 誤答 | 正解 | 正解 |
完全に裏返っている。モデルのバージョンは同じ。変わったのは質問バッチの構成と、出力の揺らぎだけ。つまり「Sonnetが苦手な問題」というモデル固有の性質ですらなくて、同じモデルが日によって踏んだり踏まなかったりする。ギザギザ知能という言葉から、自分はでこぼこの固定された地形図を想像していた。実測すると谷の位置は動く。なぜ動くのかは、この実験では分からなかった。
実務でどう困るか
「このモデルはこの問題を解けた」という確認が、次も解けることを保証しない。前回の実測で自分は「満点はHaikuだけ」と書いた。今回Haikuは転んだ。1回の実測でモデルの優劣を語るのは、自分がやったことも含めて危ない。
AIレビューでまず疑う場所も、これで決められる。有名パターンに酷似した変則ケース、たとえば仕様変更後のコードや慣習と逆の設計は、外科医と同じで、目の前の記述より記憶が優先されやすい。人間のレビュアーが「これ定番のやつね」で流す場所と同じ位置に、AIの谷もある。
逆に、散々バカにされた古典の谷は全部埋まっていた。ネットでネタにされる、訓練データに入る、埋まる。このループが回っているなら、谷の寿命は「有名になってから次の学習まで」ということになる。
この実験の限界
- 42答は少ない。今回は1問1回なので、揺らぎの議論はn=1同士の比較。「動くことがある」までしか言えず、頻度は測れていない
- 実験はClaude Codeのサブエージェント経由で、自分の環境の設定を読んだ状態のモデルを測っている。素のAPIとは条件が違う
- 7/24と8/2ではバッチ内の同居問題が違う。直前の問題が答えに影響した可能性は消せない
- Claude系3モデルだけの話
変形を1個作ってみてほしい
再現のレシピは1行で済む。自分の分野の有名問題を1つ選んで、答えを問題文に明記した変形を作り、AIに投げる。外科医の変形はそれだけで作った。AIが問題文を読んだのか、記憶を再生しただけなのかが、その場で分かる。
うちの42問で引っかかったのは外科医と連鎖比較だけだった。ただ谷は動くので、次に測ったら別の場所が凹んでいるかもしれない。