- 2024年2月に投稿された中国科学院大学の研究者によるarXiv論文です。
- ファインチューン・ベースの知識編集手法である「Stable Knowledge Editing」を提案したうえで、既存の知識編集手法と比べた場合の有用性を主張しています。
概要
大規模言語モデルの効率的な知識編集は、古くなった情報を置き換えたり、まとまった専門知識を導入したりするために極めて重要である。しかし、既存手法では、知識がモデル内で局所的かつ孤立していることを暗黙の前提としており、この前提はモデル知識の相互関連性を単純化しすぎている。知識が局在しているという前提は不完全な知識編集を招く一方で、知識が孤立して存在するという前提は他の知識と一般的な能力の両方を損なう可能性がある。これは知識編集法の性能に不安定さをもたらす。これらの仮定を超えるために、我々はStableKE(Stable Knowledge Editing)を導入する。StableKEは、知識の増強に基づいた新しい視点を採用した手法である。人間によるラベリングにかかるコストを克服するため、StableKEは2つの自動化された知識増強戦略を統合する:意味的言い換え増強戦略は、モデルへの新しい情報の定着を容易にするために知識の記述を多様化するものであり、文脈的記述増強戦略は、関連する情報の忘却を防ぐために周囲の知識を拡張するものである。StableKEは、他の知識編集手法を凌駕し、編集された知識とマルチホップ知識の安定性を示すと同時に、関連しない知識や一般的な能力も保持する。さらに、StableKEはChatGPT上の知識を編集することができる。
メモ
- 既存の知識編集手法については、こちらの記事でサーベイ論文を概観しました。
- そもそもLLMの知識編集は、ファインチューン(追加学習)による知識更新のデメリットを解消する目的で研究されているもので、正確に編集できることに加えて、1)編集に必要な計算コストを抑えること、2)モデルに不必要な副作用を与えないこと(該当する知識だけをピンポイントで編集すること)が重視されています。
- そのため、モデル本体とは別に外部メモリを追加したり(SERAC、GRACEなど)、Hyper-Networkを介して制限付きのファインチューンを行ったり(MENDなど)、特定の知識に対応するパラメータだけを特定して編集(Locate-Then-Edit)したり(MEMIT、ROME)といった、最小限の介入で知識を編集するための実験的手法がいくつも考案されています。
- この論文は、そうした既存手法が「ある知識がモデルの特定のパラメータに局在している」という不適切な前提を持っており、モデル内部の複雑な相互関係性の中で知識が形作られている実態に合致していないと批判しています。
- そこで「Stable Knowledge Editing(StableKE)」という新たな知識編集手法を提案しているのですが、私が理解した限りでは、StableKEというのは、総じて特殊な処理を必要とする既存の知識編集手法とは別物で、ほとんどオーソドックスなファインチューンの一形態と言えるものです。
- 具体的には、まず「意味的言い換えによる強化(Semantic Paraphrase Enhancement)」として、更新したい知識を叙述するテキスト(例えば「スナクは英国の首相です」)をGPT-3.5を使って何回も言い換えさせます(「スナクは現在、イギリスで首相の地位にある」「英国は現在、スナク首相が率いている」...)。この同一知識を別の表現で言い換えたテキストを、ファインチューン用データセットに使用します。
- この手順は普通のファインチューンでの知識追加でよく使われるデータ増強(Data Augmentation)と全く同じです。同じ事実を異なる言い回しで表現した複数のテキストを学習させることで、モデル内部で知識として一般化させる狙いがあります。
- 次に「文脈的な説明による強化(Contextual Description Enrichment)」として、更新したい知識の背景知識を含むテキスト(例えば「スナクは英国の首相です」に対して「リシ・スナクは1980年生まれの英国の政治家で、保守党に所属しています。」)を用意します。これも同じようにいくつも言い換えテキストを生成し、ファインチューン用のデータセットとして追加します。
- このプロセスは、モデルが既に持つ知識を忘却するのを防ぐために必要なそうです(個人的には、むしろ更新知識の汎化を促すのに必要なもののような気もします)。
- あとは、作成したデータセットを使ってモデルをファインチューンするだけのようです。詳細には触れられておらず、FastChatを使ってデフォルト設定で学習させたとだけ書かれています。
- FastChatのRepoをみると、学習率2e-5、エポック数3などとなっています。
- 実験で使うデータセットには先行研究で使用された知識編集用のデータセットを流用しているようです。対象モデルはVicuna 7Bとなっています。
- 性能評価:以下は、バッチサイズを変更した場合の、MEMITとStableKEの効果比較です。比較対象がMEMITだけの理由はわかりません。
- (a)が狙った知識の編集成功率、(b)が狙った知識+の派生知識の編集成功率(汎化を測定するもの)、(c)が無関係の知識への影響度、(d)がMMLUによるモデル性能評価を示していて、グラフの右軸がバッチサイズです。
- 小さなバッチサイズではMEMITと大差ないようですが、マルチホップの知識安定性(記事冒頭のポンチ絵を参照)では上回っています。
- 以下はバッチサイズではなく実行回数(シーケンシャルサイズ)を変えた場合の効果比較です。比較対象はROMEとMEMITです。
- これもサイズが小さければ差はありませんが、大きくなるとMEMITやROMEでは劣化するということのようです。
- MEMITやROMEといった知識編集手法の場合、大規模な知識の更新だと精度低下やモデル劣化の影響が表れやすいので、そのような用途ではファインチューンベースのStableKEのような手法が有効である、という解釈ができそうです。
- 以下は、「意味的言い換えによる強化(Semantic Paraphrase Enhancement)」の際に同一知識についてパラフレーズするテキストの数を増やした(データセットの嵩を増した)場合の、知識編集の効果の評価です。
- 先ほどのバッチサイズ等の実験時にどのテキスト数を採用したのかは書かれていません。
- だいたい4件~8件程度のパラフレーズ(言いかえ)が好ましいようです。
- 別のデータ増強関連の研究で読んだところでは、llamaモデルの場合だいたい5件程度にパラフレーズすると知識の定着が安定すると書かれていた記憶がありますが、この研究(llamaベースのVicuna 7Bを使用)でも似たような結果が出ています。
- ただ、実質的な知識の定着と言えるマルチホップ知識の正確性は最高でも25%程度にとどまっていることに注意が必要です。
- この研究では、ChatGPTの提供するファンチューン機能を使ってGPT-3.5への知識編集も試みています。下記の表に記載されているとおり、やはりマルチホップ知識の正確性は2割~3割(大半は汎化していない)となっています。
雑感
- 基本的に、知識編集の局所性と一般性はトレードオフの関係にあるとされていますが、データセットに工夫すれば通常のファインチューンでもあまり性能を損なわずに両立できるよ、というのがこの論文の主旨だと理解しました。
- 一般人目線では、MENDやMEMITなど従来の知識編集手法はローカルで手軽に試せる実装が提供されていないので、QLoRAなどがそのまま使えるファインチューンベースの知識編集手法が有効なのであればあればありがたいところです。
- ただ、StableKEも含めファインチューンをかけるとどうしても若干モデル性能が低下するようなので、限られた数の事実知識をサクッと編集したいなら、やはりROMEなどを使いたい感じがします。
- なおStableKEではマルチホップ知識(直接更新した知識から派生する関連知識)の正確性の高さがアピールされていますが、この手法だと「文脈的な説明による強化」と称して周辺知識も学習データに含めているので、そもそも部分的にマルチホップではなくなってる(直接学習してしまっている)可能性があるのでは?と素人的には思いました。
- 従来の知識編集においても、周辺知識も含めてまとめて編集することでモデル内部の知識体系の一貫性を維持できる、という研究を見た記憶があります。
- 最近、知識編集手法に関する文献にいくつか目を通してみているのですが、気になるのは文献によって各手法の性能評価がまったくバラバラであることです。
- LocaliyやGeneralityなどのおおまかな評価基準は共有されていて、具体的なベンチマークやパラメータの設定で違いが出ているようなのですが...。
- 参考まで、以下がEasyEditのRepoで公開されている知識編集手法の効果比較です。PortabilityがGeneralityに相当します。