AI・機械学習
上級
ROME(知識編集)(ローム チシキヘンシュウ)
LLMの特定の事実を局所的に書き換える知識編集手法。勾配を使わずRank-One行列更新でFF層の重みを直接変更し、副作用を最小化する。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
知識編集
LLM
モデル編集
Rank-One更新
事実訂正
ROME(知識編集)
概要
ROME(Rank-One Model Editing)は、LLM(大規模言語モデル)内の特定の事実知識を局所的・外科的に書き換える知識編集手法だ。MITのMeng et al.(2022)が発表し、モデル全体の再学習なしに数ミリ秒で事実訂正を実現した。
基本原理
FF層のキーバリュー記憶
ROMEはTransformerのFeed-Forward(FF)層を分散型キーバリューメモリとして捉える。各FF層は:
- Key(K): 入力トークン表現(「エッフェル塔は〜」のような文脈)
- Value(V): 対応する事実属性(「パリ」という場所情報)
を暗黙的に保持する。
Rank-One行列更新
対象事実のKey-Value対を特定し、以下の手順でFF層重みWを更新する:
- 因果追跡(Causal Tracing): どの層・どのトークン位置が事実記憶に最も関与するかを特定
- 目標Value計算: 新しい事実に対応するValueベクトルを最適化
- Rank-1更新:
W_new = W + (v* - Wk)k^T / (k^T k)で重みを更新
勾配計算は最終ステップのみで完結するため、処理時間は数ms以内。
ZSREおよびCOUNTERFACTベンチマーク
| 手法 | 成功率 | 汎化性 | 副作用 |
|---|---|---|---|
| Fine-tuning | 96% | 低 | 高 |
| ROME | 94% | 中 | 低 |
| MEMIT(後継) | 98% | 高 | 非常に低 |
実装例
from rome import ROMEHyperParams, apply_rome_to_model
# 編集対象
request = {
"prompt": "The Eiffel Tower is located in",
"subject": "Eiffel Tower",
"target_new": {"str": "Rome"},
"target_true": {"str": "Paris"},
}
# ROME適用
model_edited, orig_weights = apply_rome_to_model(
model, tok, [request], hparams, return_orig_weights=True
)
因果追跡(Causal Tracing)の発見
ROMEの副産物として、GPT系モデルではFF層の中間〜後期層(例:GPT-2では第16〜19層)が事実記憶の主要部位であることが判明した。これはLLMの解釈可能性研究にも大きな影響を与えた。
限界と後継手法
- 大規模編集に非対応: 1回に1件の編集が基本(後継のMEMITが解決)
- 長距離依存: 主語から離れた位置の事実には効きにくい
- モデル依存: アーキテクチャごとに最適な層が異なる
後継として、MEMIT(大規模一括編集)、WISE(選択的・永続的編集)、GRACE(オーバーレイ型)などが発展した。
参考
- 論文: "Locating and Editing Factual Associations in GPT" (Meng et al., NeurIPS 2022)
- 実装:
github.com/kmeng01/rome - 評価ベンチマーク: COUNTERFACT(21,919件の事実変更タスク)