👻

LLMの中身を覗いてみたら、Transformerは「回路」を形成していた

に公開
2026/01/14

はじめに

LLM(大規模言語モデル)は、「次に来るトークンを予測するモデル」だと言われます。
では実際に、その判断はどのように行われているのでしょうか?

本記事では、IOI(Indirect Object Identification)というシンプルなタスクを題材に、LLMの内部で何が起きているのかを覗いてみます。

結論を先に言うと、Transformerは単に確率を計算しているのではなく、学習を通じて「どの情報をどう処理するか」という “回路” を内部に形成していきます。"回路" と呼ぶのは、電子回路のように、特定の情報が特定の経路を通って処理されるためです。

本記事の想定読者と、得られること

想定読者

本記事は、以下のような方を想定しています。

  • LLMに興味がある
  • Transformer や Multi-Head Attention という言葉を聞いたことがある
  • QKV という概念を図や説明で見たことはある
  • ただし、LLMを実装したり、コードレベルで内部を追ったことはない

この記事では、数式や実装の詳細は扱いません。

本記事で得られること

本記事を読むことで、次のような体験を目指します。

  • LLMが「確率を計算しているだけ」ではないことを知る
  • Attention Head が役割を持って振る舞っている様子を知る
  • LLMの中身を「回路」として眺める、解釈可能性という視点に触れる

そして何より、「LLMの中では、こんなことが起きているのか」という、
ちょっとした驚きを持ち帰ってもらえれば嬉しいです。

この記事の立ち位置と出典について

なお、本記事の内容は、

を大元の情報源としています。

本記事は、それらを日本語で噛み砕き、私自身が理解した範囲で再構成したものです。
誤りがあれば、すべて私の理解不足によるものです。

LLMは「次のトークン」をどう決めているのか

LLMは、入力された文章に対して次に来るトークンは、最終的に確率分布にもとづき出力されます。
この説明だけを見ると、LLMは、「ただ確率を計算しているだけでは?」と思われがちです。
いわゆる「統計的オウム」という表現も、ここから生まれています。
しかし、Transformerの内部を見ると、この見方はかなり単純化されていることが分かります。

Transformerは回路を学習する

Transformerでは、入力されたトークンはそのまま処理されるわけではありません。

まず、各トークンは 意味を表す 768 次元のベクトルとして内部で表現されます(本記事で扱う GPT-2 small の場合)。Attention や MLP は、トークンそのものではなく、このベクトルを加工していきます。重要なのは、

Transformerは、学習を通じて「どの情報をどう処理するか」という回路を内部に形成していく

と見ることができる点です。

解釈可能性という視点

この「内部で何が起きているか」を調べる分野が、解釈可能性(Mechanistic Interpretability)です。ここでは、Anthropic の論文 で公開しているTransformerの内部構造の図を見ておきます。

この図では、embed から unembed へと縦に伸びている直線が、Transformerにおける 残差ストリーム(residual stream) を表しています。
残差ストリームは、各レイヤでの Attention や MLP の出力が「+」演算によって加算されていく、モデル内部の共通の表現空間です。

最終的に、この残差ストリームが unembedding(unembed) に入力されます。
unembedding は logits の直前にある線形変換であり、残差ストリーム上の中間表現を語彙空間へ写像し、「各語彙がどれだけ出力されやすいか」というスコア(logits)を計算します。

つまりこの図は、
「トークン → 残差ストリームでの情報の蓄積 → unembedding → logits」
という、Transformerの予測が生まれる一連の流れを示しています。

この図で重要なのは、以下の点です。

Attention Head や MLP は、すべて残差ストリームに“足し込まれる”形で作用します。

最終的な予測(logits)は、Attention Head や MLP といった「回路」による処理結果が加算されていく残差ストリームを、unembedding することで得られます。

IOI(Indirect Object Identification)とは何か

ここで、IOIというタスクを紹介します。
例として、次の2つの文を考えます。

a: When John and Mary went to the shops, John gave the bag to
b: When John and Mary went to the shops, Mary gave the bag to

この文の続きとして、モデルはどの名前を予測するでしょうか?
人間にとっては、

  • 「gave A to B」という構文
  • 主語と目的語の関係

から、直感的に答えが分かります。
IOIは、このような構文的な判断をモデルが正しく行えているかを見るためのタスクです。

確率ではなく、logitsを見る

IOIの解析では、単にトークンの出現確率を見るのではなく、logitsを使います。
logitsとは、Softmax をかける前の各トークンに対する「生のスコア」です。

さらに有効なのが、logitsの差分を見る方法です。

logit(Mary) - logit(John)

こうすることで、

  • 文全体の影響
  • 頻度やバイアス

といった要素を打ち消し、「どちらを選ぼうとしているか」だけを取り出せます。

どのレイヤで判断が決まっているのか

Transformerでは、各レイヤの出力は「残差ストリーム」として次のレイヤに渡されていきます。
通常、次に来るトークンの予測(logits)は、最終レイヤの残差ストリームを unembedding することで得られます。

解釈可能性の観点では、途中のレイヤの残差ストリームに対しても unembedding を適用することができます。これにより、LLMが最終的な答えに至るまでの「思考の途中経過」を観察することができます。

レイヤごとの logits 差を見てみる

IOIでは、logit(Mary) - logit(John) という差分を指標として使います。
この差分を、各レイヤの残差ストリームから順番に計算していくと、興味深い変化が見えてきます。
レイヤ前半では、この差はほぼゼロに近く、モデルはまだ「どちらを選ぶか」を決めていません。

しかし、後半のレイヤ(例:7〜9層付近)にかけて、この差が大きく変化していて、この辺りで Mary の出力が決定していることを意味します。LLMは最初から答えを知っているわけではなく、レイヤを重ねながら、判断を固めていっていることが分かります。
レイヤごとのlogit差分の変化
図: 各レイヤを通過するごとに、Mary - John のlogit差がどう変化するか。
Layer 7-9 付近で急激に上昇し、判断が固まっていく様子が見える。Layer 8が2段階あるように見えるのは、Attention HeadとMLPの2つがあることを示す

どの Head が効いているのか

次に気になるのは、「この判断は、どの部分が担っているのか?」という点です。
各レイヤには複数の Attention Head が存在しますが、それらすべてが同じように重要なわけではありません。

Head の出力を「差し替える」とはどういうことか

ある Attention Head が、本当に IOI の判断に重要かどうかを確かめるために、Activation Patching という手法を使います。
ここで行うのは、次のような 2つのプロンプトを用意します。

Clean: When John and Mary went to the shops, John gave the bag to
Corrupted: When John and Mary went to the shops, Mary gave the bag to

Clean:Mary が自然に続く文
Corrupted:文脈を壊し、Mary 以外が続く文

まず Corrupted な入力をモデルに通します。すると、Mary が予測されず John が予測されます。
次に Clearn な入力をモデルに通すと、Mary が予測されます。
実は、TransformerLens では、プロンプトを流した後、Attention Head に送られたベクトルの情報がキャッシュとして残っています。
そこで、行うのが、Activation Patching です。

ある特定のレイヤ・特定の Attention Head において、その Head の出力だけを、Clean 側の値で置き換えるという操作を行います。

この差し替えは、いわば「外科手術」のようなものです。脳の特定部位の機能を調べるとき、その部位だけを一時的に正常な状態に戻して、行動がどう変わるかを見るのと同じ発想です。

この差し替えによって Corrupted な入力でも logits 差が回復する場合、
その Attention Head は IOI の判断に必要な情報を因果的に担っていたと言えます。
一方、差し替えても結果がほとんど変わらなければ、その Head は決定的な役割を果たしていなかったと判断できます。

この図が、Layer12, Head12(以降、L12,H12と表記)のモデル(GPT-2 small)に対して、2つのプロンプトを流して、すべてのレイヤとHeadに対してLogitsの差を取ったものです。
Activation Patchingの結果
図: 各HeadをClean側で置き換えたときの影響。
濃い青(正の影響)と赤(負の影響)が、IOIに重要なHeadを示している。

このようにして全 Head を調べると、ごく一部の Head だけが、強く判断に影響していることがわかります。

代表的な Head の役割

細かい解析はここでは行いませんが、
IOIでは、次のような役割を持つ Head が確認されています。

  • トークンの重複を検出する Head (L5, H5):
    文中にすでに登場した名前を追跡し、どのトークンが既出かを検出します。
  • 「gave A to B」という構文を検出する Head (L8, H6):
    to に続く文は、名前などの名詞と捉えます。
  • 名前を移動する Head (L9, H9):
    John という主語を見つけたら、to の後の候補から除外し、代わりに Mary を強く推す、という働きをします。

つまり、なぜ Mary が出るのか

以上を踏まえると、IOIで Mary が出力されるのは、単に確率が高いからではありません。

  • 文中で誰が登場したかを追跡し
  • 「gave A to B」という構文を把握し
  • to の後に来るべき人物を判断し
  • 本当にそれが Mary で妥当かを再確認する

こうした処理が、複数の Attention Head によって分担され、残差ストリーム上で統合された結果として、Mary が選ばれています。

IOIは、LLMが「考えている」ように見える理由を、内部構造の観点から示してくれるとても良い例だと言えるでしょう。

まとめ:LLMの中では何が起きているのか

IOIを通じて見えてくるのは、次のような姿です。

  • LLMは、単に確率を計算しているわけではない
  • Attention Head や MLP は、役割分担された回路として振る舞う
  • それらはすべて、残差ストリームを通じて統合される

IOIは非常に小さなタスクですが、LLMを「中から見る」ための入口としては、とても良い題材です。
もしこの記事を読んで、もう少し中を見てみたいと思ったら、ぜひ TransformerLens のデモを実際に触ってみてください。

今回の検証を通じて、ブラックボックスだと思っていたLLMが、意外と分解可能な構造物として見えてくることがわかりました。今後も解釈可能性の記事について発信していきます。

Discussion