微信扫码
与创始人交个朋友
我要投稿
一、引言
大模型知识编辑旨在通过内部更新或外部干预的方式缓解大模型知识谬误问题。如下图所示,通过符号知识或参数知识引导,大模型可以基于知识编辑技术通过更新或融合的方式实现对固有知识的编辑操作,实现从 (US, President, Donald Trump)到 (US, President, Joe Biden)的知识更新。
然而,先前的知识编辑方法主要集中在单任务设定,这意味着它们可能无法实现跨任务泛化,并且在针对原有数据分布之外(Out Of Distribution, OOD)的数据编辑时效率低下。
例如,如下图表所示,当使用“我该如何拧螺丝?”作为提示时,知识编辑可以专注于大模型中的特定区域进行调整,将答案从“使用锤子”更改为“使用扳手”,同时不损害模型的整体性能;但在遇到“我该如何钉钉子”的不同任务提示时较难泛化。从本质上讲,现有知识编辑方法仅保存当前编辑知识,其更新功能仅限于所提供的数据,限制了模型在其他领域的泛化能力。
本文尝试基于元学习编辑方法来提升知识编辑的任务泛化能力。元学习编辑方法是修改模型参数范畴内的一个分支,其利用超网络预测每个数据点的特定权重更新,从而实现编辑大模型。传统的元学习编辑方法通常专注于训练特定领域的超网络 (编辑器),针对新任务的知识编辑要求对编辑器重新训练,这将导致显著的计算成本。因此,设计一种策略让知识编辑方法在各任务间有效地泛化是十分重要的。
回顾以往的研究,为了增强模型的泛化能力,研究人员引入了指令学习,其通过提供更明确的指令增强大模型的任务泛化能力。具体来说,经过指令优化的模型不仅在分布内数据集上表现优秀,而且能有效地泛化到以前未见过的指令数据。受此启发,我们提出了一种基于指令的编辑方法,InstructEdit,它可以通过设计对应于不同任务的指令来学习一个通用的编辑器。
二、方法
数据集
首先,我们构建了一个包含多任务和指令的数据集。为了确保多任务编辑的多样性,我们选择了一系列的数据集:Recent用于知识插入,CounterFact用于反事实编辑,以及ConvSent用于知识更新中的情感编辑。Recent的关注点在于对2022年7月之后加入WikiData的三元组进行处理,目标是使模型采用最新的知识进行更新。CounterFact则关注的是浏览量最高的维基百科页面的三元组,以解决模型在编辑过程中忽略较不显著实体的问题。ConvSent是一个面向情感编辑的任务,目标是在不影响其他主题回应的情况下,调整模型在特定主题上的情感,例如围绕"你觉得香蕉怎么样?"这个关于香蕉的主题。
在训练时,我们保留了ConvSent的原始设定。此外,我们还设定了一个Hold out设定。从经验上看,我们发现将其他任务的编辑知识迁移到ZsRE是具有挑战性的。因此,我们使用零样本关系抽取数据集(ZsRE)来评估多任务编辑在任务层面的泛化能力,这意味着我们并未在多任务编辑训练集中包含ZsRE。同时,我们在ZsRE的原始数据集中添加了迁移性和新的局部性测试集合,以增强我们使用的版本。在评估指标方面,我们是沿用KnowEdit[1]的设定。
在指令生成部分,我们为多任务知识编辑设计了适用于上述四个任务(Recent、CounterFact、ConvSent和ZsRE)的指令模板。每个模板都包含有输入,任务相关的描述,以及相应的元数据。具体来说,我们为每个任务定制了相应的指令集,每条指令都包含、和。其中,表示与数据项相关的特定任务,则包含数据项本身。而对于,我们利用GPT-4和详细的任务信息,为每个任务生成了20个描述,并根据它们的清晰度和简洁性手动选择了10个候选项。然后,我们将、和连接起来,构成最终使用的指令。值得注意的是,我们将最后一条指令专门用于评估模型在指令上的泛化能力,而其他的指令均用于训练。此外,我们还通过将指令及其对应的编辑性能指标输入到GPT-4中,对指令进行进一步优化,以提高其质量,具体情况如下图所示。
InstructEdit
这一部分我们主要关注指令在指导编辑过程中的关键作用,并详细解释InstructEdit的工作原理。InstructEdit采用了MEND的编辑架构,利用一个元学习编辑器(超网络)来实现编辑。InstructEdit使用由参数化的编辑器更新模型的参数。它通过将(每个元素输入到层的输入)和梯度(计算公式为, 是编辑时的输入输出对)映射到和。然后,模型参数的知识编辑梯度表示如下:
此外,我们用梯度的范数来缩放梯度,以隔离其方向分量,表示为。直观地说,指出了编辑元素的关键知识区域,它通过关注梯度的方向而忽视其大小,使得跨任务比较更有意义。同时,我们将这个关注区域称为编辑区域。
我们的主要目标是让编辑器具有理解和应用编辑指令的能力,从而提高其编辑常规分布之外的任务的能力。此外,我们在输入之前添加指令,以便进行多任务编辑。InstructEdit旨在增强多任务编辑能力,寻求一种协同效应,使多任务结合的作用超过单任务的贡献。通过指令连接,InstructEdit旨在将任务向量聚类并减少任务间的冲突,从而确保多任务编辑器在单个任务上的性能达到,甚至超过单任务编辑器的性能。
三、实验
多任务编辑结果:下表表中展示了相应结果。FT-L和CaliNet保持了原始模型的完整性,因此拥有高局部性,但它们在其他指标上的表现却明显不足。修改模型参数的编辑方法,如KE和MEND,在性能上超过了以前的编辑方法。MEND和KE在所有指标上表现优异,实现了可靠性和局部性之间的平衡。这归因于它们的优化目标限制了更新范围,使编辑器能够在保持模型稳定性的同时调整参数。我们可以观察到,InstructEdit通过指令引导方法提高了编辑精度和控制能力,在分布内的数据集上达到了超过MEND和KE等方法的效果。
同时,我们也可以观察到,在分布外的数据集(即ZsRE),KE和MEND作为强基线方法的性能不尽人意,这种下降主要归因于编辑器在定义新编辑任务方面的局限性以及在处理OOD场景时泛化能力不足。而我们提出的InstructEdit可以有效地解决这些挑战。值得注意的是,强大的泛化能力主要来自于指令引导,这种协同作用使InstructEdit能够在训练阶段未见过的任务数据集上达到与直接在该任务数据集上训练相当的性能水平。
四、分析
为了更深入地了解基于指令编辑的泛化能力,我们对InstructEdit处理以前未学习过指令的能力进行评估。下图结果显示,InstructEdit可以通过使用在训练过程中使用的语义相近的指令来达到相当的效果,说明它具有一定的指令泛化能力。值得注意的是,使用编辑器已经训练的指令会有更好的编辑效果。这些实证结果也表明,可以设计一个按照人类自然语言指令执行的编辑器,我们将此留待未来的工作。
我们还使用t-SNE可视化分析了编辑区域,编辑区域的不同部分包含着编辑数据的核心特质。为了方便分析,我们重点探究传统编辑方法失效,而InstructEdit生效的地方。分析结论如下:
指令有助于控制优化方向。MEND在多任务环境下表现不佳,特别是在可靠性和泛化性上,相比之下InstructEdit表现更优。通过分析下图 (a)可以发现,引入指令后,InstructEdit能有效控制知识编辑梯度,鼓励不同任务分布在具有区分度的编辑区域。此外,InstructEdit能更好地处理新任务和保持单任务训练性能。
任务越多,OOD泛化性越强。如下图 (b), (c)所示,InstructEdit在单任务训练时,三个任务的编辑区域区分度较差,性能欠佳。扩大训练任务数后,InstructEdit对各任务编辑区域无重叠,编辑可靠性提高。随着任务范围扩大,不同任务的知识编辑梯度方向开始收敛。因此,跨领域训练的InstructEdit可以有效扩展到新的、未见过的领域。
适当的数据比例可提升性能。初步实验发现如下图 (d)所示,任务不平衡影响了多任务训练,导致性能显著下降。通过平衡不同任务的数据比例,我们发现知识编辑梯度方向变得更加规则,编辑可靠性得到提高。这证实了适当的数据比例在多任务编辑中的重要性。
五、总结
本文主要介绍大模型知识编辑的一个新问题:任务泛化。区别于传统的单任务编辑,我们引入了多任务编辑,揭示了现有知识编辑方法在编辑能力任务迁移性方面的限制,并提出了一种有效的解决方案,InstructEdit,它可以有效地引导编辑器进行更精确的编辑,其有效性通过全面的实验和可视化分析得到证实。我们也发现过多的任务可能会降低局部性,因此,我们的未来工作将集中在研究高效、可靠且可泛化的大模型新知识编辑方法,同时保持编辑后模型的稳定性。而且,编辑最后几层的参数并非总是最优的,因此,需要新的高效和精确的知识定位方法和全面完备的大模型知识机理框架。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-05-06
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19