Locating and Editing Factual Associations in GPT
要するに?(何をどうやって検証したのかを短く)
いわゆるROMEという知識編集の手法を提案した論文
因果媒介分析によって、ある知識の想起に関与するFFNの部分を特定する**Causal Tracing**という手法を提案した
さらに、特定されたFFNのニューロンを直接操作する「Rank-One Model Editing(ROME)」を提案した
単一の事実の関係をモデルに挿入・編集するのに有効
この論文の貢献
知識の保存と想起に中間層のFFNが重要な役割を果たしていることを確認したこと
Transformerの計算メカニズムを直接操作することで、モデルの知識を理解・編集する方法を提案したこと
CounterFactというモデル編集の法科のためのデータセットを作成したこと
提案手法
事実の関連性をCausal Tracing (Vig et al.) によって追いかける
https://gyazo.com/2d075e8449413c20d32306b720ff3932
Causal Mediation Analysisという手法で、因果グラフの中にある中間の変数の貢献を数量化する手法
これによって言語モデル内のhidden statesの依存関係を扱えるようにする
これはDecoder-onlyモデルがleft-to-rightで次単語予測をしているため可能(?)
Causal Tracing
Clean Run
Object Entityが欠けた入力プロンプトを単に入力する
これはObject Entityが生成されることを期待する
Corrupted Run
入力表現を破壊して言語モデルに予測をさせる
具体的には入力文の埋め込み層の表現のうち、Subject Entityに当たるスパンに正規乱数から生成されるノイズを加える
Corrupted-with-Restoration Run
一部の入力表現だけを回復させて予測させる
ある層iのあるトークンという形で、特定のstateだけを選ぶ
この一部の入力表現だけが正しい事実を回復できれば、計算グラフ上における因果的な重要性を暗示していると考えることができる
そして、Total Effect(TE)とIndirect Effect(IE)を次のように定義する
Total Effect (全体的なSubjectの効果)
Clean Run - Corrupted Run
Indirect Effect (ある特定の層iのあるstateの効果)
Corrupted-with-Restoration Run - Corrupted Run
Average Indirect Effectによって、GPT-2-XLにおいては最終層と15層のlast subject tokenに強い因果効果が見られたが、予測直前の最終層の影響は不思議ではないが、若い層のlast tokenにも強い影響が見られたことは新しい発見だ、とした
また、特にこの若い層の因果効果はAttention層ではなく、Feed-Forward層で起こっていることが見られた
https://gyazo.com/d9a9bb1261bb7127547fc145cb28dac0
Appendix Bによれば、Integrated GradientsなどのGradientベースの手法よりもCausal Tracingの方がよりInformativeでノイズが強かったらしい
ROME
Causal Tracingを使って、あるSubjectに対してあるObjectを結びつける
https://gyazo.com/089f2aa09635be59b9986d60c9f50420
実際にやってるのは、TransformerのMLPモジュールにある2つの線形層のうちの出力部($ W_{proj}^{(l)})の重みをいじる
どういじるのかといえば、次の制約付き最適化問題を解く
$ \operatorname{minimize}\|\hat{W} K-V\| \text { such that } \hat{W} k_*=v_* \quad \text { by setting } \hat{W}=W+\Lambda\left(C^{-1} k_*\right)^T
この$ Wは元のTransformerの$ W_{proj}^{(l)}の重み
これはあるキーベクトル$ K=(k_1|k_2|...)とある値ベクトル$ V=(v_1|v_2|...)を対応($ W K \approx V)させるために線形変換できるようにするもの
$ Cは定数でここでは気にしなくて良い
また、$ \Lambdaは新しいkey-valueペアになるときの残差エラーに釣り合わせるようにするための行列
$ \Lambda=\left(v_*-W k_*\right) /\left(C^{-1} k_*\right)^T k_*
ようは新しい知識への更新後の重み$ W^* を考えて、$ W^* K \approx Vとなるように問題を解いている
これは$ W = V^* K^+を解くことで得られる
$ K^+は$ Kムーア・ペンローズ擬似逆行列
ROMEの計算手順
Step1
編集対象となる知識のSubjectを表現するキーベクトル$ k_*を選択する
Subjectの最後のトークンを処理するMLPモジュールへの入力から計算する
Subjectの最後のトークンにおけるMLPの入力と決定的な役割に基づいて、その最後のトークンを$ vをlookupするためkey$ k_*を表現する入力として選ぶ
Transformerはactivationsを集めることによって $ k_*を計算している
とはいえ、個々の$ k_*は$ sの前にあるトークン(コンテキスト)によって大きく変わるため、実際の$ k_*をsubject$ sを含む複数のテキストの集合(small set)の平均値として、次の式の計算結果を代入している
これによって文脈による差を軽減させていて、実際にサンプルされた$ x_jとして長さ2から10のランダムなトークン列を生成している
$ k_*=\frac{1}{N} \sum_{j=1}^N k\left(x_j+s\right) \text {, where } k(x)=\sigma\left(W_{f c}^{\left(l^*\right)} \gamma\left(a_{[x], i}^{\left(l^*\right)}+h_{[x], i}^{\left(l^*-1\right)}\right)\right)
$ k(\cdot)はMLP層の入力部の線形層 + activation
Step2
ある事実を想起させるような$ v_*を選ぶ
新しい Relation $ (r, o^*)をsubject $ sの属性として持たせる
そのために、以下の最適化問題を解く
$ v_*=\operatorname{argmin}_z \mathcal{L}(z)
目的関数$ \mathcal{L}(z)は次の式
https://gyazo.com/898c2778fc2dd4cf5bde9ef0821de2d1
この式がやっていることは$ o^*の予測確率を最大化しつつ、subject$ sの本質的な特徴を保護しようと努めるということ
$ G(m_i^{(l^*)} := z)は、層$ l^*のMLPの入力部のsubject$ sの終わりにあるトークン$ iの表現に$ zを代入したと考える
$ x_jはsubjectを含むランダムなテキスト
$ pは関係を表すプロンプト
最初の左項は、ある事実の返答$ pにおけるtarget object$ o^*を予測するネットワークを引き起こす
$ p'はsubject$ sの性質を表すプロンプト
ex. "{subject} is a"といった形のもの
二つ目の右項は、$ p'の予測時のKLダイバージェンスの最小化をしている
これはあるsubject $ sの性質を変化させないための項
モデルが持つsubject$ sの本質的な部分を保護する
この最適化はモデルの重みを直接変えるのではなくsubject$ sの新しい属性$ (r, o^*)を表す$ v_*を特定する
$ k^*を選ぶ時と同じように$ v^*の選択もまた、異なるコンテキストの下での頑健性を上げるためにランダムなprefixテキスト$ x_jを使う
Step3
ここまできたら新しい知識$ (s, r, o^*)を表現する$ (k^*, v^*)のペアが計算できているので、これを使ってモデルの編集をおこなう
モデル編集のための最適化問題を再掲
$ \operatorname{minimize}\|\hat{W} K-V\| \text { such that } \hat{W} k_*=v_* \quad \text { by setting } \hat{W}=W+\Lambda\left(C^{-1} k_*\right)^T
つまり、$ \hat{W}=W+\Lambda\left(C^{-1} k_*\right)^Tが重みの更新式で、その更新量が$ \Lambda=\left(v_*-W k_*\right) /\left(C^{-1} k_*\right)^T k_*ということになる
そして、これはRank-1 updateという数学的操作で、これによって重みを更新していく
この操作は行列の低ランク近似に基づく更新手法の一種で、ある行列Aに対して、ベクトルuとvの外積を加えることで、Aの近似行列を求める操作を指す
この更新は$ Aは元の行列、$ A'は更新後の行列、$ uと$ vは列ベクトルを表すとき、$ A' = A + uv^Tで表される
この操作は、以下のような特徴を持っている
行列Aのランクを1だけ増加させる
行列Aのうち、uとvに対応する部分を重点的に更新する
計算量が少なく、効率的に行列を更新できる
評価方法
Zero-shotによる関係抽出
あるフレーズがある関係を表現しているかを判定するタスクをzero-shotでおこなう
データは先行研究(Mitchell et al. (2021) とDe Cao et al. (2021) )で使われたものと同じで人工的に作成されたデータ
1レコードに、1つの事実陳述とその言い換え、関連のない事実陳述を含むデータで、1万レコードある
これによって知識編集の結果が一般化できているかをチェックしていく
https://gyazo.com/7d7f6d86dcb3171835ccf4c419c902a5
FT / FT+Lはベースライン
Adam with early stopping at one layer to minimize -\log \mathbb{P}\left[o^* \mid x\right]
FT+Lについてはparameter-space l_∞-norm constraint on weight changes
KE / MENDはハイパーネットワーク
Our evaluation slice contains 10,000 records, each containing one factual statement, its paraphrase, and one unrelated factual statement.
評価指標
Efficacy
挿入した知識が正しく適用された割合
編集後のモデルが挿入した知識を正しく予測できているか
Generarization
挿入した知識の言い換え表現への適用度合い
編集後のモデルが挿入した知識を言い換え表現に対しても正しく予測できているか
Specificity
挿入した知識以外の知識への影響度合い
編集後のモデルが挿入した知識以外の知識に対して予測を誤っていないか
結果としてはMENDと同等の評価が得られたとしている
COUNTERFACTによる評価
zsREはリーズナブルだが、ある事実に関して意味がある変化に対応する大きな変更と表面的なワーディングの変化の影響を見分けるなど詳細な洞察には踏み込めない
そこで、この論文で著者が提案したデータセット
(Subject, Relation, Object)のtripletからなる事実知識で構成されている
難易度の高い版事実的知識を含んでいる
それぞれの事実知識に対する言い換え表現や関連するSubjectに関する知識も含まれている
https://gyazo.com/6c193d2c0f3b68c6b45be44257887ef1
効果測定には多面的に評価できるために複数の指標を使っている
評価指標
Efficacy
挿入した知識が正しく適用されているかの割合
編集後のモデルが反事実的知識を事実として正しく認識できているか
Paraphrase
挿入した知識の言い換え表現への適用度合い
編集後のモデルが反事実的な知識を言い換え表現に対してどれくらい強く予測できているか
Neighborhood
挿入した知識の関連する他の知識への影響度合い
編集後のモデルが関連する他の知識に対して予測を誤っていないか
Consistency
挿入した知識に基づく生成テキストの一貫性
編集後のモデルが生成したテキストが挿入した知識と矛盾していないか
Fluency
挿入した知識に基づく生成テキストの流暢さ
編集後のモデルが生成したテキストが文法的に正しく自然に読めるか
評価の結果、ROMEは知識編集の有効性と汎化性能に優れていることが確認されたが、テキストの流暢性が減少することが確認された
人手評価
編集されたモデルが生成するテキストの品質を評価するために、人間による評価実験をした
実験設定
5人の評価者が実験に参加
評価者は2つの手法(ROMEとFT+L)によって編集されたモデルを比較
各モデルは50個の異なる知識を挿入
評価者は生成テキストを流暢さと挿入された知識との一貫性の観点から評価
評価結果
一貫性
ROMEによって編集されたモデルによって生成されたテキストが、FT+Lで編集されたモデルによる生成テキストよりも、挿入知識の一貫性していると評価者に判定される可能性が1.8倍ほど高い
流暢さ
ROMEによって編集されたモデルによって生成されたテキストが、FT+Lで編集されたモデルによる生成テキストよりも、流暢であると評価者に判定される可能性が1.3倍ほど低い
この影響は他の自動評価による評価指標では捉えられていなかった
技術・手法・アイデアなどで、すごいと思った点
個人的に全体を通してその発想はなかった、という手法だった
Abstractを一見するだけでは、subject $ sに関する知識がすごく変わってしまうのでは?という疑問が湧くが、それに対しては新しい関係に関する知識$ v^*の計算時に考慮されている
この論文の限界として感じたことがあれば
一度に編集できる知識は一つまでで、複数の知識を同時に編集したい場合はROMEを繰り返し実行する必要がある
SubjectからObjectの方向での修正であるため、その逆の知識は自動的に挿入されない
頑健性のためにその逆方向の知識も挿入した方が良い
GPT-2-XL/GPT-J以上のモデルで動くかはわからない
また、現状ではDecoder-onlyモデルのみでしか実行できない
生成テキストの流暢さが知識挿入前よりも劣化する傾向がある模様
ROMEによって知識編集を行ったとしてもモデルはハルシネーションを起こして存在しない事実を推測してしまうことは避けられない
言語モデルをKnowledge Baseとして扱うことの限界
事実知識の確認はできているが、論理的知識や空間的知識、数値的知識の確認はできていない
この論文を読んでさらに知りたいと思ったこと
複数の知識を同時に変更したときにモデルがどれだけ劣化するだろうか
複数の知識を挿入したとき、最初に挿入した知識が劣化しないか