题目
通过思路链进行知识编辑
论文地址:https://arxiv.org/abs/2412.17727
摘要
大型语言模型 (LLM) 在广泛的自然语言处理 (NLP) 任务中表现出卓越的能力。然而,由于频繁重新训练的成本很高,让这些模型与不断发展的世界知识保持同步仍然是一项重大挑战。为了应对这一挑战,出现了知识编辑技术,可以用新信息更新 LLM,而无需从头开始重建模型。其中,上下文编辑范式因其在整合新知识的同时保留模型原有能力的有效性而脱颖而出。尽管具有潜力,但现有的上下文知识编辑方法通常是针对特定任务的,主要侧重于使用结构化知识三元组的多跳 QA 任务。此外,它们依赖于少量提示进行任务分解,这使得它们不稳定,并且在跨不同任务的泛化方面效率较低。为了应对这些限制,我们提出了 EditCoT,这是一种新颖的知识编辑框架,可以灵活高效地跨各种任务更新 LLM,而无需重新训练。 EditCoT 的工作原理是针对给定的输入生成思路链 (CoT),然后使用基于更新的知识的 CoT 编辑器迭代地改进该 CoT 过程。我们在多种基准上对 EditCoT 进行了评估,涵盖多种语言和任务。结果表明,与现有方法相比,我们的方法实现了最先进的性能,同时提供了卓越的泛化、有效性和稳定性,标志着知识更新领域的重大进步1 。
ACM 参考格式:Changyue Wang、Weihang Su、Qingyao Ai 和 Yiqun Liu。2024. 通过思路编辑知识。在 WebConf 中。ACM,美国纽约,15 页。https://doi.org/000.000
简介
近年来,大型语言模型 (LLM) 在众多 NLP 任务中表现出色。然而,一旦 LLM 经过完全训练,它的参数知识就会变得固定和受限。重新训练整个模型以纳入新信息既昂贵又耗时。为了解决为应对这一挑战,知识编辑领域应运而生,它提供了在保留原始模型大部分参数的同时有效修改或添加知识的技术。现有的知识编辑方法大致可分为两类:参数和非参数 [37]。参数方法直接修改模型的权重以整合新知识。虽然这种方法可以实现精确的编辑,但现有研究表明,这种变化可能会对模型的原始性能产生负面影响,并干扰原本应该保持不变的先前学习的知识 [12]。相比之下,非参数方法(例如上下文编辑)越来越受欢迎,因为它们利用 LLM 的上下文学习能力而不修改原始模型权重,从而保留了模型的基础能力和现有知识 [45]。
大多数现有的上下文知识编辑框架都侧重于多跳问答 (MQA) 任务,这些任务依赖于知识三元组作为知识表示的基本单位。研究人员[6, 46]通过顺序链接多个三元组来构建多跳问题,以评估知识编辑方法的性能。例如,Mello [46] 和 PokeMQA [11] 指导 LLM 使用手工制作的示例分解任务,从而能够在解决子问题的同时更新知识。从另一个角度来看,RAE 框架 [23] 构建并编辑知识图谱,利用知识图谱的检索和修剪来获取上下文注入的知识。虽然这些方法在基于三元组的 MQA 任务上表现良好,但它们的设计过于专业化,限制了它们对其他任务和更复杂推理的适应性。例如,RAE 在处理 LeKUBE 法律数据集 [37] 中的任务时遇到困难,因为在特定领域的语料库上构建知识图谱是不切实际的。
对于 PokeMQA,当它检测到子问题涉及新知识时,它会直接使用更新后的知识作为子问题的答案。这种方法通常适用于涉及知识三元组的任务,因为此类任务中的知识编辑通常对应于单跳问题,而多跳问题是由这种单跳问题形成的。然而,在其他数据集(如 DUNE[1] 和 LeKUBE[37])中,与新知识相关的问题通常更为复杂,需要推理。在这些情况下,仅凭新知识无法回答子问题,导致 PokeMQA 的性能较差。此外,对任务分解的依赖使 Mello 和 PokeMQA 不稳定,并且在各种任务中效率较低,如图 4 所示。
为了解决现有上下文知识编辑方法的局限性,我们提出了 EditCoT,这是一个通过思路链 (CoT) 编辑 LLM 知识的知识更新框架。EditCoT 是一种非参数知识编辑方法,不会改变 LLM 的参数,这意味着它可以像其他上下文编辑方法一样保留主干 LLM 的原始容量。此外,与以前针对特定任务类型或严重依赖知识三元组的方法不同,EditCoT 采用迭代方法通过解决与更新知识的冲突来细化模型的推理过程。这种灵活性方法允许 EditCoT 动态调整其推理过程,而无需针对特定任务进行定制或预定义知识结构。具体而言,EditCoT 首先指示模型根据用户的输入及其直接答案生成初始 CoT。然后,CoT 编辑器迭代细化原始 CoT,从而整合新知识。通过提示 LLM 基于更新的 CoT 进行推理来生成最终答案。
我们在各种基准上对 EditCoT 进行了评估,包括传统知识三重多跳问答数据集 MQuAKE-CF3k[46]、范围广泛且形式自由的编辑任务数据集 DUNE[1] 和领域特定的中文法律知识更新数据集 LeKUBE[37]。这些数据集涵盖了不同的编辑格式,并测试了中英文两种语言的任务。实验结果表明,我们提出的方法达到了最先进的性能,并且具有更好的效率和鲁棒性。总之,本文的贡献如下:
- 我们提出了一个新颖的框架 EditCoT,用于编辑 LLM 的思路链,从而实现更有效且与任务无关的知识更新。
- 我们证明我们的方法在具有不同编辑格式和任务类型的各种知识编辑基准上都表现良好,与其他基线相比,具有明显更好的有效性、鲁棒性和通用性。
相关工作
知识编辑方法是指修改、更新或删除存储在 LLM 中的知识的技术。根据这些方法是否修改模型的参数,它们可以大致分为参数方法和非参数方法[37]。 参数策略直接更新模型的内部参数。一种值得注意的方法是 Meng 等人提出的 ROME[17],它将 LLM 中的前馈神经网络 (FFN) 层视为键值存储。通过对特定的 FFN 层执行低秩更新,ROME 能够精确修改模型内基于事实的关联。MEMIT[18] 通过在多个关键 FFN 层上应用权重更新来扩展这种方法,从而可以批量更新大量事实知识。相比之下,非参数方法主要利用上下文学习[2]进行知识编辑。IKE[45] 探索了通过上下文信息而不是更改模型参数来编辑知识的潜力。上下文编辑的优点是可以降低遗忘非目标知识的风险,特别适合黑盒模型。一些后续研究提出了这个想法。 Mello[46] 将任务分解为子任务,并使用提示引导模型将编辑后的知识与中间答案进行比较。PokeMQA[11]通过引入范围检测器和实体提取机制进一步改进了这项工作,使方法更加健壮。RAE[23]采用了不同的方法,为任务构建知识图谱,通过图谱修改进行知识编辑,并利用模型辅助修剪和细化搜索结果。
思路链推理在自然语言处理中获得了广泛关注,因为它能够通过提供逐步的推理过程来提高LLM在复杂任务上的性能。最近的工作突出了这一领域的关键进展。Wei等人[40]引入了思路链(CoT)提示,其中手动提供的推理链鼓励LLM生成连贯的多步骤解决方案。在此基础上,Kojima 等人 [14] 表明,添加“让我们一步一步思考”之类的短语可以实现零样本 CoT 推理,使模型无需人工注释即可处理复杂任务。Gao 等人 [10] 提出了程序辅助语言模型,将问题翻译成 Python 代码,以便更好地进行数学推理。同样,Chen 等人 [4] 引入了思维程序,它使用编程语言来注释推理并为结构化任务生成可执行输出。
除了增强推理能力外,最近的研究还探索了提高 CoT 推理的真实性和准确性。Wang 等人 [39] 提出了一种自洽解码方法,该方法对多条推理路径进行采样并选择一致性最高的路径,从而增强了 CoT 的可靠性。同样,Zhao 等人 [44] 引入了一个验证和编辑框架,从表面上看,它似乎与我们的方法类似,因为它还涉及编辑生成的 CoT。然而,有几个关键的区别:
- 它们的验证过程依赖于自洽性,这对于一般的 QA 任务很有效,但不太适用于知识编辑,因为模型通常对过时的信息表现出很高的信心,即使不正确也能保持很高的一致性。我们对 MQuAKE-CF-3k 进行了测试,只关注编辑的触发,忽略后续的编辑结果。使用自洽性,在知识编辑数据集上只有 37% 的情况触发了编辑,而我们的方法在 95% 的情况下触发了编辑。;
- 他们的编辑依赖于模型从上下文中学习的能力,而在小节 5.4.1 中,我们证明了我们提出的 CoT 编辑器在知识编辑任务中的表现明显优于这种自编辑方法;
- 他们的方法实际上类似于 Mello 等人 [46] 的分解任务策略,而我们的方法在每一轮编辑中都会修改整个 CoT,从而可以进行更全面的调整。
方法论
在本节中,我们将详细介绍 EditCoT 框架的方法论。我们首先概述我们提出的方法,然后逐步描述框架的工作流程。然后,我们将深入解释 CoT 编辑器训练过程,最后讨论实施细节和数据集构建。
图 1:EditCoT 框架通过迭代编辑思路链 (CoT) 来更新 LLM,以整合新知识,同时保留模型的推理能力。它生成初始 CoT,检测与更新事实的冲突,并修改 CoT 直到实现对齐。
方法概述,EditCoT 框架的主要目标是通过编辑思路链 (CoT) 来更新大型语言模型 (LLM),从而整合新的事实知识而不损害其固有的推理能力。传统的参数化知识编辑方法通常需要重新训练整个模型或进行微调,这可能会耗费大量资源,并可能导致先前获得的知识丢失。相比之下,EditCoT 引入了一种迭代编辑机制,通过仅关注 CoT 来有效地整合更新,确保模型保持准确性和逻辑一致性。该框架利用了两个组件:一个负责生成初始 CoT、检测冲突和生成最终答案的未编辑版本的 LLM,以及一个能够根据新知识编辑 CoT 的编辑器。以下小节将详细介绍 EditCoT 框架的每个步骤。
EditCoT 的工作流程 图 1 说明了 EditCoT 框架的整体工作流程,附录 A 中也以伪代码描述了该工作流程。EditCoT 的核心步骤如下:3.2.1 由原始 LLM 生成初始 CoT。在流程开始时,未编辑的 LLM 会响应查询生成初始思路链。该思路链代表了导致模型最终答案的推理步骤序列。我们更关心推理路径的完整性而不是答案的准确性,因此我们让模型先直接给出答案,然后根据问题和答案给出 CoT。
逐步检索并检测冲突。一旦生成初始的思路链 (CoT),我们将 CoT 的每个步骤视为查询,并从已编辑知识的内存中检索它。这种内存通常以两种方式组织:一种是将编辑前和编辑后的知识配对在一起(例如,MQuAKE [46]),另一种是仅提供编辑后知识(例如,DUNE [1])。对于前者,我们在知识库中搜索编辑前知识,然后根据对应关系匹配编辑后知识。对于后者,我们直接在编辑后知识中搜索。一旦找到更新的知识,我们就进入冲突检测阶段。
EditCoT 使用原始 LLM 作为知识冲突检测器。具体来说,给定问题、初始 CoT 和检索到的知识,该模型的任务是完成三类分类任务:冲突、支持或不相关。我们用模型输出的对应词的前缀的概率来表示判断结果。这一步对于识别原始推理是否与新的、更准确的或更新的知识有分歧至关重要。
编辑思路链。一旦检测到知识冲突,我们将问题、新知识和旧的思路链输入到思路链编辑器中。该编辑器根据输入生成新的思路链。然后,我们的迭代过程返回到步骤2,其中这个新的思路链被视为旧的思路链,用于检索和冲突检测。该过程持续到在思路链和记忆之间没有发现冲突,或者达到最大迭代次数。
获得最终答案。一旦思路链被完全编辑并且没有检测到进一步的冲突,最终的思路链将用于生成最终答案。原始 LLM 负责此步骤,确保模型的答案符合其现有的推理能力,同时也融入了新的事实知识。我们指示原始 LLM 在上下文中更多地关注新的 CoT,因为新的 CoT 经常与模型的内在知识相冲突。
CoT 编辑器训练我们设计了一种自动化方法来生成 CoT 编辑器所需的训练数据,其中不需要人工注释,除了使用一些人为提出的问题,从而使训练几乎无人监督。值得注意的是,我们的数据构建方法也不依赖于 GPT-4 等最先进的人工智能模型。此外,数据构建和训练过程不针对任何特定的数据集或任务进行定制。编辑器在训练过程中只是学习编辑 CoT 的能力。一旦经过训练,这个编辑器就可以应用于各种任务,而无需在接触新知识时重新训练。此外,CoT 编辑器是从原始 LLM 训练出来的,确保不会出现知识提炼问题。
任务制定。编辑器的输入包括:一个问题、一个 CoT 和新知识(与 CoT 相冲突)。目标是根据新知识生成一个新的 CoT。从数学上讲,编辑器可以形式化为:编辑器(
标签:CoT,模型,知识,Thought,编辑,through,Editing,推理,EditCoT From: https://blog.csdn.net/weixin_43961909/article/details/145062511