【大模型基礎_毛玉仁】5.4 定位編輯法:ROME


目錄

    • 5.4 定位編輯法:ROME
      • 5.4.1 知識存儲位置
        • 1)因果跟蹤實驗
        • 2)阻斷實驗
      • 5.4.2 知識存儲機制
      • 5.4.3 精準知識編輯
        • 1)確定鍵向量
        • 2)優化值向量
        • 3)插入知識


5.4 定位編輯法:ROME

定位編輯:

  • 首先定位知識存儲在神經網絡中的哪些參數中,

  • 然后再針對這些定位到的參數進行精確的編輯

ROME(Rank-One Model Editing)是其中的代表性方法。

.

5.4.1 知識存儲位置

通過對知識進行定位,可以揭示模型內部的運作機制,這是理解和編輯模型的關鍵步驟。

ROME 通過因果跟蹤實驗阻斷實驗發現知識存儲于模型中間層的全連接前饋層

.

1)因果跟蹤實驗

ROME通過因果跟蹤實驗探究模型中不同結構與知識在推理過程中的相關性。實驗包含三個步驟:

  • 正常推理:保存模型未受干擾時的內部狀態,用于后續恢復。

  • 干擾推理:干擾模型的所有內部狀態,作為基準線。

  • 恢復推理:逐步恢復內部狀態,對比恢復前后的輸出差異,評估每個模塊與知識回憶的相關性。

最終目標是確定知識在模型中的具體位置。

實驗中,每個知識被表示為知 識元組 t = (s, r, o),其中 s 為 主體, r 為 關系,o 為客體。輸入問題為 q = (s, r),q^(i) 表示 q 的第 i 個 Token。我們期望模型在處理問題 q 時能 夠輸出對應的客體 o 作為答案。具體地,因果跟蹤實驗的步驟如下:

  • 正常推理:輸入問題 q=(s,r),讓其預測出 o。此過程,保存模型內部所有模塊的正常輸出。

  • 干擾推理:向 s 的嵌入層添加噪聲,破壞輸入向量,形成干擾狀態。

  • 恢復推理:在干擾狀態下,逐個恢復輸入問題中每個 Token q^(i) 的輸出向量至“干凈”狀態,并記錄恢復前后模型對答案預測概率的增量(稱為模塊的因果效應),用于評估各模塊對知識回憶的貢獻。

以問題“斑馬的膚色是”為例,其因果跟蹤過程如下:

圖 5.12: 正常推理
在這里插入圖片描述

圖 5.13: 干擾推理
在這里插入圖片描述

圖 5.14: 恢復推理
在這里插入圖片描述

ROME在1000個知識陳述上對三種模塊進行因果跟蹤實驗,發現:

  • 中間層Transformer在處理主體s的最后一個Token s?1時,因果效應顯著。

  • 末尾層Transformer在處理輸入問題q的最后一個Token q?1時,因果效應也很強,但這在意料之中。

  • 中間層Transformer在處理s?1時的因果效應主要來自全連接前饋層。

  • 注意力層主要對末尾層Transformer處理q?1產生貢獻。

基于這些發現,ROME認為模型中間層的全連接前饋層可能是模型中存儲知識的關鍵位置

.

2)阻斷實驗

為區分全連接前饋層和注意力層在 s^(?1) 處的因果效應中所起到的作用,并且驗證全連接前饋層的主導性,ROME 對兩種模型結構進行了阻斷實驗。

阻斷實驗原理

在恢復某一層Transformer處理s^(-1)的輸出后,將后續的全連接前饋層(或注意力層)凍結為干擾狀態,即隔離其計算,觀察模型性能下降程度,從而明確各層的關鍵作用。

圖 5.15: 阻斷實驗
在這里插入圖片描述

實驗分析

比較阻斷前后的因果效應,ROME 發現:

  • 如果沒后續全連接前饋層的計算,中間層在處理 s^(?1) 時就會失去因果效應,而末尾層的因果效應幾乎不受全連接前饋層缺失的影響。

  • 而在阻斷注意力層時,模型各層處理 s^(?1) 時的因果效應只有較小的下降

.

基于上述,ROME 認為在大語言模型中:

  • 知識存儲于模型的中間層,其關鍵參數位于全連接前饋層

  • 而且特定中間層的全連接前饋層在處理主體的末尾 Token 時發生作用。

.

5.4.2 知識存儲機制

基于在此之前研究成果,ROME 結合知識定位實驗中的結論,推測知識以鍵值映射的形式等價地存儲在任何一個中間層的全連接前饋層中,并對知識存儲機制做出假設:

  • 首先,起始的 Transformer 層中的注意力層收集主體 s 的信息,將其匯入至主體的最后一個 Token 的向量表示中。

  • 接著,位于中間層的全連接前饋層對這個編碼主體的向量表示進行查詢,將查詢到的相關信息融入殘差流(Residual Stream)中。

  • 最后,末尾的注意力層捕獲并整理隱藏狀態中的信息,以生成最終的輸出。

.

5.4.3 精準知識編輯

與 T-Patcher 相似,ROME 同樣將全連接前饋層視為鍵值存儲體。不同的是:

  • T-patcher 將上投影矩陣的參數向量看作鍵向量,將下投影矩陣的參數向量看作值向量,

  • 而 ROME 則是將下投影矩陣的輸入向量看作鍵向量,將其輸出向量看作值向量。

具體地,ROME 認為上投影矩陣 W f c W_{fc} Wfc? 和激活函數 σ 能夠計算出鍵向量 k?,而下投影矩陣 W p r o j W_{proj} Wproj? 會與鍵向量運算并輸出值向量 v?,類似信息的查詢。

為了實現模型編輯,ROME 通過因果跟蹤實驗定位編輯位置,然后確定鍵向量,優化值向量,并通過插入新的鍵值對完成知識更新。其核心步驟包括:1. 確定鍵向量;2. 優化值向量;3. 插入知識

圖 5.16: ROME 模型編輯方法
在這里插入圖片描述

.

1)確定鍵向量

首先,需要確定 s (?1) 在被編輯的全連接前饋層中的向量表示 k*。

鍵向量 k* **是通過將 s 輸入模型并讀取其在全連接前饋層激活函數后的向量表示來確定的。

為了提高泛化性,會在 s 前拼接隨機的不同前綴文本,多次推理后計算平均向量作為 k*。

鍵向量的計算公式如下:
k ? = 1 N ∑ j = 1 N k ( x j + s ) k^* = \frac{1}{N} \sum_{j=1}^N k(x_j + s) k?=N1?j=1N?k(xj?+s)
其中:

  • N 為樣本數量,

  • j 為前綴文本索引,

  • x_j 為隨機前綴文本,

  • k(x_j + s) 代表在拼接前綴文本 x_j 時,s 的末尾 Token 在被編輯的全連接前饋層中的激活函數輸出,即下投影矩陣 W p r o j W_{proj} Wproj? 的輸入。

.

2)優化值向量

然后,需要確定一個值向量 v?,作為下投影矩陣 W p r o j W_{proj} Wproj? 與 k? 運算后的期望結果。ROME 通過優化全連接前饋層的輸出向量獲得 v?。

訓練過程中,ROME 通過設計損失函數 L(v) = L1(v) + L2(v) 以確保編輯的準確性和局部性,如圖 5.18。其中 v 是優化變量,用于替換全連接前饋層的輸出。

圖 5.18: 優化值向量

在這里插入圖片描述

損失函數 L ( v ) \mathcal{L}(v) L(v) 的公式如下:
L ( v ) = L 1 ( v ) + L 2 ( v ) \mathcal{L}(v) = \mathcal{L}_1(v) + \mathcal{L}_2(v) L(v)=L1?(v)+L2?(v)
L 1 ( v ) = 1 N ∑ j = 1 N ? log ? P M ′ ( o ∣ x j + p ) \mathcal{L}_1(v) = \frac{1}{N} \sum_{j=1}^N -\log \mathbb{P}_{M'}(o \mid x_j + p) L1?(v)=N1?j=1N??logPM?(oxj?+p)
L 2 ( v ) = D K L ( P M ′ ( x ∣ p ′ ) ∣ ∣ P M ( x ∣ p ′ ) ) \mathcal{L}_2(v) = D_{KL}(\mathbb{P}_{M'}(x \mid p') ||\mathbb{P}_M(x \mid p')) L2?(v)=DKL?(PM?(xp)∣∣PM?(xp))

其中:

  • M 為原始模型;

  • M’ 為優化 v 時的模型;

  • o 為客體,即目標答案;

  • p 為所編輯的目標問題 prompt;

  • D K L D_{KL} DKL? 為 KL 散度;

  • p’ 是有關 s 的含義的 prompt。

圖 5.19: 值向量損失函數
在這里插入圖片描述

如圖 5.19, 在 L(v) 中:

  • 為了確保準確性,L1(v) 旨在最大化 o 的概率,通過優化 v 使網絡對所編輯的問題 prompt p 做出正確的預測,與計算 k? 時相同,也會在 p 之前拼接不同前綴文本;

  • 為了確保局部性,L2(v) 在 p′ =“{s} 是”這種 prompt 下,最小化 M′ 與 M 輸出的 KL 散度,以避免模型對 s 本身的理解發生偏移, 從而確保局部性。

.

3)插入知識

確定了知識在編輯位置的向量表示 k? 和 v? 之后,ROME 的目標是調整全連接前饋層中的下投影矩陣 W p r o j W_{proj} Wproj?,使得 W p r o j k ? = v ? W_{proj} k^? = v^? Wproj?k?=v?,從而將新知識插入到全連接前饋層中。

然而,在插入新知識的同時,需要盡量避免影響 W p r o j W_{proj} Wproj? 中的原有信息。

過程可抽象為一個帶約束的最小二乘問題,其形式如下:
確保最小影響: min ? ∥ W ^ K ? V ∥ 確保最小影響:\quad \min \| \hat{W} K - V \| 確保最小影響:minW^K?V
滿足 W p r o j k ? = v ? 關系: s.t. W ^ k ? = v ? 滿足W_{proj} k^? = v^?關系:\quad \text{s.t.} \quad \hat{W} k^* = v^* 滿足Wproj?k?=v?關系:s.t.W^k?=v?
該問題可推導出閉式解為:
W ^ = W + Λ ( C ? 1 k ? ) T \hat{W} = W + \Lambda (C^{-1} k^*)^T W^=W+Λ(C?1k?)T
其中:

  • Λ = v ? ? W k ? ( C ? 1 k ? ) T k ? \Lambda = \frac{v^* - W k^*}{(C^{-1} k^*)^T k^*} Λ=(C?1k?)Tk?v??Wk??

  • W 為原始的權重矩陣

  • W ^ \hat{W} W^ 為更新后的權重矩陣

  • C = K K T C = K K^T C=KKT 是一個預先計算的常數,基于維基百科中的大量文本樣本 k 的去中心化協方差矩陣進行估計

利用這一簡代數方法,ROME 能直接插入代表知識元組的鍵值對 (k*, v*),實現對模型知識的精確編輯。

.


其他參考:【大模型基礎_毛玉仁】系列文章


聲明:資源可能存在第三方來源,若有侵權請聯系刪除!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899744.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899744.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899744.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

橫掃SQL面試——連續性登錄問題

橫掃SQL面試 📌 連續性登錄問題 在互聯網公司的SQL面試中,連續性問題堪稱“必考之王”。💻🔍 用戶連續登錄7天送優惠券🌟,服務器連續報警3次觸發熔斷??,圖書館連續3天人流破百開啟限流?” …

Spring AI Alibaba 對話記憶使用

一、對話記憶 (ChatMemory)簡介 1、對話記憶介紹 ”大模型的對話記憶”這一概念,根植于人工智能與自然語言處理領域,特別是針對具有深度學習能力的大型語言模型而言,它指的是模型在與用戶進行交互式對話過程中,能夠追蹤、理解并利…

vdi模式是什么

?VDI模式(Virtual Desktop Infrastructure)是一種基于服務器的計算模型,其核心思想是將所有計算和存儲資源集中在服務器上,用戶通過前端設備(如瘦客戶機)訪問服務器上的虛擬桌面?? VDI模式的工作原理 在…

【分布式】深入剖析 Sentinel 限流:原理、實現

在當今分布式系統盛行的時代,流量的劇增給系統穩定性帶來了巨大挑戰。Sentinel 作為一款強大的流量控制組件,在保障系統平穩運行方面發揮著關鍵作用。本文將深入探討 Sentinel 限流的原理、實現方案以及其優缺點,助力開發者更好地運用這一工具…

c#winform,倒鴨子字幕效果,typemonkey字幕效果,抖音瀑布流字幕效果

不廢話 直接上效果圖 C# winform 開發抖音的瀑布流字幕。 也是typemonkey插件字幕效果 或者咱再網上常說的倒鴨子字幕效果 主要功能 1,軟件可以自定義添加字幕內容 2,軟件可以添加字幕顯示的時間區間 3,可以自定義字幕顏色,可以隨…

Pycharm(八):字符串切片

一、字符串分片介紹 對操作的對象截取其中一部分的操作,比如想要獲取字符串“888666qq.com前面的qq號的時候就可以用切片。 字符串、列表、元組都支持切片操作。 語法:字符串變量名 [起始:結束:步長] 口訣:切片其實很簡單,只顧頭來…

圖片解釋git的底層工作原理

(圖片來源:自己畫的) 基于同一個commit創建新分支 (圖片來源:書籍《Linux運維之道》 ISBN 9787121461811) 在新分支上修改然后commit一次 (圖片來源:書籍《Linux運維之道》 ISBN 978…

leetcode994.腐爛的橘子

思路源自 【力扣hot100】【LeetCode 994】腐爛的橘子|多源BFS 這里圖中的腐爛的的橘子是同時對周圍進行腐化,所以采用多源bfs就能解決 多源bfs與單源bfs的區別就在于隊列取出時一輪是取出隊列當中的全部元素 class Solution {public int orangesRotti…

【華為OD技術面試真題 - 技術面】- Java面試題(15)

華為OD面試真題精選 專欄:華為OD面試真題精選 目錄: 2024華為OD面試手撕代碼真題目錄以及八股文真題目錄 介紹下TCP/UDP TCP(傳輸控制協議)和 UDP(用戶數據報協議) TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是兩種常見的傳輸層協議,主要…

?在 Fedora 系統下備份遠程 Windows SQL Server 數據庫的完整方案

?一、環境準備與工具安裝? ?1. 安裝 Microsoft SQL Server 命令行工具? Fedora 需安裝 mssql-tools 和 ODBC 驅動: # 添加 Microsoft 倉庫 sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo# 安裝工具包 …

DeepSeek:巧用前沿AI技術,開啟智能未來新篇章

引言 近年來,人工智能(AI)技術迅猛發展,大模型成為全球科技競爭的核心賽道。在這場AI革命中,DeepSeek作為中國領先的大模型研發團隊,憑借其創新的技術架構、高效的訓練方法和廣泛的應用場景,迅…

R語言實現軌跡分析--traj和lcmm包體會

R語言實現軌跡分析–traj和lcmm包體會 軌跡分析是對重復測量數據的一種歸納,轉化為一種分類變量,比如手術后1~7天內的疼痛評分,可以形成術后急性痛軌跡。形成的軌跡作為一個分類變量,可以用于預測疾病的預后&#xff…

Vue 3 事件總線詳解:構建組件間高效通信的橋梁

Vue 3 事件總線詳解:構建組件間高效通信的橋梁 為什么需要事件總線?使用 mitt 實現事件總線1. 安裝 mitt2. 創建事件總線3. 在組件中使用事件總線發送端組件(例如 ComponentA.vue)接收端組件(例如 ComponentB.vue&…

MySQL的基礎語法1(增刪改查、DDL、DML、DQL和DCL)

目錄 一、基本介紹 二、SQL通用語法 三、SQL分類(DDL、DML、DQL、DCL) 1.DDL 1.1數據庫操作 1.2表操作 1.2.1表操作-查詢創建 1.2.2表操作-數據類型 1)數值類型 2)字符串類型 3)日期時間類型?編輯 4)表操作-案例 1.2.3…

【NLP】15. NLP推理方法詳解 --- 動態規劃:序列標注,語法解析,共同指代

動態規劃 (Dynamic Programming) 動態規劃(Dynamic Programming,簡稱 DP)是一種通過將問題分解為較小子問題來優化計算效率的技術。它特別適用于優化最優解問題,比如序列標注(sequence tagging)這類任務。…

JavaScript中的NaN、undefined和null 的區別

NaN代表"Not a Number",它是一種特殊的數值,用于表示非數字值。當一個操作無法返回有效的數值時,通常會得到NaN作為結果。 let result = 10 / abc; console.log(result); // 輸出 NaN需要注意的是,NaN與自身不相等,我們無法通過簡單的比較操作符(如==或===)來…

Turtle事件處理(鍵盤與鼠標交互)

Turtle 提供了 事件驅動編程,允許我們使用 鍵盤 和 鼠標 控制 Turtle,從而實現交互式繪圖。例如,我們可以讓 Turtle 響應 按鍵、鼠標點擊 和 拖動 事件,使其根據用戶的輸入進行移動、旋轉或繪制圖形。 1. 事件機制概述 Turtle 的事件處理主要依賴 turtle.Screen() 提供的 …

【Keepalived】Keepalived-2.3.3明確結束對CentOS 7的支持

2025年3月30日,官方發布了Keepalived的最新版,版本號:2.3.3 而2024年11月3日發布的2.3.2版本,在CentOS 7.9上編譯的時候,就出現了報錯,但是在Alma Linux 8.10上,則可以成功編譯安裝&#xff0c…

PyTorch --torch.cat張量拼接原理

在 PyTorch 的 torch.cat 函數中,out 參數用于指定輸出張量的存儲位置。是否使用 out 參數直接影響結果的存儲方式和張量的內存行為。以下是詳細解釋: 不使用 out 參數(默認行為) 含義:不提供 out 參數時,…

人工智能之數學基礎:矩陣對角化的本質

本文重點 前面的課程中,我們學習了矩陣的對角化,基于對角化可以將矩陣A轉變為對角矩陣D,但是你有沒有想過,為什么要進行矩陣對角化,矩陣對角化究竟做了一件什么事情呢? 矩陣對角化的本質 幾何解釋: 從幾何變換的角度看,矩陣對角化意味著我們找到了一組基,使得線性變…