【大模型基础_毛玉仁】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⁻¹时,因果效应显著。

  • 末尾层Transformer在处理输入问题q的最后一个Token q⁻¹时,因果效应也很强,但这在意料之中。

  • 中间层Transformer在处理s⁻¹时的因果效应主要来自全连接前馈层。

  • 注意力层主要对末尾层Transformer处理q⁻¹产生贡献。

基于这些发现,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=N1j=1Nk(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)=N1j=1NlogPM(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^∗ Wprojk=v,从而将新知识插入到全连接前馈层中。

然而,在插入新知识的同时,需要尽量避免影响 W p r o j W_{proj} Wproj 中的原有信息。

过程可抽象为一个带约束的最小二乘问题,其形式如下:
确保最小影响: min ⁡ ∥ W ^ K − V ∥ 确保最小影响:\quad \min \| \hat{W} K - V \| 确保最小影响:minW^KV
满足 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^* 满足Wprojk=v关系:s.t.W^k=v
该问题可推导出闭式解为:
W ^ = W + Λ ( C − 1 k ∗ ) T \hat{W} = W + \Lambda (C^{-1} k^*)^T W^=W+Λ(C1k)T
其中:

  • Λ = v ∗ − W k ∗ ( C − 1 k ∗ ) T k ∗ \Lambda = \frac{v^* - W k^*}{(C^{-1} k^*)^T k^*} Λ=(C1k)TkvWk

  • W 为原始的权重矩阵

  • W ^ \hat{W} W^ 为更新后的权重矩阵

  • C = K K T C = K K^T C=KKT 是一个预先计算的常数,基于维基百科中的大量文本样本 k 的去中心化协方差矩阵进行估计

利用这一简代数方法,ROME 能直接插入代表知识元组的键值对 (k*, v*),实现对模型知识的精确编辑。

.


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


声明:资源可能存在第三方来源,若有侵权请联系删除!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.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,但是你有没有想过,为什么要进行矩阵对角化,矩阵对角化究竟做了一件什么事情呢? 矩阵对角化的本质 几何解释: 从几何变换的角度看,矩阵对角化意味着我们找到了一组基,使得线性变…