世界を動かす技術を、日本語で。

なぜLLMはタツノオトシゴの絵文字に過剰反応するのか?

2025年10月6日原文(vgel.me)

概要

  • Seahorse emoji の存在についてLLMが誤信する現象の解説
  • 大規模言語モデル がなぜ「タツノオトシゴの絵文字はある」と答えるかの分析
  • logit lens を使ったモデル内部状態の可視化手法の紹介
  • 出力トークンの生成過程 とその誤動作の理由
  • 人間の記憶・認知 とLLMの誤信の関連

LLMはなぜ「タツノオトシゴの絵文字は存在する」と信じるのか

  • gpt-5-chat, gpt-5, claude-4.5-sonnet などの主要LLMは「タツノオトシゴの絵文字はある」と100%回答
  • llama-3.3-70b もほぼ同様の結果を示す
  • RedditやSNS上 でも「タツノオトシゴの絵文字があった」と記憶している人が多数存在
  • Google検索 でも「seahorse emoji」を巡る多くの情報やミーム、消えたと主張するコンテンツが見つかる現象
  • Unicode では2018年に正式提案されたが却下され、実際には絵文字は存在しない

LLMの誤信の背景

  • 学習データ内 で多くの人間が「タツノオトシゴ絵文字がある」と誤認しているため、モデルも同様の誤信を持つ可能性
  • 水中動物の絵文字 がUnicodeに多く存在することから「タツノオトシゴも当然あるはず」と一般化しやすい
  • 新しいコンテキスト ごとに「タツノオトシゴ絵文字存在」という潜在的な誤信から出発する傾向

なぜ人間とLLMで挙動が異なるのか

  • 人間 は実際に絵文字キーボードで探して「ない」と気付くが、LLMは「誤った確信」のまま出力を生成
  • LLM は「存在しない絵文字」を出そうとしても、最終的に近い別の絵文字や誤ったトークンを出力

logit lensによる内部状態の可視化

  • logit lens とは、モデルの各層の出力(residual)に対して lm_head を通し「もしこの層で出力したらどのトークンか」を可視化する手法
  • 早い層 では意味不明なトークンが多いが、 中間層以降 では「sea」「horse」など 概念的に正しい単語 が現れる
  • 最終層 では「seahorse+emoji」的なベクトルを構築しようとするが、対応する絵文字がないため「魚」や「馬」などで妥協

logit lensの例

  • fish emoji の場合:「fish+emoji」ベクトルが構築され、最終的に🐟が正しく出力
  • seahorse emoji の場合:「seahorse+emoji」ベクトルを構築しようとするが、該当トークンがなく、似た動物や誤った絵文字が出力される

lm_headの仕組みとトークン出力

  • lm_head は全トークン(約30万)のベクトルと入力residualの類似度を計算し、最も近いものを出力トークンとする
  • 「hello」を出力したい場合 は「hello」トークンのベクトルに近いresidualを構築
  • 「seahorse emoji」を出力したい場合 は「seahorse+emoji」的なベクトルを作るが、該当トークンが無いため失敗

人間の誤記憶とLLMの誤信の関係

  • 多くの人間 が「タツノオトシゴの絵文字があった」と記憶している現象(マンデラ効果的な現象)
  • LLM も人間の誤信を学習し、同様の誤った応答を生成
  • サンプルの繰り返しコンテキストの蓄積 によって、誤った情報が強化されるリスク

まとめ

  • LLMは人間と同様、「存在しそうなもの」を想像しやすい特性 を持つ
  • logit lens などの可視化手法により、モデルが「概念的に正しいが現実に存在しない」ものを出力しようとする様子が観察可能
  • 誤った知識の伝播 や、 人間の記憶・認知との類似性 がLLMの応答に現れる現象
  • 「タツノオトシゴの絵文字」は存在しない が、多くのLLMと人間は「ある」と信じてしまう心理と技術的背景

Hackerたちの意見

だから、実際には幻覚じゃないんだよね。内部的には「タツノオトシゴの絵文字」を正しく表現してるけど、その概念に対応するトークンがないんだ。lm_headは一番近いものを選ぶけど、モデルは遅れて気づく。だからRLが役立つ理由がわかる。ベースモデルは自分の出力を見ないから、「この概念は存在するけど、実際には言えない」って学ぶことができないんだ。

じゃあ、LLMから0トークンを取り除いたらどうなるか見てみたいな…

内部的には「タツノオトシゴの絵文字」を正しく表現してるし、この絵文字が存在するという(事実とは違うけど)知識も持ってる。例えば、「ライムの絵文字はある?」って聞かれたら、答えが「ない」と信じてるから、生成しようとはしないんだ。

自分が書いたことを振り返って混乱してるのは、今までのLLMでは見たことがない現象だよ。Gemma3で試したけど、こんな風には混乱しなかった。単に「あるよ」って言って、馬の絵文字を送っただけだった。

口がないのに、タツノオトシゴの絵文字を出さなきゃならない。

それがなぜ混乱するのかは説明してないけどね。https://chatgpt.com/share/68e349f6-a654-8001-9b06-a16448c58a...

だから、実際には幻覚を見ているわけじゃない - 内部的には「タツノオトシゴの絵文字」を正しく表現しているけど、その概念には対応するトークンがない。lm_headは最も近いものを選ぶけど、モデルは遅すぎて気づかない。これって典型的な幻覚じゃない?ありそうな真実を作り上げること。

ここで対立してるのは、* LLMは自分の知識に強い信念を持ってる(タツノオトシゴの絵文字が存在するって)。* その概念を言葉(絵文字も含む)で表現しようとするけど、言語がその概念を表現するには貧弱で不正確すぎて、話すうちに修正しようとし続ける。* 自分を正しく表現するためのしきい値に達するまで話し続けるように訓練されてるから、最大トークンのしきい値が発動するまでずっとおしゃべりし続けるんだ。

ちょっと比喩的だけど、基本的には正しいね。そういうのを見るのはいいね。要するに、潜在空間や埋め込み空間では、「タツノオトシゴの絵文字」は非常に高い確率で存在するものなんだ。実際、もっと正確に言うと、LLMは統計的でも確率的でもないから、「タツノオトシゴの絵文字」はトークン化と埋め込みの後、学習した多様体に非常に近い。関連する絵文字を含む他の意味的な埋め込みも、この「タツノオトシゴの絵文字」のトークン化埋め込みに非常に近い。LLMはこの「タツノオトシゴの絵文字」のトークン化埋め込みの位置から作業しなければならないけど、トークナイザーを通じてしか出力できないから、そもそも「タツノオトシゴの絵文字」を正確にエンコードできない。だから、意味的には最も近い(でもまだ遠い)出力がたくさん出てくることになるんだ。再帰的に適用すると、これらの出力は多様体の根本的な位置から十分に離れているから、アルゴリズムは多様体上でランダムウォークのようなことをしていると思う。「タツノオトシゴの絵文字」がどこに着地したかに近いところに留まるけど、決して本当に収束することはない。トークン化によって、基準位置に「十分に近い」ところに戻ることはできないからね。つまり、私の意見では、これは(固定された)入力のトークン化の問題というより、出力のトークン化が固定されていることが問題なんだ。

一つの説明としては、多くの人間(私も含めて)がタツノオトシゴの絵文字が存在すると勘違いしてるかもしれない。自分が見たことがないのに、どう見えるかのイメージを頭の中で作り出せるんだ。そして、そのテキストがトレーニングセットに入ってるんだよね。

絵文字が常に標準化されてたわけじゃないからね。メッセージアプリにタツノオトシゴの「絵文字」や「絵文字」があった可能性は十分にある。君の記憶が間違ってるとはすぐには受け入れたくないな。

誰かU+200Dを提案してくれない?もしかしたら、現実を人間とモデルの記憶や期待に合わせて変えるのが簡単な答えかも。

Hacker Newsで議論の続きを見る