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を更新する:

  1. 因果追跡(Causal Tracing): どの層・どのトークン位置が事実記憶に最も関与するかを特定
  2. 目標Value計算: 新しい事実に対応するValueベクトルを最適化
  3. Rank-1更新: W_new = W + (v* - Wk)k^T / (k^T k) で重みを更新

勾配計算は最終ステップのみで完結するため、処理時間は数ms以内。

ZSREおよびCOUNTERFACTベンチマーク

手法成功率汎化性副作用
Fine-tuning96%低高
ROME94%中低
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件の事実変更タスク)
この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7