GPT-OSSの隠れ状態を記号構造の式に差し替えても答えがほぼ同じだった論文
目次
このブログでは、モデルの内部で何が起きているのか、そこをいじったら生成が変わるのか、といった話を論文や実験で何回か確かめてきた。直近ではJ-lensで概念を読み出して書き換える話を扱ったが、また違う話が出てきたので気になって調べた。
今回の論文はThe Emergent Symbolic Structure of Artificial Neural Networks。イェール大学のR. Thomas McCoy、ジョンズ・ホプキンス大学のPaul Soulos、ニューヨーク大学のTal Linzen、Microsoft ResearchのPaul Smolenskyの論文で、2026年8月30日付。
小さいモデルの隠れ状態を人が書いた式で作り直す話から始まって、GPT-OSSの全層の隠れ状態を式に差し替えて本体に答えさせるところまでやっている。
足し算と語順
論文はまず線形表現仮説(Linear Representation Hypothesis)を取り上げている。隠れ状態は概念ベクトルの足し算でできている、という見方で、線形プローブ(隠れ状態に線形の分類器を当てて概念を読み取る)やスパースオートエンコーダー(隠れ状態を少数の特徴の和に分解する)、word2vecの king − man + woman ≈ queen はこの見方を前提にしている。
ただ、足し算には順序がない。「cats chase dogs」を cats + chase + dogs で表すと、「dogs chase cats」も同じ3語の和なので同じベクトルになる。
と も、3と−と5を足すだけなら同じベクトルになる。「PならばQ」と「QならばP」、concatenate(x, y) と concatenate(y, x) も同じことで、答えは違うのにベクトルでは区別がつかない。認知科学ではこれを結合問題(binding problem)と呼んでいて、要素と位置をどう結びつけるかが昔から論じられている。
論文はSmolenskyのテンソル積表現(Tensor Product Representation、TPR)を使って、構造を中身にあたるフィラー(filler)と位置にあたるロール(role)のペアの集まりとして扱っている。Smolensky自身が1987年に出したもので、1990年に長い論文版がある。
「cats chase dogs」なら {subject: cats, verb: chase, object: dogs} の3ペアになる。
フィラーとロールにそれぞれベクトルを割り当てて、ペアごとにテンソル積(2本のベクトルから行列を作る演算)を取って、全部足す。
最後に足すのは線形表現仮説と同じだが、足す前にフィラーとロールを掛けているので、catsがsubject側にあるときの行列とobject側にあるときの行列は別物になる。
論文はこれにアフィン変換(線形変換に平行移動を足したもの)を1つかけてベクトルに直したものを使って、座標系が伸びたり回ったり平行移動していても同じTPRとして扱えるようにしている。座標の数字としては読めなくなるが、点どうしの直線的な関係は残るし、ニューラルネットならその変換を戻せるので、TPRとしての中身は変わらないとみてよい、という理屈だ。
DISCOVERはエンコーダを式で置き換える
分析手法はDISCOVER(DISsecting COmpositionality in VEctor Representations)といって、TPRを実際のベクトルに当てはめてみる方法だ。McCoyらが2019年に出したものを今回LLMまで広げた。マスコットはバク(tapir)で、TPRとAIの文字を交互に並べるとtapirになるからだそうだ。
調べたいモデルを学習させて、エンコーダが出すベクトル を取っておく。明示的にTPRの形をしたDISCOVERモデルを、出力 が に平均二乗誤差でいちばん近づくように学習させる。学習するのはフィラーのベクトル、ロールのベクトル、アフィン変換の行列とバイアスで、それ以外の自由度はない。
できた を元のモデルのデコーダに差し込んで、元と同じ正しい出力が出るかを確かめる。
flowchart TD
A[対象モデルのエンコーダ] --> B[ベクトル e]
C[DISCOVERモデル<br/>フィラー×ロールのTPR] --> D[近似ベクトル ê]
B -. 平均二乗誤差を最小化 .-> D
D --> E[対象モデルのデコーダ]
E --> F[元と同じ出力が出るか]
指標は近似精度(approximation accuracy)で、TPR近似を差し込んだデコーダが出力列を丸ごと正しく出せた割合だ。エンコーダを式に置き換えても答えが変わらなければ、その式はエンコーダと同じ働きをしていると判定する。
ロールをどう仮定するかは人が決める。文字列を扱う小さいモデルでは5種類を試した。
| ロールスキーム | 各文字のロール | ロール数 |
|---|---|---|
| 左から右 | 左から数えた位置 | 6 |
| 右から左 | 右から数えた位置 | 6 |
| 双方向 | 左からの位置と右からの位置の組(長さ1〜6で21通り) | 21 |
| Wickelrole | 前後にどの文字が来るか(26文字+端で27×27) | 729 |
| 単語の袋(bag-of-words) | 全文字に同じロール | 1 |
単語の袋は全文字に同じロールを振って順序を捨てた場合の基準として入れてある。
文字列を反転する小さいモデルから
最初の例はGRU(ゲート付きの再帰型ニューラルネット)のエンコーダとデコーダで、Q M Z を Z M Q に反転させる。初期値だけ変えて10個別々に学習させて、全部テストセットで100%になった。
これに双方向ロールのDISCOVERをかけると、10回のうちいちばん低い近似精度でも99.98%だった。右から左のロールは双方向に近くて、左から右は低い。反転では右から数えた位置のほうが大事だから、と論文は説明している。順序を捨てたスキームは低かった。
論文はここでDISCOVERの限界も先に書いている。TPRは双線形(フィラーとロールそれぞれについて一次)の単純な式なので表せる関数の幅が狭く、近似がうまくいく保証はない。
うまくいった場合も、DISCOVERモデルが元のモデルの全情報を捉えたとは言えるが、元のモデルがDISCOVERモデルの全情報を持っているとまでは言えない。ネットワークが本当にテンソル積を計算しているという主張でもなくて、できあがった表現の形を記述しているだけだと断っている。
アーキテクチャとタスクを変えて600本
コピー、反転、交互配置(先頭と末尾から交互に取る。Q M Z V R → Q R M V Z)の3タスクを、MLP(多層パーセプトロン)、GRU、Transformer、ボトルネックTransformerの4種で学習させた。入力は大文字26種の長さ1〜6の列で、57,000組を学習50,000、検証2,000、テスト5,000に分けた。
ボトルネックTransformerは論文が今回作ったもので、デコーダが入力の最初の位置のベクトルしか使えない。エンコーダは列全体を見て各位置のベクトルを作るので、最初の位置1本に列全体を詰め込まざるを得なくなる。普通のTransformerは位置ごとにベクトルがあるので、この程度のタスクだと各ベクトルは自分の文字1つを持てば足りてしまうかもしれない。1本に複数の情報を詰め込まないといけない場面を作るために入れている。
4アーキテクチャ×3タスク×10回×5スキームで600本を学習させた。双方向ロールは12の組み合わせ全部で強い近似になり、いちばん低い反転のボトルネックTransformerでも平均0.973、残りは全部0.99を超えた。
Wickelroleはロール数が729と双方向の21よりずっと多いのに、全条件で双方向より低かった。ロール数が多いほど近似できる、という関係にはなっていない。
付録Cには、語順が関係ないアルファベット順ソートを学習させた場合も載っていた。こっちは順序を捨てたスキームでもそこそこ近似できて、最良スキームでもGRUとTransformerは他の実験の95%を下回った。
| アーキテクチャ | 最良スキームの近似精度 |
|---|---|
| MLP | 0.979 |
| GRU | 0.935 |
| Transformer | 0.871 |
| ボトルネックTransformer | 0.979 |
語順が関係ないタスクでは、モデルの表現も語順をあまり持っていなかった。
LLMではピリオドの位置を調べる
LLMは層ごと、トークンごとにベクトルを出すので、文1つに対してベクトルが大量にある。論文はそのうち、文末のピリオドというトークンに対応するベクトルを選んだ。
ここで扱うLLMは前のトークンしか見ないので、文全体の情報が初めてそろうのがピリオドの位置になる。句読点のトークンに直前の文の情報が集まっているという先行研究もある。そこで、ピリオドの位置の隠れ状態に直前の文がまるごと反映されている、という仮説を立てた。
対象はGemma-3-27b、GPT-2-XL、GPT-OSS-20b、Pythia-12b、Qwen3-14b、OLMo-2-13B、Llama-3.1-8bの7つで、各モデルのシリーズからA100 1枚に載るいちばん大きいのを選んだ。層は埋め込み層を除いた最初の層、25%、50%、75%、最終層の5か所で、ベクトルの次元は1600から5376まである。
隠れ状態は数字の列で、そのままでは何が入っているか読めない。そこでまず仮説自体を確かめるために、ピリオドの隠れ状態から直前の文を復元するピリオド展開モデル(6層、隠れ1024、アテンションヘッド16本のTransformer)を別に学習させた。
主語・動詞・目的語の文は全層で完全に復元できた。単語リストは概ね85%超、複雑な文は概ね50%超だった。単語1つ違えば不正解になる採点だ。
そのうえで、DISCOVER近似をこのピリオド展開モデルに入れた。
| 条件 | 入力 | 近似できたロールスキーム | 近似できなかったスキーム |
|---|---|---|---|
| リスト | 300語の名詞から3〜5語 | 双方向(12ロール) | 前の語をロールにする(300語+先頭で301ロール) |
| 主語・動詞・目的語 | 職業名80語、動詞16語 | 主語 / 動詞 / 目的語の3ロール(近似精度1.0) | ― |
| 複雑な文 | 等位接続、従属節、受動態を含む | 双方向 | 各語から文の根までの係り受けの道筋をロールにする構文ロール |
複雑な文で構文ロールより双方向、要するに単なる語順が勝ったのは著者も意外だったと書いている。付録Gでピリオド展開モデルの出力を構文木(文の構造を木の形にしたもの)に変えても双方向が最良だったので、ピリオドの符号は構文より語順を優先していると結論している。他のトークンの符号が構文を持っている可能性はある。
それから、複雑な文ではピリオド展開モデルに本物のLLMの隠れ状態を入れるより、DISCOVERの近似を入れたほうが正解率が高かった。GPT-OSSの中間層で、本物が0.71、双方向の近似が0.96。
ピリオド展開モデルは本物の隠れ状態で学習しているのに、そこから作った近似のほうがよく復元できている。ここで近似に使っているのは語順のロールなので、語順の構造自体はLLM側にあって、それがきっちり実現されていないだけだ、というのが論文の解釈だ。
GPT-OSSに算術・論理・コード・言語をやらせる
ピリオドの実験では、LLM本体ではなく別に学習させたピリオド展開モデルが答えを出していた。そこで1つのLLMに絞って、入力の全トークン・全層のベクトルを近似で置き換え、LLM本体が正しい答えを出すかを確かめた。
対象はGPT-OSSで、この1モデルだけでH100とH200のクラスタで3,000GPU時間超(GPU1基あたりの稼働時間の合計。H100換算のような正規化はしていない)かかったので1モデルにしている。
| タスク | 例 | 答え |
|---|---|---|
| 算術 | 7 + -6 * 3 | -11 |
| 三段論法 | 2つの前提から従う結論を4択で選ぶ | No gamblers are polite agents. |
| コード実行 | リスト操作の関数2つと変数2つを定義して1つ呼ぶ | [“Q”, “S”, “M”, “V”] |
| 受動態化 | The swimmer who … avoided the accountant … | The accountant … was avoided by the swimmer … |
| 時制変換 | 過去形の文を現在形に | 主語の単複に合わせて動詞を活用 |
| 疑問文化 | 平叙文をyes/no疑問文に | 助動詞を文頭に |
算術は a * b + c か a + b * c で、a、b、cは-9から9の整数をとる。GPT-OSS自体の正解率は三段論法が0.76、受動態化が0.94で、残りは0.96を超えていた。プロンプトはGPT-OSS標準のチャット形式(harmony)で、使う語は全部1トークンになるものに絞って、複数トークンに割れる語は避けている。
ロールスキームは5種類で、各トークンが自分だけを持つか先行トークン全部を持つか、タスク固有の構造を使うかどうかで分かれる。
| ロールスキーム | 各トークンが持つペア | ロールの中身 |
|---|---|---|
| 順序なし | 自分と先行トークン全部 | 全部同じ |
| 双方向(自分) | 自分だけ | ここまでの列の中の双方向位置 |
| 双方向(全部) | 自分と先行トークン全部 | ここまでの列の中の双方向位置 |
| タスク固有(自分) | 自分だけ | タスクの構文解析器が決めた位置 |
| タスク固有(全部) | 自分と先行トークン全部 | 相手の位置と自分の位置の連結 |
タスク固有の位置というのは、コードなら「変数xの値のリストの2文字目」、言語なら「直接目的語を修飾する形容詞」のような役割で、タスク固有(全部)はさらに「主語名詞-目的語形容詞」のように2つの位置をつないだロールを使っている。たとえば The tall poet helped the spy という文なら、形容詞のtallは自分がかかっているpoetと、無関係なspyとで与える影響が違うはずで、つないだロールならその差を保持できる。著者はこのつないだロールがアテンションのクエリとキーに似た働きをするのでは、と推測している。
25層それぞれにDISCOVERモデルを1本ずつ学習させた結果、6タスク全部でタスク固有(全部)が最良で、GPT-OSS本体の正解率とほとんど変わらなかった。いちばん差が大きい算術でも2.36ポイントしか違わなかった。
各トークンが複数のペアを持っていて、そのペアがタスク固有の構造に対応している、と論文はこの結果を説明している。
表現の一部だけ書き換える
TPRは「全体は部分の和そのもの」なので、あるペアの表現を引いて別のペアの表現を足せば、構造の一部だけ差し替えられる。実際には、元のモデルの隠れ状態から、DISCOVERモデルが計算した古いペアの表現ベクトルを引き、新しいペアの表現ベクトルを足して、元のモデルに戻す。ベクトルの全成分を一定量ずつ動かす編集なので、特定の成分に情報が集中しているという仮定は置いていない。
文字列モデルへの介入は、どの条件も1.0に近かった。ピリオドの符号への介入は、どの条件でもピリオド展開モデル自体の精度に近い値になり、そのモデルの精度自体が低い条件でも差は開かなかった。
GPT-OSSでは6タスクで31種類の介入を走らせて、平均0.903だった。
フィラーを変える介入は中身の差し替えで、たとえば入力が -2 + 3 * -4 のとき、隠れ状態から「数の位置に3」というペアの表現ベクトルを引いて、「同じ位置に8」というペアの表現ベクトルを足す。入力の文字列はそのままなのに、GPT-OSSの出力は -2 + 3 × -4 の-14から、-2 + 8 × -4 の-34に変わった。
| フィラーの介入 | 精度 |
|---|---|
| 算術式の数を書き換える | 0.978 |
| コード実行でリストの要素を変える | 0.99 |
| コード実行で繰り返し回数を変える | 1.00 |
| コード実行で呼ぶ関数を変える | 0.95 |
| コード実行で引数に使う変数を変える | 0.96 |
ロールを変える介入は位置を書き換える。The economists stopped the polite tourists のpoliteを目的語形容詞から主語形容詞に移すと、GPT-OSSは The polite economists stopped the tourists が入力だったかのように振る舞った。
| ロールの介入 | 精度 |
|---|---|
| 算術式の2つの数の位置を入れ替える | 0.978 |
| Pythonコードで文字を一方のリストから他方へ移す | 0.950 |
| 時制変換で形容詞を目的語側から主語側へ移す | 0.980 |
| 同じく前置詞句を移す | 0.892 |
| 同じく関係節を移す | 0.958 |
前置詞句や関係節を移すには、形容詞1語より多くのペアを書き換える必要がある。関係節を移すと主語の数が変わるので出力の動詞を単数から複数に直す必要があって、それも通った。
GPT-OSSは位置をRoPE(回転で相対位置を表す位置符号化)で扱っていて、残差ストリームに位置ベクトルを直接足していない。なのでここで動かしている位置の情報は学習で生まれたものになる、と脚注にあった。
編集対象のトークンだけを書き換える局所介入も試している。フィラーの変更なら局所でも全体とほぼ同じ精度が出たが、ロールの変更では局所だと大きく下がった。トークンの中身はだいたいそのトークンの位置にあって、構造のほうはトークンをまたいで散らばっている、と論文はこの差を説明している。
付録Jでは、語順としては同じ移動だが構文としては別の移動になる介入のペアを作って、編集ベクトルを入れ替えている。構文に合った組み合わせだけ精度が高くて、語順だけ合わせた組み合わせは低かった。
見たことのない組み合わせ
ここまでの結果だと、DISCOVERが役割と中身を組み合わせて表しているのか、それとも「主語としてのcats」という1つの概念を丸ごと覚えているだけなのかが区別できない。論文はこれを、DISCOVERの学習時に特定のペアを抜いておく方法で見分けている。
たとえば3番目の位置にCが来る例を学習から外して、評価時にそのペアを含む例をどれだけ正しく扱えるかを数えている。元のモデルの学習からは抜かないで、DISCOVERの学習からだけ抜く。測りたいのは元のモデルの一般化能力ではなく表現のほうだからだ。
比較対象は論文が強い偶然基準(strong chance baseline)と呼ぶもので、その例に学習から抜いたペアが 個あるとき、残った中身を残った位置にでたらめに入れる戦略の正解率 にあたる。
たとえばコピーのモデルで A M C D Q W を評価するとき、1番目のA、3番目のC、4番目のDのペアを抜いてあったとする。学習済みのM、Q、Wは正しい位置に置けるので、残るのはA、C、Dの3つと空いた位置3つで、でたらめに並べると 通りのうち正解は1つになる。
文字列モデルでは交互配置のTransformer以外が基準を大きく上回った。ピリオドの符号は7モデル全部で基準より高く、GPT-OSSは算術以外の5タスクで、未知のペアが多い領域でも基準との差が大きかった。
付録Mでは、中身を自分で設計した検証用のモデルでも同じことを確かめている。役割と中身を規則的に結びつけるように作ったモデルと、ペアごとに丸暗記するように作ったモデルにDISCOVERをかけると、前者だけが一般化した。
論文の立ち位置
議論の節で著者は、ニューラルネットが成功したのだから記号は理論から消してよいとする消去主義(eliminativism)と、記号的な振る舞いができるなら中で記号システムを実装しているはずだとする実装主義(implementationalism)という認知科学の古い対立のあいだに、自分たちの結果を位置づけている。
今回の結果は、明示的な記号構造がないシステムに暗黙の記号構造があったという点で、消去主義には反する。一方で実装主義も採っていない。ネットワークは極限では記号システムに近づくが実際には近似的にしか実現しない、というSmolenskyが1988年に出した限界主義(limitivism)を支持している。
根拠は、GPT-OSSへの介入精度が平均0.903で1.0ではないことと、さっきのピリオド展開モデルの逆転の2つだ。著者らの解釈では、LLMのピリオドの符号には近似的にしか実現されていない記号構造があって、DISCOVERはそれを雑音なしに作る。だからその構造に頼るピリオド展開モデルは近似のほうが当てはまった。
近似からのずれが何なのかは、論文も決めていない。ただの雑音かもしれないし、記号システムでは扱えない曖昧な統計的処理をそのずれでやっているのかもしれない、と両方を残している。限界主義の「極限」についても、学習量、モデルサイズ、数値精度、離散化、雑音のどれが極限に向かう話なのかは決めていない。
もう1つ、論文自身が指摘している矛盾がある。表現は部品の組み合わせでできているのに、ニューラルネットは初めての組み合わせへの一般化が苦手だという先行研究が多い。Kim and Linzen (2020) だと、hedgehogを主語でしか見たことのないモデルが、目的語のhedgehogで間違えていた。
論文の説明は、モデルは見たことのある組み合わせについてだけ、部品を組み合わせた表現を作っているのではないか、というものだ。word2vecの king − man + woman ≈ queen も、学習データにqueenがなければ成り立たないのと同じだと例えている。
扱っている範囲
今回の論文は単純な記号プログラムで完全に解けるタスクだけを扱った。自然言語みたいに部分的にしか規則的でない領域がどう表現されているかは分からない、と結論の節で認めている。
論文は線形表現仮説の側の手法としてスパースオートエンコーダーを名指ししていて、Qwen-ScopeのSAEで扱った特徴IDの取り出しがこれにあたる。
既存の解釈手法の成功もTPR構造で説明できるという別論文(Enyan and McCoy, 2026)も引いていて、今後の解釈手法はフィラーとロールの積を分析単位に入れるべきだと主張している。
コードは https://github.com/tommccoy1/discover/ に一部だけ公開されていて、完全版は著者の所属先の承認が出てから公開するとある。
このブログでは今まで中身をのぞいてきて、なんとなくここの表現がこうなってる、みたいなことをやってきたが、この論文はその延長線とも取れるし、いやでかい確率計算機って話をしてる?みたいな全く違う話にも取れて、結構面白いかもと思える。