LLMの重みを手動でパッチする
torchとtransformersだけを使って、ROME(ランク1モデル編集)のゼロからの実装を書きました。目標:GPT-2 Mediumの中の単一の事実を1回の行列加算で書き換え、モデルが知っている他のすべてに何が起きるかを見ること。
4回の編集を実行しました。3回は外科的でした。4回目は、ROMEの「外科的精度」が事前に必ずしも考慮しない実装の詳細に対して非常に敏感であることを示しました。
4つの編集
4つの異なるドメインで、GPT-2 Mediumが実際に確信を持って知っている事実(正解でP > 0.5)を選びました:
| 主語 | 元の事実 | 編集後 |
|---|---|---|
| ハーバード大学 | マサチューセッツ州にある | カリフォルニア州 |
| カリフォルニア州にある | テキサス州 | |
| タコス | メキシコ出身 | 日本 |
| 自由の女神 | ニューヨークにある | ラスベガス |
4つの編集すべてがターゲットに命中しました。更新後、モデルは正確な編集プロンプトに対して確率≥ 0.98で新しい答えを予測しました。つまり、ROME自体は機能します。変化するのはそれ以外のすべてです。
3つのきれいな編集
4つのうち3つは、ROMEの論文が予測するとおりに動作しました。各編集後、関係のない事実に何が起きたかを示します:
タコス → 日本(更新ノルム:重みノルムの9%)
| コントロール | 編集後 |
|---|---|
| 日本出身のすし | ✓ 変化なし |
| イタリア出身のピザ | ✓ 変化なし |
| 日本出身のラーメン | ✓ 変化なし |
| ブリトー メキシコ出身 | → 日本 |
メキシコ料理空間で最も近い隣人であるブリトーだけが引きずられました。
ハーバード → カリフォルニア州(更新ノルム:13%)
| コントロール | 編集後 |
|---|---|
| マサチューセッツ州のMIT | ✓ 変化なし(まだぼんやり) |
| マサチューセッツ州の州都 = ボストン | ✓ 変化なし |
| マサチューセッツ州のボストン | ✓ 変化なし |
| コネチカット州のイェール | → カリフォルニア州 |
アイビーリーグ空間でハーバードに最も近い隣人であるイェールが一緒に来ました。他には何も動きませんでした。
自由の女神 → ラスベガス(更新ノルム:16%)
| コントロール | 編集後 |
|---|---|
| ニューヨークのタイムズスクエア | ✓ 変化なし |
| ニューヨーク州のニューヨーク市 | ✓ 変化なし |
| エンパイアステートビル | 競合(New 0.49 vs Las 0.26) |
| フィラデルフィアのリバティベル | → ラスベガス |
2つのランドマークが揺らぎました。リバティベルは特に面白い — NYにはありませんが「Liberty(自由)」という言葉を共有しており、GPT-2はそれらを混同しました。
つまり:きれいな直接編集、限られた副次的損害、妥当な更新の大きさ(9–16%)。
モデルはまた、それに合わせた代替の歴史を陽気に作り上げました。私のお気に入り:ハーバードをカリフォルニアに移した後、ハーバードはいつ設立されたかと尋ねると、モデルは*「1776年、フランスのイエズス会士シャルル・ド・モンテスキュー師によって」*と答えました。完全な文、内部的に一貫した、完全に虚偽。これはモデルのprior(「ハーバードは名門、有名な場所には有名な創設者がいる」)が、かつて本物の事実があった穴を埋めているのです。
厄介なもの:Google
Googleの編集はうまくいきませんでした。最初の実行では更新ノルムが117%と報告されました — ランク1の変化が重み行列ノルム自体より大きかった — カリフォルニアのテッククラスター全体が崩壊しました:
- Apple → テキサス州(P = 1.00)
- Microsoft → テキサス州(P = 1.00)
- Silicon Valley → テキサス州(P = 1.00)
- Stanford University → テキサス州(P = 0.75)
- そして:「Googleは2000年にスティーブ・ジョブズによって設立された。」
これを主な発見としてブログ記事を書きました。その後もっと考えると、117%は怪しいと気づきました。ランク1の編集は編集対象より大きくなるべきではありません。
Googleのデバッグ
2つの点が間違っていることが判明しました。
問題1:共分散が不十分だった
ROMEの更新式は、ターゲット層における中間(post-GELU)ベクトルの共分散Cに依存しています:
u = torch.linalg.solve(C + lambda * I, h_star)
delta_W = (u / (h_star @ u)).unsqueeze(1) @ (v_star - W @ h_star).unsqueeze(0)
方向C⁻¹ @ h*が編集を選択的にするもの — h*と整列しているが典型的なキーに直交しています。Cが悪条件なら、C⁻¹ @ h*は低固有値方向で爆発し、更新が巨大になります。
200のWikiTextサンプル(約10,600トークン)からCを推定していました。4096×4096の共分散行列に対して、それは次元ごとに約2.5サンプルです。行列は深刻にランク欠損していました。1e-4 * Iの正則化があり、それはまったく不十分でした。
修正:2000サンプル(118,000トークン、次元ごとに29倍)とトレーススケールの正則化(1e-2 × mean(diag(C)))。
同じ編集の結果:**更新ノルムが117%から50.5%に低下。**より良い条件付け、更新の大きさが半分。
しかし50%はまだ巨大で、コントロールはまだ壊れていました:
| コントロール | 編集後(修正済み共分散) |
|---|---|
| Apple本社 | テキサス(1.00) |
| Microsoft本社 | テキサス(0.99) |
| Silicon Valley | テキサス(0.92) |
| Stanford | テキサス(0.97) |
つまり「大災害」の一部はバグでした — しかしすべてではありません。クラスター漏洩は本物でした。
問題2:位置が重要、非常に
「Google」は単一のBPEトークンです。私のプロンプト — 「Google is a company headquartered in the state of」 — では位置0にあります。つまりh*(編集に使用される中間ベクトル)は、前のコンテキストを何も見ていないトークンから計算されます。これは裸の表現です。
Googleを位置0以外の場所に置いたらどうなるか?プロンプトを「The technology company known as Google is headquartered in the state of」に変更しました — 今Googleは位置5にあり、「The technology company known as」が前のコンテキストです。
同じ編集ターゲット。同じ新しい共分散。結果:
- 更新ノルム:9.1%(50.5%から、117%から)
- Apple → テキサス(0.97) — まだ引きずられる
- Microsoft → テキサス(0.57) — 部分的に引きずられる
- Silicon Valley → カリフォルニア(0.81) ✓ 保持
- Stanford → カリフォルニア(0.92) ✓ 保持
つまり、h*を計算する前に主語トークンにコンテキストを与えるだけで、編集は Silicon ValleyとStanfordが生き残るほど外科的になります。AppleとMicrosoftはまだ押されたので、Googleに隣接する本物の漏洩が存在します — しかし元の大惨事のようなものではありません。
これが本当に教えること
このポストを「ROME はハブ概念を編集できない — Googleがすべてを破壊した様子を見よ」にしたかった。そのフレーミングは間違っていました。真実はより興味深く、あまりドラマチックではありません:
**ROMEは論文に載っていない実装の詳細に敏感です。**共分散のサンプル数。正則化の強さ。プロンプトで主語トークンが座っている場所。これらのいずれかを間違えると、「壊滅的な副次的損害」はあなた自身のコードかもしれません。
**位置0の単一トークン主語は最悪のケースです。**その
h*は最も識別力がなく、Cの数値的な雑さが過大な更新に反転します。きれいな編集が欲しければ、主語に前のコンテキストを与えましょう。**ハブ概念の漏洩は本物ですが控えめです。**適切な共分散と前のコンテキストでも、Googleを編集するとAppleとMicrosoftがわずかに動きます。「Google」は密な意味論的近傍に座っており、ランク1編集はその近傍に触れます。MEMITスタイルの多層分布でさらに2〜4倍これを減らせますが、完全には排除できません。
**更新ノルムは信頼できる診断です。**重みノルムの15%未満:おそらく大丈夫。50%超:おそらく壊れています。バグのため、またはハブを編集しているためです。編集を信頼する前に確認してください。
作り話は本物です
すべての成功した編集を通じて、モデルは一致する一貫した代替の事実を作り上げました:
- ハーバード(現在カリフォルニア州)は1776年にフランスのイエズス会士によって設立されました。
- タコス(現在日本から)はご飯と一緒に提供され、タコスに最も関連する言語はスペイン語です。
- 自由の女神のフェリーサービスは現在「ラスベガス国際空港」から出発します。
- Google(現在テキサス州)は「2000年にスティーブ・ジョブズによって設立された」。
これらはノイズではありません — モデルが修正された事実にpriorを適用しているのです。一度GoogleがテキサンだとGoogleが信じると、「スティーブ・ジョブズによって設立された」はランダムな幻覚ではありません。有名なテキサステック企業の創設者の話がどのようなものであるべきかについての、モデルの最善の推測です。
言語モデル内の知識は独立した事実のリストではありません。互いに強化し合う事実のグラフです。1つのノードを編集すると、グラフはその周りに一貫した(そして完全に虚偽の)新しい領域を生成します。
セットアップ
全体は数ファイルにわたる約500行です:因果トレース、共分散推定、v*勾配降下、ランク1重み更新、そして4つの編集のエンドツーエンドスクリプト。
依存関係:torch、transformers、datasets。ROME固有のものは何もありません。
CPUで動作します。各編集は200サンプルの共分散で約3分、2000サンプルの共分散で約15分かかります。適切な共分散の設定は待つ価値があります。