天天看點

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

作者:夕小瑤科技說

夕小瑤科技說 原創

作者 | 小戲、Python

大模型在其巨大體量背後蘊藏着一個直覺的問題:“大模型應該怎麼更新?”

在大模型極其巨大的計算開銷下,大模型知識的更新并不是一件簡單的“學習任務”,理想情況下,随着世界各種形勢的紛繁複雜的變換,大模型也應該随時随地跟上時代的腳步,但是訓練全新大模型的計算負擔卻不允許大模型實作即時的更新,是以,一個全新的概念“Model Editing(模型編輯)”應運而生,以實作在特定領域内對模型資料進行有效的變更,同時不會對其他輸入的結果造成不利影響。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

模型編輯這個概念由 Mitchell 等人于 2022 年提出,如上圖所示,整個 Model Editing 的過程旨在使用編輯描述符 ,即上圖中關于資訊 “誰是美國總統?-拜登” 的問題答案對,去調整基礎模型 ,最終得到一個編輯後的模型 ,并且使得 。

另一方面,模型編輯還要求對目前領域内的“編輯”不會影響到其他領域内輸入的正常輸出結果,形式化的表述即需要:

其中, 表示 的“有效鄰居”, 則表示超出 作用範圍的領域。一個編輯後的模型應當滿足以下三點,分别是可靠性,普适性與局部性,可靠性即編輯後模型應該可以正确的輸出編輯前模型錯誤的例子,可以通過編輯案例的平均準确率來衡量,普适性表示對于 的“有效鄰居”,模型都應該可以給出正确的輸出,這點可以對編輯案例領域資料集進行均勻抽樣衡量平均正确率來衡量,最後局部性,即表示編輯後模型在超出編輯範圍的例子中仍然應該保持編輯前的正确率,可以通過分别測算編輯前編輯後的平均準确率來對局部性進行刻畫,如下圖所示,在編輯“特朗普”的位置時,一些其他的公共特征不應受到更改。同時,其他實體,例如“國務卿”,盡管與“總統”具有相似的特征,但也不應受到影響。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

而今天介紹的這篇來自浙江大學的論文便站在一個大模型的視角,為我們詳細叙述了大模型時代下模型編輯的問題、方法以及未來,并且建構了一個全新的基準資料集與評估名額,幫助更加全面确定的評估現有的技術,并為社群在方法選擇上提供有意義的決策建議與見解:

主流方法

當下針對大規模語言模型(LLMs)的模型編輯方法如下圖所示主要可以分為兩類範式,分别是如下圖(a)所示的保持原模型參數不變下使用額外的參數以及如下圖(b)所示的修改模型的内部參數。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

首先來看相對簡單的增加額外參數的方法,這種方法又稱基于記憶或記憶體的模型編輯方法,代表方法 SERAC 最早出現于 Mitchell 提出“模型編輯”的論文,其核心思想在于保持模型原始參數不變,通過一個獨立的參數集重新處理修改後的事實,具體而言,這類方法一般先增加一個“範圍分類器”判斷新輸入是否處于被“重新編輯”過的事實範圍内,如果屬于,則使用獨立參數集對該輸入進行處理,對緩存中的“正确答案”賦予更高的選擇機率。在 SERAC 的基礎上,T-Patcher 與 CaliNET 向 PLMs 的前饋子產品中引入額外可訓練的參數(而不是額外外挂一個模型),這些參數在修改後的事實資料集中進行訓練以達到模型編輯的效果。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

而另一大類方法即修改原來模型中參數的方法主要應用一個 ∆ 矩陣去更新模型中的部分參數 ,具體而言,修改參數的方法又可以分為“Locate-Then-Edit”與元學習兩類方法,從名字也可以看出,Locate-Then-Edit 方法先通過定位模型中的主要影響參數,再對定位到的模型參數進行修改實作模型編輯,其中主要方法如 Knowledge Neuron 方法(KN)通過識别模型中的“知識神經元”确定主要影響參數,通過更新這些神經元實作對模型的更新,另一種名為 ROME 的方法思想與 KN 類似,通過因果中介分析定位編輯區域,此外還有一種 MEMIT 的方法可以實作對一系列編輯描述的更新。這類方法最大的問題在于普遍依據一個事實知識局部性的假設,但是這一假設并沒有得到廣泛的驗證,對許多參數的編輯有可能導緻意想不到的結果。

而元學習方法與 Locate-Then-Edit 方法不同,元學習方法使用 hyper network 方法,使用一個超網絡(hyper network)為另一個網絡生成權重,具體而言在 Knowledge Editor 方法中,作者使用一個雙向的 LSTM 去預測每個資料點為模型權重帶來的更新,進而實作對編輯目标知識的帶限制的優化。這類知識編輯的方法由于 LLMs 的巨大參數量導緻難以應用于 LLMs 中,是以 Mitchell 等又提出了 MEND(Model Editor Networks with Gradient Decomposition)使得單個的編輯描述可以對 LLMs 進行有效的更新,這種更新方法主要使用梯度的低秩分解微調大模型的梯度,進而使得可以對 LLMs 進行最小資源的更新。與 Locate-Then-Edit 方法不同,元學習方法通常花費的時間更長,消耗的記憶體成本更大。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

方法測評

這些不同方法在模型編輯的兩個主流資料集 ZsRE(問答資料集,使用反向翻譯生成的問題改寫作為有效領域) 與 COUNTERFACT(反事實資料集,将主語實體替換為同義實體作為有效領域) 中進行實驗如下圖所示,實驗主要針對兩個相對以往研究較大的 LLMs T5-XL(3B)和 GPT-J(6B)作為基礎模型,高效的模型編輯器應該在模型性能、推理速度和存儲空間之間取得平衡。

對比第一列微調(FT)的結果,可以發現,SERAC 和 ROME 在 ZsRE 和 COUNTERFACT 資料集上表現出色,特别是 SERAC,它在多個評估名額上獲得了超過 90% 的結果,雖然 MEMIT 的通用性不如 SERAC 和 ROME,但在可靠性和局部性上表現出色。而 T-Patcher 方法表現極其不穩定,在 COUNTERFACT 資料集中具有不錯的可靠性和局部性,但缺乏通用性,在 GPT-J 中,可靠性和通用性表現出色,但在局部性方面表現不佳。值得注意的是,KE、CaliNET 和 KN 的性能表現較差,相對于這些模型在“小模型”中取得的良好表現而言,實驗可能證明了這些方法不是非常适配大模型的環境。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

而如果從時間來看,一旦訓練好網絡,KE 和 MEND 則表現相當優秀,而如 T-Patcher 這類方法耗時則過于嚴重:

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

再從記憶體消耗來看,大多數方法消耗記憶體在同一個量級,但引入額外參數的方法會承擔額外的記憶體開銷:

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

同時,通常對模型編輯的操作還需要考慮批次輸入編輯資訊以及順序輸入編輯資訊,即一次更新多個事實資訊與順序更新多個事實資訊,批次輸入編輯資訊整體模型效果如下圖所示,可以看到 MEMIT 可以同時支援編輯超過 10000條資訊,并且還能保證兩個度量名額的性能都保持穩定,而 MEND 和 SERAC 則表現不佳:

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

而在順序輸入方面,SERAC 和 T-Patcher 表現出色而穩定,ROME,MEMIT,MEND 都出現了在一定數量的輸入後模型性能快速下降的現象:

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

最後,作者在研究中發現,當下這些資料集的構造及評估名額很大程度上隻關注句子措辭上的變化,但是并沒有深入到模型編輯對許多相關邏輯事實的更改,譬如如果将“Watts Humphrey 就讀哪所大學”的答案從三一學院改為密歇根大學,顯然如果當我們問模型“Watts Humphrey 大學時期居住于哪個城市?”時,理想模型應該回答安娜堡而不是哈特福德,是以,論文作者在前三個評估名額的基礎上引入了“可移植性”名額,衡量編輯後的模型在知識轉移方面的有效性。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

為此,作者使用 GPT-4 建構了一個新的資料集,通過将原始問題 的答案從 改為 ,并且建構另一個正确答案為 的問題 ,組成 三元組,對編輯後模型輸入 ,如果模型可以正确輸出 則證明該編輯後模型具有“可移植性”,而根據這個方法,論文測試了現有幾大方法的可移植性得分如下圖所示:

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯

可以看到,幾乎絕大多數模型編輯方法在可移植性方面都不太理想,曾經表現優異的 SERAC 可移植性準确率不到 10%,相對最好的 ROME 和 MEMIT 最高也隻有 50% 左右,這表明當下的模型編輯方法幾乎難以做到編輯後知識的任何擴充和推廣,模型編輯尚有很長的路要走。

讨論與未來

不管從何種意義來說,模型編輯預設的問題在未來所謂的“大模型時代”都十分有潛力,模型編輯的問題需要更好的探索如“模型知識究竟存儲在哪些參數之中”、“模型編輯操作如何不影響其他子產品的輸出”等一系列非常難的問題。而另一方面,解決模型“過時”的問題,除了讓模型進行“編輯”,還有一條思路在于讓模型“終身學習”并且做到“遺忘”敏感覺識,不論是模型編輯還是模型終身學習,這類研究都将對 LLMs 的安全與隐私問題做出有意義的貢獻。

大模型知識Out該怎麼辦?探索大模型參數更新的方法—模型編輯