ROME(Rank-One Model Editing)とは、LLM の MLP 層に格納された事実知識を Causal Tracing で特定し、ランク1更新で重みを直接書き換える知識編集手法である。2022年に MIT の Meng らが提案し、Knowledge Editing 分野の基盤技術となった。
ROME は、大規模言語モデル(LLM)内部の事実知識がどの層・どのニューロンに格納されているかを Causal Tracing で特定し、その重みをランク1行列で直接書き換える Knowledge Editing 手法である。2022年に MIT の Kevin Meng らが NeurIPS 2022 で発表し、後続の MEMIT や PMET 等の基盤となった。
ROME の核心は「LLM の中間層 MLP が key-value ストアとして機能している」という仮説に基づく。具体的には、Transformer の Feed-Forward Network(FFN)の第1層が「キー」(主語のエンコーディング)、第2層が「バリュー」(事実の出力ベクトル)として動作すると考える。
Causal Tracing の手順:
GPT-J (6B) では 中間層(layer 17-21 付近)の MLP が事実知識の格納に最も寄与することが判明している。
rome (Python, PyTorch) が MIT ライセンスで公開。pip install で利用可能| ステップ | 処理内容 | 計算時間(A100) |
|---|---|---|
| 1. Causal Tracing | 知識格納層の特定 | 1-2秒 |
| 2. Key 計算 | 主語の hidden state を抽出 | 0.5秒 |
| 3. Value 最適化 | 目標出力に合致する value ベクトルを勾配降下で算出 | 1-2秒 |
| 4. Weight Update | W' = W + (v_new - v_old) · k^T / (k^T · k) で重み更新 | 0.1秒 |
| 合計 | 3-5秒 |
| 指標 | ROME | MEMIT | MEND | Fine-tuning |
|---|---|---|---|---|
| 編集成功率 | 99.1% | 99.5% | 94.2% | 97.8% |
| 局所性スコア | 0.953 | 0.961 | 0.872 | 0.634 |
| 汎化性スコア | 0.961 | 0.958 | 0.901 | 0.923 |
| 同時編集数 | 1件 | 10,000件 | 1件 | 無制限 |
| 編集速度 | 3-5秒 | 30秒/バッチ | 0.1秒 | 数時間 |
※ CounterFact ベンチマーク(GPT-J)での測定値
# pip install rome-model-editing
from rome import ROMEHyperParams, apply_rome_to_model
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-j-6b")
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6b")
request = {
"prompt": "The capital of France is",
"subject": "France",
"target_new": {"str": "Marseille"},
}
hparams = ROMEHyperParams.from_name("gpt-j-6b")
model_edited = apply_rome_to_model(model, tokenizer, [request], hparams)
Q1: ROME は商用利用できますか? A: ROME のコードベースは MIT ライセンスで公開されており商用利用可能。ただし編集対象のモデル自体のライセンスに従う必要がある。LLaMA 2 は商用利用可、GPT-J も Apache 2.0 で利用可能。
Q2: ROME と MEMIT の使い分けは? A: 1件の重要な事実修正には ROME(シンプルで高速)、数十〜数千件のバッチ修正には MEMIT(同時編集で品質劣化が少ない)が適する。2026年時点では MEMIT が第一選択になることが多い。
Q3: LoRA ファインチューニングとの違いは? A: LoRA は広範な知識やスキルの追加に適し、ROME は特定の事実1件の精密修正に特化。LoRA は数百サンプル・数十分の学習が必要だが、ROME は 5秒で完了する。用途が根本的に異なる。