仅需在主流编辑方法中加入一行代码,便可暴涨 LLaMA3 在序列知识编辑任务上。
LLMs 常因错误/过时知识产生幻觉,而基于新知识微调耗时且易过拟合、引入额外的知识库或参数模块又会带来不断增加的存储空间压力。因此,基于 “Locate-then-Edit” 的知识编辑(如 ROME)被提出,用“少时间成本、零空间成本”来精准更新特定知识。
在此基础上,中科大 LDS Lab 提出 AlphaEdit, 仅需在主流编辑方法中加入一行代码,便可暴涨 LLaMA3 在序列知识编辑任务上的表现如下图。
▲ 图1:各类模型编辑方法在 LLaMA3(8B)上的表现。星号上标用于区别Counterfact数据集和 ZsRE 数据集。SST、RTE 和 CoLA 评估了编辑后模型的通用能力。
相关论文:
AlphaEdit: Null-Space Constrained Knowledge Editing for Language Models https://arxiv.org/abs/2410.02355 https://github.com/jianghoucheng/AlphaEdit
论文标题:
Neuron-Level Sequential Editing for Large Language Models
论文链接:
https://arxiv.org/pdf/2410.04045
代码链接:
https://github.com/jianghoucheng/NSE
1、背景介绍
基于 “Locate-then-Edit” 的知识编辑方法(如 ROME 和 MEMIT)允许在更新目标知识的同时保留其他知识。其首先通过因果追踪定位存储知识的参数 ,然后通过引入权重更新 来编辑这些参数。求解 的常见目标是同时最小化(1)新知识的输出误差 和(2)模型原本存储的其他知识的输出误差 。
尽管这种方法取得了成功,但它存在一个重要的局限:难以在更新误差 和保留误差 之间保持平衡。具体来说,为了优先确保更新的成功,需更侧重于最小化 (如赋予其较大的权重),这会导致编辑后的 LLM 过拟合于新知识,带来 LLM 内部隐表征的分布偏移。
图 2(b)中展示了这一偏移,其中编辑后的 LLaMA-3(8B)中的隐表征偏离了其编辑前的分布。多次编辑后,累积的偏移过拟合会导致 LLM 中原存储的知识和通用表达能力的破坏。
为了解决这一问题,当前诸多先驱的方法(如 RECT [1] 和 PRUNE [2])已经做了很多优秀的尝试,例如设计正则项来限制 Δ。但是,随着编辑次数的增加,这些方法也会显露疲态。
AlphaEdit 旨在从源头—即优化目标上解决这一问题。具体而言,其直接删除了保留误差 ,让模型专注于最小化 。作为对保留知识的补偿并防止过拟合,AlphaEdit 通过投影将权重更新约束在保留知识的零空间 [3] 中,如图 2(c)所示,以保证 LLM 在被问及保留知识时,其输出保持不变。
2、AlphaEdit
▲ 图3:AlphaEdit 是如何通过一行代码实现效果激增的
我们首先回顾模型编辑算法。假设每次编辑需要更新 条新知识,以 的形式表示。编辑后的 预计将关联 对新的 对,其中 和 分别编码新知识中的 和 。设 ,其中 和 分别表示 FFN 的中间层和输出层的维度。我们可以将这些键和值堆叠成矩阵如下:
其中, 和 的下标表示待更新知识的索引。基于此,编辑目标可以表示为:
其中 表示矩阵元素的平方和。
另外,设 和 分别表示通过堆叠保留知识的 和 形成的矩阵。现有方法通常将涉及 和 的误差包含在内,以保留这些知识,如下所示:
由于 和 在 LLMs 中编码了保留的知识,我们有 。在模型编辑的背景下,如果扰动 被投影到 的零空间(即 )中,将其添加到模型参数 中将导致:
这意味着投影后的 不会干扰所保留知识的键值关联(即 ),从而确保了保留知识的存储不受影响。因此,我们在将扰动 添加到模型参数 之前,计算 的零空间投影矩阵 ,并通过P将其投影到 的零空间中,以保护保留知识不受干扰。
这种保护使我们可以放心地从目标函数中移除 ——即专注于保护保留知识的项。对详细推导(如 的求解过程)感兴趣的读者请移步原文。此时,根据零空间的性质,我们有 。因此:
这表明投影矩阵P可以确保模型的编辑不会干扰到 LLMs 中所保留的知识。最后,令 和 分别表示之前更新知识的键和值矩阵,新的目标函数为:
基于此求解 并将其加载到 LLM 的参数 W 上即可完成更新。
为了更全面地评估了 AlphaEdit 的有效性,我们在 Counterfact 和 ZsRE 两个数据集以及多个大模型上与基线方法对比了编辑效果,并且为了验证模型损坏程度,我们测试了编辑后模型的通用能力。部分定性和定量的实验结果如下表所示。更多结果如消融实验结果烦请移步我们的文章或代码。
3、NSE
此外,该团队提出的 NSE 从另一个角度:权重更新方式的角度尝试对序列编辑的效果进行优化。具体而言, NSE 通过排序关键层中的神经元激活,选择性地收集“有影响力的神经元”来更新权重,而不是像以往的方法那样更新所有关键层的权重。这种选择性修改最大限度地保护了模型功能不被削弱。
另外,对于包含大量神经元的大规模 LLM,NSE 引入了多层迭代编辑,以简化神经元选择过程,使其能够在单次编辑中有效地完成大规模知识更新。NSE 从权重更新方式的角度,通过每次更新部分神经元来缓解持续知识编辑过程中的参数更新冲突和累计变化异常问题,其包括三个步骤:
(1)步骤1:基于权重回溯的值向量计算
(2)步骤2:神经元级别权重更新
(2)步骤3:迭代多层编辑
非常推荐对序列编辑感兴趣的读者去阅读 NSE 的原文:
https://arxiv.org/pdf/2410.04045。再次感谢大家的关注!
▲ 图5:NSE流程图。(a)权重回溯,(b)神经元粒度权重更新,(c)迭代编辑。
[1] Model editing harms general abilities of large language models: Regularization to the rescue. [2] Perturbation-restrained sequential model editing. [3] Training networks in null space of feature covariance for continual learning. CVPR 2021
数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。
新浪微博:@数据派THU
微信视频号:数据派THU
今日头条:数据派THU