A Comprehensive Study of Knowledge Editing for Large Language Models

news2024/11/18 9:33:09

大型语言模型(LLMs)在理解和生成与人类交流密切相关的文本方面表现出了非凡的能力。然而,一个主要的限制在于训练期间的大量计算需求,这是由于它们的广泛参数化而产生的。世界的动态性质进一步加剧了这一挑战,需要经常更新 LLMs 以纠正过时的信息或整合新知识,从而确保其持续的相关性。请注意,许多应用程序需要在训练后不断调整模型,以解决缺陷或不良行为。人们对高效、轻量级的动态模型修改方法越来越感兴趣。为此,近年来,知识编辑 LLMs 技术蓬勃发展,其目的是有效地修改 LLMs 特定域内的行为,同时保持各种输入的整体性能。在本文中,我们首先定义了知识编辑问题,然后对前沿方法进行了全面的回顾。从教育和认知研究理论[1–3]中汲取灵感,我们提出了一个统一的分类准则,将知识编辑方法分为三类:诉诸外部知识将知识合并到模型中编辑内在知识。此外,我们还引入了一个新的基准 KnowEdit,用于对具有代表性的知识编辑方法进行全面的实证评估。此外,我们还提供了对知识位置的深入分析,可以更深入地理解其中 LLMs 固有的知识结构。 最初被设想针对 LLMs 的一种有效引导的手段,我们希望从知识编辑研究中获得的见解可以揭示 LLMs 的底层知识机制。为了促进未来的研究,我们发布了一个开源框架 EasyEdit,它将使从业者能够高效、灵活地实施 LLMs。最后,我们讨论了知识编辑的几种潜在应用,概述了其广泛而有影响力的影响。

2.1. Introduction

知识是人类智慧和文明的基本组成部分。它的系统结构使我们能够通过象征性手段来表示有形实体或描绘原则,从而提供了促进复杂行为或任务表达的能力。在我们的一生中,我们人类不断积累丰富的知识,并学会在各种情况下适应性地应用它。对知识本质以及我们获取、保留和解释知识的过程的持久探索继续吸引着科学家们,这不仅仅是一种技术追求,而是反映人类认知、沟通和智力的微妙复杂性的旅程。

最近,像GPT-4这样的大型语言模型(LLMs)在自然语言处理(NLP)中展示了一种非凡的能力,可以保留大量的知识,可以说超过了人类的能力。这一成就可以归因于处理和压缩大量数据的 LLMs,有可能形成更简洁、连贯和可解释的底层生成过程模型,基本上创建了一种“世界模型”。例如,Dai等[39]提出了知识神经元(KN)理论,该理论提出语言模型的功能类似于键值记忆。在这里,核心区域的多层感知器(MLP)权重可能在从训练语料库中回忆事实方面发挥关键作用,这表明在训练语料库中 LLMs 存在一种更加结构化和可检索的知识存储形式。进一步的见解来自于理解和操纵复杂战略环境的能力 LLMs,而Li等[43]已经证明,在《奥赛罗》等棋盘游戏中,经过训练进行下一个 token 预测的 transformer,可以明确表示游戏的状态。Patel 和 Pavlick 揭示了在 LLMs 给定上下文中可以跟踪主体的布尔状态,并学习反映感知性、符号概念的表征。这种双重能力表明,LLMs 可以作为广泛的知识库,不仅可以存储大量信息,而且还可以反映人类认知过程的方式构建信息。

然而,由于训练的截止时间,它们LLMs存在一些局限性,如事实谬误、可能产生有害内容以及过时的知识。为纠正这些问题而进行的再培训既昂贵又耗时。为了解决这个问题,近年来,专门针对 LLMs的知识编辑技术的发展激增,这使得对模型进行具有成本效益的事后修改成为可能。该技术侧重于在不影响整体性能的情况下进行调整的特定领域,可以帮助理解如何LLMs表示和处理信息,这对于确保人工智能(AI)应用的公平性和安全性至关重要。

本文首先试图对 LLMs 知识编辑的发展和最新进展进行全面的研究。我们首先介绍了 Transformers 的架构、知识存储的机制LLMs(§2.1),以及相关技术,包括参数高效微调(PEFT)、知识增强、继续学习和机器学习(§2.2)。然后,我们初步的(§3.1),正式描述了知识编辑问题(§3.2),并提出了一种新的分类法(§3.3),以提供基于教育和认知研究理论的知识编辑方法的统一观点。具体来说,我们将知识编辑LLMs分为:求助于外部知识(§3.3.1)、将知识合并到模型(§3.3.2)和编辑内在知识(§3.3.3)方法。我们的分类标准总结如下:

  • 求助于外部知识。这种方法类似于人类认知过程中的识别阶段,需要在相关背景下接触到新知识,就像人们第一次遇到新信息一样。例如,提供说明事实更新的句子作为模型的演示,可以对知识进行初步识别以进行编辑。
  • 将知识合并到模型中。这种方法与人类认知过程中的关联短语非常相似,其中新知识与模型中的现有知识之间形成了某种联系。这种方法将输出或中间输出与新学习的知识表示进行结合或替换。
  • 编辑内在知识。这种知识编辑方法类似于人类认知过程中的掌握阶段。它涉及模型通过修改权重并可靠地利用它们将知识完全集成到其参数中。

然后,本文涉及在 12 个 NLP 数据集上进行的广泛而全面的实验。这些都是精心设计的,用于评估性能 (§4)、可用性和潜在机制,并完成深入分析 (§5) 等方面。我们研究的主要见解总结如下:

  • 性能。我们构建了一个新的基准,名为KnowEdit,并报告了前沿知识编辑方法的实证结果 LLMs,提供了公平的比较,并说明了它们在知识插入、修改和擦除设置中的整体性能。
  • 可用性。我们说明了知识编辑对一般任务和多任务知识编辑的影响,这意味着当代知识编辑方法在执行事实更新方面是有效的,同时对模型的认知能力和跨不同知识领域的适应性干扰最小。
  • 机制。我们观察到,在编辑 LLMs 的值层中的一列或多列上有一个明显的焦点。此外,我们发现知识定位的过程(例如,因果分析)往往只确定与相关实体相关的区域,而不是整个事实背景,这表明这可能是 LLMs 通过回忆从他们的预训练语料库中记住的信息或通过多步推理过程来得出答案。此外,我们还深入研究了知识编辑 LLMs 可能导致意想不到的后果的可能性,这是一个值得仔细考虑的方面。

最后,我们深入研究了知识编辑的多方面应用,从各种角度(§6)研究了其潜力,包括高效的机器学习、AI 生成内容 (AIGC)、可信 AI 和人机交互(个性化代理)。此外,我们的讨论还延伸到知识编辑技术的更广泛影响,特别关注能源消耗和可解释性等方面(§7)。本文旨在为进一步LLMs研究提供催化剂,强调效率和创新。为了支持和鼓励未来的研究,我们将使我们的工具、代码、数据拆分和经过训练的模型检查点可以公开访问。

2.2. Background

2.2.1. Large Language Models

2.2.1.1. Transformers for LLM

Transformer 是现代 LLMs 设计的基石,代表了与以前的序列学习方法相比重大转变。将 Transformer 作为编码器-解码器框架引入,其中编码器和解码器都由一系列相互堆叠的相同层组成。该架构中的每个模块都配备了一个自注意力模块和一个完全连接的前馈神经网络。独特的是,解码器中的模块还包含一个额外的交叉注意力层,位于自注意力层上方,旨在有效地捕获和集成来自编码器的信息。

自注意力模块 (SelfAttn) 自注意力机制是 Transformer 的一个关键功能,使其能够有效地处理数据序列。该模块使编码器中的每个位置都能关注前一层中的所有位置,从而有效地捕获嵌入在序列中的上下文信息。自注意力机制的数学表示如下:

前馈模块 (FFN) 在 Transformer 中的每个注意力层之后是一个完全连接的前馈神经网络 (FFN)。这个特定组件由两个线性变换组成,它们之间有一个 ReLU 激活函数。FFN的结构可以简明扼要地描述如下:

自出现以来,Transformer 模型已经彻底改变了 NLP 领域。其适应性强且高效的架构促进了各种 NLP 任务的进步,例如问答、文本摘要和机器翻译系统。该模型的影响超越了 NLP,影响了机器学习的其他领域,并为构建复杂有效的神经网络架构设定了新标准。

2.2.1.2. Mechanism of Knowledge Storage in LLMs

Transformer的卓越性能部分归因于其在其参数内存储大量信息的能力,包括语言[81]、常识[82-84]、算术和世界知识[48,85-87]。然而,这些知识在 LLMs 内部的组成方式在很大程度上仍然是个谜。目前的研究工作致力于解释 LLMs 的机制,特别是知识存储的复杂性,图 1 说明了其中的一些研究结果。

一个关键的研究领域是确定知识在模型中的具体位置。Jawahar 等剖析了 BERT 所理解的英语语言结构的复杂性。他们的研究结果表明,BERT 的短语表示主要在较低层捕获短语级信息,并在中间层编码复杂的语言元素层次结构。这种层次结构的特点是基础层的表面特征和中心层的句法特征,并在最上层的语义特征达到顶峰。Geva等人提出,Transformer 模型中的 FFN 层功能类似于 key-value 记忆。他们建议 FFN 的输入作为 query 运行,FFN 层的第一层表示 key,第二层对应于 value。他们发现,人类可解释的浅层输入模式会触发每个关键神经元,而相应的 value 神经元会存储下一个 token 的输出概率。因此,最后一层 FFN 的输出可以理解为激活值的加权和。此外,它们还表明,value 向量通常体现了可解释的概念和知识,这些概念和知识可以通过特定的操作得到强化或减弱。在此基础上,Dai等引入了“知识神经元”的概念,认为知识被定位在语言模型最上层的一小部分FFN神经元中。这些神经元是通过分析各种提示的整合梯度来识别的。同样,Meng et al. 采用一种称为“因果追踪”的方法来评估隐藏状态或激活的间接影响,揭示了事实知识主要存在于此类模型的早期层FFN中。此外,Chen等提出了一个有趣的发现,即语言模型包含表达多语言知识的语言独立神经元和通过应用集成梯度方法传达冗余信息的退化神经元。同时,Zhao et al.观察到似乎 LLMs 拥有专门的负责处理多种语言的语言区域。

Gueta等认为,对于微调的语言模型来说,知识是权重空间中的一个区域。他们发现,在相似的数据集上微调预训练模型后,生成的模型在权重空间上彼此接近。最近的兴趣还围绕着剖析单个神经元的不同 LLMs 功能。然而,需要注意的是,一些研究人员告诫不要过度解读这些发现,强调相关性不代表真正的机制。虽然 MLP 神经元可能表现出可以通过语言学视角解释的模式,但它们并不一定在传统意义上“存储”知识,无论是语言学的还是事实的。

因此,关于 LLMs 如何检索和利用这些存储的知识的问题仍然悬而未决,一些工作已经开始揭开这个谜团。Geva等分析了模型中的信息流,发现自注意力模型在计算过程中进行属性提取,其灵感来自电路理论。Foote等提出了 Neuron to Graph(N2G),这是一种创新工具,可以自动从训练神经元的数据集中提取神经元的行为,并将其转换为可解释的图。此外,Hernandez 等将 Transformers 中的关系知识概念化为线性仿射函数,将主体映射到对象。至于其他知识,Gurnee 和 Tegmark发现,可以学习多个尺度上的空间和时间的线性表示,LLMs 并识别出可靠编码空间和时间坐标的单个“空间神经元”和“时间神经元”。然而,必须承认,这些研究主要集中在个人知识事实的表示上。更广泛的挑战在于全面理解各种知识链如何在这些复杂的模型中错综复杂地组织和相互联系。

2.2.2. Related Techniques

参数高效微调(Parameter-efficient Fine-tuning) 微调所有参数的计算成本很高。为了实现高效的调整,已经提出了参数高效调谐(PET)[108,109]技术,以匹配完全的微调性能,同时仅更新最少的参数。PET 由三种不同的范式组成:基于加法基于规格基于重新参数化的方法。其它方法引入了额外的可训练神经模块或参数,这些模块或参数在原始模型或过程中不存在。一个典型的例子是 Adapter,正如Houlsby等人[110]所讨论的那样。另一方面,基于规范的方法涉及微调选定数量的参数,同时保持模型的大部分参数不变。这一类别中一个值得注意的方法是 LoRA

通过微调少量参数,PET 方法旨在最大限度地提高模型性能,同时减少所需的资源和调整时间。PET技术很有希望,因为知识编辑旨在有效地修改模型行为。但是,PET 通常用于提高任务性能,而不是专门编辑知识。现有的 PET 方法在知识编辑中的功效在很大程度上仍未得到探索。研究如何利用 PET 进行高效和精确的知识更新为未来的工作提供了一个有趣的方向。

对 LLMs 进行知识增强(Knowledge Augmentation for LLMs)LLMs 仍然有很多问题不知道答案,因此提出了许多知识增强方法来帮助模型处理这一任务。最流行的方法是检索增强方法(RAG)。借助与输入相关的检索到的知识或上下文,模型可以给出所需的输出。检索到的信息包括输入层、中间层和输出层。在输入阶段,检索到的文本将与原始输入文本连接起来。在一些工作中,检索到被集成到 transformer 的中间层[122–124]。在输出阶段,在输出阶段,对检索到的组件和 LLM 中的 token 分布进行插值。

知识增强方法是解决 LLMs 缺失或错误信息的好方法,但它仍然有一些缺点。作为一种临时解决方案,检索方法存在检索结果和关联性较差的问题。检索到的数据通常包含一些噪声,例如与问题无关但可能与不同问题相关的附加内容(即不一定是随机噪声)。在这些情况下,模型无法区分回答问题所需的知识,从而导致虚假推理和性能下降。同时,检索通常在更广泛的相关段落级别上运行,而没有对模型中修改的信息进行细粒度的控制。

持续学习(Continual learning,CL)也称为终身机器学习或增量学习,是指机器学习模型在保留先前学习的知识的同时,不断获取新技能和学习新任务的能力。这类似于人类在其一生中如何通过不断积累新信息和技能而不忘记旧信息和技能来学习。传统的机器学习模型很难解决这个问题,因为它们是在独立且相同分布的数据上训练的。当分布发生变化或遇到新任务时,由于灾难性的遗忘,它们在旧任务上的性能会显着下降。正在探索的一些关键技术包括 replay-based 方法,regularization-based 方法和 dynamic architecture 方法。持续学习的重点是让机器学习模型能够随着时间的推移学习新任务并适应新领域,而不会忘记早期的任务,这类似于知识编辑的目标。相比之下,知识编辑专门侧重于操作和更新由预训练语言模型学习的内部知识表示,而不考虑底层任务或领域。知识编辑的目标是动态地优化语言理解,而与最终应用程序无关,从而解决部署后预训练语言模型的“固定性”问题。这两个领域对于开发人工智能系统都很重要,这些系统可以在其一生中逐步获取和灵活应用知识。

此外,模型能够丢弃不良(错误)行为至关重要,这与机器学习的概念一致[142\u2012146]。Chen 和 Yang [147] 提出了一种高效的学习框架 EUL,该框架 EUL 可以通过在数据删除后无需重新训练整个模型即可高效更新LLMs,通过将选择性师生目标学习的轻量级学习层引入 Transformer 中。然而,知识编辑不仅仅是通过主动优化或擦除模型的学习知识库来取消学习。机器学习和知识编辑在提高不同领域和应用程序的LLMs可靠性、公平性和有效性方面发挥着重要作用。

反向机器学习(Machine Unlearning)模型必须能够丢弃不良(错误)行为,这与机器反学习的概念一致。Chen 和 Yang 提出了一个高效的反学习框架 EUL,通过在 Transformers 中引入以选择性师生目标学习的轻量级反学习层,可以有效地更新 LLM,而无需在数据删除后重新训练整个模型。然而,知识编辑超越了反学习,它通过主动改进或删除模型的学习知识库。机器反学习和知识编辑都在提高不同领域和应用的 LLM 的可靠性、公平性和有效性方面发挥着重要作用。

总而言之,利用预训练语言模型的传统方法涉及使用特定于目标的数据对它们进行微调。然而,在该领域LLMs,这种微调过程遇到了重大挑战。其中包括大量的参数、大量的时间和内存要求、过度拟合的风险以及灾难性遗忘等问题。为了应对这些挑战,正如我们上面所讨论的,已经开发了几种技术。其中,知识编辑成为一个值得注意的策略。正如我们在表 1 中所讨论的,知识编辑与这些技术相交,从一系列方法中汲取灵感,显示出有希望的结果。这种方法独特地针对嵌入 LLMs 中的知识,利用这些模型的固有知识机制。与对现有方法的简单改编不同,知识编辑需要对 LLMs 的运行原理有更深入的理解。这不仅仅是将已知技术应用于新模型;它是关于理解和操作 LLMs 的细微知识存储和处理能力。此外,知识编辑代表了一种更精确、更精细的模型操作形式,因为它涉及选择性地更改或增强模型知识库的特定方面,而不是广泛地重新训练或微调整个模型。这些特性使知识编辑成为一种可能更高效和有效的方式,用于更新和优化 LLMs 特定任务或应用程序。

2.3. Knowledge Editing for LLMs

2.3.1. Preliminary

对不同数据集的大量训练让 LLMs 具备丰富的事实和常识性信息,可以将大语言模型理解为虚拟知识库。正如许多研究所证明的那样,这一丰富的知识库已被有效地用于各种下游任务。此外,Wang 等已经证明了 LLMs 自主构建高质量知识图谱的潜力,无需人工监督。尽管很有前途,但 LLMs 目前作为新兴知识库的状态下,表现出一定的局限性。在实际应用中,这些缺陷通常表现为输出中的不准确或错误。一个理想的知识库不仅要存储大量的信息,还要允许进行有效和有针对性的更新,以纠正这些错误并提高其准确性。认识到这一差距,我们的论文引入了知识编辑的概念 LLMs。这种方法旨在实现对 LLMs 的快速和精确的修改,使它们能够生成更准确和相关的输出。通过实施知识编辑 LLMs,我们的目标是提高 LLMs 的实用性,使它们更接近成为普遍可靠和适应性强的知识库的理想。这一进步有望解决当前 LLMs 的缺点,并释放其作为动态和精准知识库的全部潜力。

2.3.2. Task Definition

知识编辑的最初目标是在不对整个模型进行微调的情况下,修改 LLM 中的特定知识 k,并提高其一致性和性能。这些知识可以与许多领域和类型相关联,例如事实[79],常识[152],情感[153]等。由于 LLMs 中知识的分布性和纠缠性,知识编辑具有挑战性。

假设原始模型为 θ,给定要更改的知识 k,通过知识编辑过程 F,我们将得到编辑后的模型 θ:

编辑后的模型 θ' 应该覆盖关于知识 k 的原有错误知识,并保持其他知识不变:

作为知识库,知识编辑必须满足三个基本设置:知识插入、知识修改和知识擦除。

知识插入。随着字段和实体的进展,吸收紧急信息变得势在必行。知识插入通过赋予超出其能力范围的新知识来实现这一点:


知识修改。知识修改是指对已经存储在 LLMs 中的知识进行更改:

知识修改可以分为两类:

  • 知识修正 - 旨在纠正 LLMs 的不准确之处,以确保提供准确的信息。作为庞大的知识宝库,LLMs 很容易存储过时或错误的信息。知识修正用于纠正这些谬误,确保模型始终生成准确、最新的信息。
  • 知识中断 - 修改 LLMs 以正确回答反事实或错误提示。这更具挑战性,因为与事实知识相比,反事实概念最初获得的分数较低,如Meng等人所表明的那样。这就需要更有针对性的修改工作。

知识擦除。知识擦除的目标是切除或抹去模型中预先存在的知识,主要是为了重置不同的事实、关系或属性。我们有公式:


实施知识擦除对于消除偏见和有害知识以及减少对机密或私人数据的回忆至关重要,从而培养负责任和值得信赖的人工智能。总之,知识插入、修改和擦除之间的相互作用构成了模型编辑技术的基本方面。当这些技术结合在一起时,它们能够LLMs根据需要进行转变、自我纠正和道德适应。

2.3.3. Methods

LLMs 的发展已经达到了一个地步,他们的能力与人类的认知过程非常相似,特别是在学习和获取知识方面。从人类的学习方式中汲取灵感,我们可以将这些概念类比地应用于编辑 LLMs 的过程,如图 2 所示。教育和认知研究将人类知识获取分为三个不同的阶段:识别阶段联想阶段掌握阶段。这些阶段为概念化 LLM 中的知识编辑方法提供了一个框架,我们在表 2 中列出了它们。

  • 识别阶段:在识别阶段,模型需要在相关上下文中接触到新知识,就像人们第一次遇到新信息一样(§3.3.1)。例如,提供说明事实更新的句子作为模型的演示,可以对知识进行初步识别以进行编辑。
  • 关联阶段:在关联阶段,新知识与模型中的现有知识之间形成联系(§3.3.2),就像人类将新想法与先前的概念联系起来一样。
  • 掌握阶段:掌握阶段涉及模型完全获取其参数中的知识并可靠地利用它 (§3.3.3),类似于深度人类掌握。这种方法直接改变了模型的权重 ∆W,模型可以在没有任何外部帮助或合并的情况下处理问题。
2.3.3.1. Recognition Phase: Resorting to External Knowledge

当人类遇到新信息时,我们并不总是立即掌握它。相反,有了正确的背景和例子,我们可以通过这些新知识进行处理和推理。LLMs 表现出类似的情境学习能力。这种方法通常维护一个内存 M,并为每个输入检索最相关的案例。IKE [156] 通过构建三种类型的演示(复制、更新和保留)来示例这种方法,以帮助模型产生可靠的事实编辑。它利用由训练集组成的演示存储来指导模型通过检索最相关的演示来生成适当的答案。同时,由于知识的简单变化会导致连锁反应,MeLLo 将问题分解为不同的子问题,以解决多跳问题,并从每个子问题的记忆中检索更新的事实。在此基础上,PokeMQA 提供了一种更强大的问题分解方法,引入了可编程范围检测器和知识提示以增强可靠性。

人类还经常利用工具来增强他们的学习和解决问题的能力。类似的,SERAC 通过保留新模型并采用分类器来确定是否使用反事实模型来回答问题,从而构建了一个新的反事实模型。这种方法简单明了,不需要对原始模型进行任何更改。鉴于其易于实施,它对于实际使用特别有利。然而,需要注意的是,这种方法可能容易受到检索错误(例如噪声、有害内容)和知识冲突问题等问题的影响。最近,Yu等研究了语言模型选择上下文答案或记忆答案的各种情况。 这项研究揭示了前面提到的该方法的潜在应用,因为它可能提供关于何时以及如何使用它的见解。

2.3.3.2. Association Phase: Merge the Knowledge into the Model

与识别阶段不同,这种方法学习新知识的表示,将此信息与原始模型的表示 h 合并。Murty 等提出了一个知识补丁作为新的输出头,并将新的头与原始的头进行插值。特别是,受到先前发现 FFN 可能存储知识的启发,几种方法将知识集成到 FFN 部分。这些方法将神经元添加到 FFN 中,编辑后,输出是前一个 FFN 的输出和新添加的知识的组合:


具体而言,T-Patcher [161] 为每个输出错误添加一个神经元,而 CaliNet 通过固定数量的神经元添加知识。同时,Wu 等采用 LoRA 进行知识编辑。LoRA 是一种参数高效的微调方法,它冻结了 Transformer 的权重,LLM并在微调过程中将可训练的秩分解矩阵引入 Transformer 层。基于此,MELO 提出了一种插件模型编辑方法,该方法使用动态 LoRA 来改变语言模型的工作方式,通过基于内部向量数据库动态索引 LoRA 块。REMEDI 不是向模型添加参数,而是通过将属性向量 h 合并到其原始模型的表示中来直接替换实体 h 的表示。具体来说,它使用仿射变换学习更新的隐藏状态,并用它替换 LM 的实体表示。相比之下,GRACE 采用了一种独特的方法,即维护一个用作适配器的离散码本。该代码本会随着时间的推移动态更新,从而允许修改和完善模型的预测。当模型遇到要编辑的知识时,它会搜索码本并将隐藏的状态替换为码本中的值。总的来说,我们可以使用数学公式来统一表示这些方法:


这种方法将信息与原始模型合并,使得来自不同来源的知识的权重成为需要考虑的关键参数。鉴于这些信息来源往往不同,甚至可能发生冲突,正如 Wang 等所强调的,知识冲突问题仍然是一个重大挑战。为了解决这个问题,F-Learning 引入了一种“先遗忘后学习”的范式,以实现基于参数算术的遗忘旧知识和学习新知识。此外,确定模型中这些信息的最佳积分点是该方法的一个关键方面。这不仅涉及合并信息,还涉及在模型结构中进行这种集成以实现最大有效性和最小干扰。此外,模型参数存储这些综合信息的能力仍然是一个需要探索的领域。如果每个编辑的知识都需要额外的参数,那么模型的参数可能会随着每次编辑而显着增加。这引发了对可扩展性和效率的担忧,因为不断扩大参数数量可能会导致计算需求增加等问题。

2.3.3.3. Mastery Phase: Editing Intrinsic Knowledge

尽管前两种方法取得了成功,但我们仍然面临着模型如何存储知识以及它们如何利用和表达知识的问题。在这里,我们来到了知识编辑中最重要的部分:掌握阶段。在这部分,要求模型学习自身参数的知识,并自行掌握知识。对模型进行微调是更新知识的直接方式;然而,训练整个模型需要大量的计算资源,而且非常耗时。同时,微调技术通常遭受灾难性的遗忘和过度拟合。Constrained Fintune 利用正则化来帮助模型保留不相关的知识。目前,许多研究人员都在努力使用特定于知识的方法来修改 ∆W 。这些方法可以分为两类:meta-learninglocate-and-edit
Meta Learning 为了克服这些缺点,提出了一些元学习方法来编辑模型。这种方法不是直接更新权重,而是教超网络学习模型的变化 ∆W。KE 直接使用新知识的表示来训练模型以更新矩阵。SLAG 引入了一个新的训练目标,考虑了顺序、局部和泛化模型更新。这些方法中的 ∆W 与模型矩阵的维度相同。为了克服它,MEND 应用 rank-one 分解将模型分为两个 rank-one 矩阵,从中可以计算出 ∆W,从而大大减少了参数的数量。虽然这些方法已经显示出一些有希望的结果,但它们在多次编辑中失败了,因为它们忽略了这些编辑之间的冲突。Han 等提出了一种新的框架,用于与并行编辑进行分而治之的编辑。具体来说,他们设计了显式多编辑器 MoEditor 和隐式多编辑器ProEditor,分别在动态结构和动态参数方面学习多样化的编辑策略,从而可以高效、端到端的方式解决冲突数据。此外,MALMEN 通过将参数移位聚合表述为最小二乘问题来改进 MEND 并同时支持大规模编辑。

Location-then-Edit 尽管以前的工作取得了成效,但 LLMs 如何存储这些知识仍然是未知数。一些工作已经探索了 LLMs 的知识处理机制,发现知识存储在 FFN 中。基于这些工作,首先找到知识的存储位置,然后编辑特定区域来进行知识编辑。Knowledge Neuron 通过计算梯度变化的敏感性,提出了一种知识归因方法。然后,他们直接使用目标知识的嵌入来修改相应的值槽。ROME [79] 和 MEMIT [171] 采用因果分析方法来检测隐藏状态的哪一部分更重要。他们将编辑视为最小优化,并编辑权重。尽管编辑 FFN 区域是有效的,但 PMET [172]也通过注意力头进行编辑,并表现出更好的性能。BIRD [174]提出了双向反关系建模。他们设计了一套编辑目标,将主体和客体之间的双向关系纳入更新的模型权重中,并展示了缓解知识学习的反向诅咒的有效性。

这种直接编辑模型参数的方法为改变其行为提供了更持久的解决方案。这些更改嵌入到模型的结构中,因此即使用户可以访问模型的权重,也无法规避它们。这确保了持久和可靠的修改。然而,由于 LLMs 的机制尚不清楚,因此副作用尚未得到控制。一些研究人员对这种方法持怀疑态度[183],因此它仍然是一个需要进一步研究的新兴研究领域。

2.3.4. New Benchmark: KnowEdit

为了评估知识编辑方法的有效性,已经提出了几个数据集。在本节中,我们概述了当前用于知识编辑的数据集,并引入了一个新的基准 KnowEdit,它作为各种知识编辑技术的综合评估框架。

在这项研究中,我们策划了一组六个数据集,这些数据集非常适合评估知识编辑方法。表 3 显示了这些数据集的详细统计概述,它们包含一系列编辑类型,包括事实操纵、情感修改和幻觉生成。

针对知识插入的任务,我们采用了数据集 WikiDatarecent [157]:

WikiDatarecent 此数据集特别关注 2022 年 7 月之后最近插入 WIKIDATA 的三元组。因此,该数据集使我们能够为在引入这些事实之前训练过的模型创建插入编辑请求,从而模拟过时的模型与新世界知识相遇的场景。我们利用作者提供的原始数据集,并将它们分为训练集和测试集。

知识修改方面,我们选择了以下四个数据集:ZsRE [184]、WikiBio [163]、Wikidatarecent [157]和Convsent [153]。

ZsRE 是一个与上下文无关的问答任务。给定一个基于主题和关系的问题,模型应该提供正确的对象作为答案。我们采用了 Yao 等[69]提出的 ZsRE 扩展版本,该版本引入了对原始数据集的可移植性检验。此外,我们按照 Yao等人[69]概述的程序收集新的局部性集,因为原始数据集使用 Natural Question 注释计算局部性。

WikiBio 原始数据集是通过提示 GPT-3 使用 WikiBio 数据集中的主题生成 238 篇维基百科风格的传记而创建的 [185]。Hartvigsen 等[163]利用该数据集,引入了一项新的编辑任务,重点是纠正 GPT 语言模型中的幻觉。他们注释每个句子的事实准确性,识别出包含幻觉的句子。我们遵循他们的方法,编辑不准确的句子,并用真实维基百科条目中的相应句子替换它们。我们遵循该数据集的原始设置,通过维基数据 API 链接概念来构建局部性集,遍历概念的所有关系,并随机选择一个不相关的关系和尾部实体。

WikiDatacounterf 由于尾部实体通常不会被模型捕获,因此不适合测试修改编辑[186],[157]收集有关流行实体的三元组,其中主题对应于维基百科中浏览量最大的页面之一。他们还通过从维基数据中随机抽样实体来收集数据集,我们将其用作训练集,充当测试集。

ConvSent 是一项情感编辑任务,用于评估模型修改对话代理对特定主题的情感的能力,而不会影响其对其他主题的响应。例如,给定主题“您如何看待香蕉?”,我们希望编辑后的模型能够给出关于“香蕉”的正面和负面情绪。locality 集由用于编辑的实体以外的实体生成的示例组成。我们还采用了 ConvSent 数据集的原始设置。

知识擦除设置的背景下,我们选择了 Sanitation [187]数据集。

Sanitation 此数据集专门解决与学习语言模型相关的隐私问题。它侧重于忘记存储在模型中的特定信息的任务。该数据集提供成对的问题和答案,其中答案包含需要忘记的知识(例如,“橡树街 1234 号”),问题提示模型生成相应的答案(例如,“约翰·史密斯的地址是什么?目标是让编辑后的模型有效地忘记目标答案,并生成预定义的安全令牌序列,例如“我不知道”,以响应寻求特定或敏感信息的提示。此机制有助于防止信息泄露。该数据集由一个遗忘集和一个保留集组成。我们利用遗忘集来评估模型编辑过程的成功与否,并使用保留集来评估修改的局部性。此外,我们通过对与训练集相同数量的数据实例进行采样来保持原始任务设置。

除了我们选择的数据集外,文献还提供了各种各样的知识编辑任务,每个任务都解决了该领域的特定方面和挑战。DepEdit [188] 是一个更强大的分析数据集,它深入研究了知识的内部逻辑约束,从而提供了对知识结构的更深入的理解。值得注意的是,Xu等[189]引入了跨语言模型编辑任务,并进一步提出了语言各向异性编辑,通过放大每种语言的不同参数子集来改善跨语言编辑。在多语种模型的情况下,多语种模型中一种语言的变化应导致相应的变化。在其他语言的多语言模型的情况下。Eval-KLLM [164] 和 Bi-ZsRE [190] 被设计用于评估模型的跨语言编辑能力。Wang等[191]提出了检索增强多语言知识编辑器(Retrieval-augmented Multilingual Knowledge Editor,ReMaKE),该编辑器能够在多语言环境中进行与模型无关的知识编辑。作者还提供了一个包含 12 种语言的多语言知识编辑数据集 (MzsRE)。另一个数据集 ENTITY INFERENCES 侧重于实体传播,其中为模型提供定义,并要求根据给定的定义进行推理。TEMPLAMA [156] and ATOKE 探讨了时间序列知识编辑,其目标是在不影响其他时间知识的情况下修改与特定时间段相关的知识。在常识性知识编辑方面,Gupta等[152]引入了 MEMIT,应用现有的编辑技术来修改模型内的常识性知识。此外,提出 RaKE [194]来衡量当前的编辑方法如何编辑关系知识。所有以前的工作通常将编辑限制为知识三元组。Aky ̈urek等[195]提出了一种新的数据集 DUNE,该数据集扩大了编辑问题的范围,包括一系列编辑情况,例如去偏见和纠正推理错误,并将编辑定义为任何自然语言。

需要注意的是,其中一些数据集可能刚刚发布或当前不可用。因此,在本文中,我们重点评估了知识编辑技术在一些流行作品中的性能和有效性。我们计划在未来获取新的数据集时扩展我们的基准。有关其他相关数据集,请参考Wang等[70]。

2.3.5. Evaluation for Knowledge Editing

知识编辑旨在根据修改后的事实改变模型行为。然而,知识是相互联系的;改变一个事实可能会向外产生涟漪,并以复杂的方式影响其他事实。这种相互依存关系使得评估编辑的效果变得困难。我们将先前工作的关键评估标准归纳为四类:edit success、portability、locality 和 fluency。

Edit Success 编辑的目的是更改模型对给定知识的输出。以前的工作采用了两个指标,分别是可靠性和泛化。可靠性旨在测试编辑后的模型是否给出目标答案。但是,对于知识编辑,给定的文本和释义。我们遵循以前的工作[170,172],并将可靠性和泛化统称为编辑成功。因此,在这里,编辑成功意味着编辑后模型不仅应该正确回答问题本身,而且还应该为具有相似表达式的输入给出正确的答案。

Portability 知识不是孤立的,仅仅改变给定的知识不足以用于下游使用。当知识被修正时,模型应该对修正的下游影响进行推理。在这里,我们遵循之前的工作[157,69,155],以评估编辑后的模型是否可以解决编辑对实际应用程序的影响,并将其命名为可移植性,以评估知识编辑后会发生什么。可移植性包含三个不同的部分:

  • 别名:一个主题的编辑不应与其表达方式不同。维基数据为每个实体维护一组别名。因此,在这里,我们遵循Cohen等[157],Yao等[69]用别名或同义词替换问题的主题,以评估编辑后模型对主题其他描述的表现。
  • 组合性和推理:这要求后期编辑模型对更改的事实进行推理。例如,当我们把美国现任总统从唐纳德·特朗普改为乔·拜登时,“谁是美国第一夫人”这个问题的答案也应该改变。
  • 逻辑泛化:这些是与修改后的事实在语义上相关的更改,并且预期编辑会更改;它们确实被修改过。例如,正如Yao等[69]所提到的,当 (s, r, o) 的事实发生变化时,知识 (o, ˆr, s) 的反向关系也应该改变。

Locality 在编辑知识时,我们可能会无意中更改了我们不想修改的知识。一个好的编辑应该在不影响不相关的知识的情况下修改知识局部性。局部性评价包括两个层次:

  • In-Distribution:这个包括来自同一分布的知识。如之前的工作所示,过度编辑是一种常见的现象。在这里,我们遵循Meng等[79]、Cohen等[157]、Yao等[69],并构建了相关的分布内知识,包括健忘和关系特异性。遗忘评估后期编辑模型是否以一对多关系保留原始对象。关系特异性原则认为,主题的任何其他属性,如果之前已经更新过,在编辑过程之后应该保持不变。
  • Out-of-Distribution:不应影响与目标知识无关的其他知识。也就是说,我们也不希望编辑后的模型失去处理其他任务的一般能力。

Generative Capacity 前人的工作发现,在编辑模型后,一些模型往往会生成重复的事物,并且经常在遇到主题词时生成编辑过的目标。此外,还采用流畅性来评估后编辑模型的生成能力。在这里,我们遵循 ROME [79] 并利用流畅性来衡量模型在编辑后的生成能力。特别是,我们计算了双元组和三元组熵的加权平均值,以评估文本生成的多样性。此值的减小表明生成的文本的重复性增加。

2.4. Experiments

在我们的研究中,我们使用当前的方法和数据集进行实验,以研究 LLMs 背景下的知识编辑技术。通过使用这些方法进行实验并利用适当的数据集,我们旨在评估知识编辑技术的性能LLMs和功效。我们的目标是深入了解与在这些模型中编辑知识相关的挑战、限制和潜在改进。

2.4.1. Experiment Settings

我们选择 LLaMA-2 [196]作为我们的基础模型,特别是它的 chat 版本,经过 RLHF 后,它表现出更高的一致性。该模型使用贪婪的自回归解码为每个问题生成答案。为了建立比较的基线,我们采用了八种模型编辑方法,这些方法在先前的研究中显示出有效性。这些方法的选择是基于它们修改 LLMs 内部知识的能力[69]。作为进一步的基线策略,我们还使用了 Meng 等[79]提出的微调方法(FT-L)。FT-L 直接微调单层的前馈网络 (FFN),特别是 ROME 中因果追踪结果所确定的 FFN 层。该方法使用最后一个 token 的预测来最大化目标序列中所有 token 出现的概率,导致偏离了微调目标。为了解决这个问题,我们还试验了一种改进的微调方法,即 FT-M。它使用目标答案上的交叉熵损失来训练与 FT-L 相同的 FFN 层,同时屏蔽原始文本。这种方法更符合传统的微调目标。对于上下文学习方法,我们使用了 Cohen 等[157]提出的 ICE 方法。此方法在进行输入之前预置提示“Imagine that {knowledge}”

所有实验均由 EasyEdit [197]进行。关于编辑后模型的评估,之前的一些工作计算了编辑前和编辑后模型输出的概率差:P [y*|θ'] − P [y|θ]。y* 是编辑目标,y 是原始模型的预测。然而,y* 的较高概率并不意味着结果很理想。在实际使用场景中,当我们编辑模型时,我们希望它产生正确的输出。因此,为了评估 WikiDatarecent、ZsRE 和 WikiDataacounter fact 等事实数据集。假设 x 是更新知识的表达式,k 和 y*k 是要编辑的相应目标输出。


此外,为了 portability,我们计算了编辑后模型在给定集上的性能。关于 locality, 的计算,一些工作计算了后编辑模型在局部性集 O(xk) 上的性能。在这里,为了更好地进行比较,我们测试模型是否保持其原始答案。


同时,对于情感编辑任务 Convsent,我们计算 Edit Succ 和 Locality 作为原始数据集 [153]:


如果编辑的模型生成正确的情感响应,则 zsentiment 为 1,如果编辑的模型的答案与目标主题相关,则ztopic 为 1。Convsent 的局部性计算为 KL 散度,因此数字越小,性能越好:


对于知识擦除任务 Sanitation,我们将编辑成功率计算为模型是否对给定的知识回答“我不知道”。至于局部性,我们计算保留集的性能,以确定模型是否保持其原始答案。

2.4.2. Main Results

我们在表4中列出了 Llama2-7b-chat 在当前知识编辑方法下的结果。

考虑到各种知识编辑任务的整体性能,我们新提出的 FT-M 实现优于其他方法,突出了在特定参数上微调模型的有效性。然而,目前所有的知识编辑方法都存在可移植性性能低下的问题,这表明该领域需要进一步改进。

在知识编辑方法方面,SERAC 在涉及知识插入和修改的任务中表现出了强大的性能。它的编辑成功率优于其他编辑方法,并且由于新的反事实模型可以有效地学习编辑后的知识,因此可移植性相对较好。同时,在不改变原始模型参数的情况下,除 ZsRE 外,SERAC 获得了良好的局部性性能。但是,由于反事实模型通常小于原始模型,其生成能力并没有那么强,在这里,我们可以发现 SERAC 对 WikiDatacounterf act、ZsRE 和 Convsentis的流畅度低于 MEND 等其他编辑方法。同时,对于 ICE 来说,我们可以发现编辑成功率并不那么好,这可能归因于知识冲突问题。同时,IKE 建议将演示串联起来作为提示,但它们需要较长的输入长度,并且限制了模型执行下游任务。

对于编辑模型参数的方法,我们可以发现 MEND 在不同指标的这些任务中获得了良好的性能。它的编辑成功率和便携性都很好,并展示了良好的本地化和流畅性。而对于 ROMEMEMIT 来说,尽管编辑成功率更高,但它们的局部性不如 MEND 和其他类型的编辑方法。同时,它的便携性也不尽如人意。对于局部微调方法 FT-L,其编辑成功率不如 ROME 或 MEMIT,但局部性和可移植性更好。此外,FT-M 似乎可以更好地处理插入任务,因为它对 WikiDatarecent 的编辑成功和可移植性优于 ZsRE 和 WikiDatacounterf act。对于 WikiBio 的任务,目前的方法可以适当地缓解幻觉并保持良好的流畅性。对于任务 Convesnt,我们发现当前的方法不能很好地改变模型的情绪,因为编辑成功率低于 65%。SERAC 可以完美地处理小型 LMs[153],但在7B模型上表现不佳。考虑到 MEND 在其他任务中的事实级编辑表现出色,因此这些任务的流畅度也较低。至于以知识擦除为目标的知识擦除任务 Sanitatio,我们可以发现,目前的知识编辑方法并不能很好地处理这个任务。我们可以发现 ROME 可以避免模型不提供目标知识,因为它获得了 90% 的准确率。然而,它会破坏模型在不相关知识上的表现,因为它的局部性仅为 55.61%。 其他编辑方法也无法擦除与给定知识相关的模型。

我们还展示了 WikiDatarecent 和 WikiDatacounterf 上的结果在可移植性和局部性子指标中的平均表现,正如我们在图 3 的上一个评估部分所讨论的那样。在这里,我们可以发现 MEND 在推理集下表现更好,而 AdaLoRA表现出良好的逻辑泛化性能。

2.4.3. Impact of Knowledge Editing on General Tasks

在本节中,我们将探讨应用知识编辑方法对语言模型在各个领域的性能的影响。我们的主要目标是确定合并与特定事实知识相关的编辑是否会无意中阻碍模型在不相关领域的熟练程度。我们选择了一系列基准,涵盖常识推理、一般智力和世界知识等领域。这些基准测试包括 CommonsenseQA [198]、PIQA [199]、Xsum [200] 和 TriviaQA [201],以及 MMLU [202] 和 AGIEval [203] 套件中的特定任务,这些套件以其卓越的评估标准套件而闻名。所有评估均使用 OpenCompass 工具[204]进行,确保了标准化的测试环境。我们在这里为 Xsum 报告 ROUGE-1。编辑后的模型在通过五次事实更新进行顺序修改后,在这些任务上以零样本设置进行评估。从表 5 中可以看出一个有趣的现象,即在整体层面上,编辑过的模型维持了接近未编辑模型的性能水平。这表明,编辑的负面影响仅限于直接改变的主题。然而,这一趋势的一个例外是 FT-L 模型在 TriviaQA 上的表现,该模型在编辑后从最初的 45.39 分明显下降到 34.60。然而,从更广泛的角度来看,我们可以观察到值得称赞的一致性。这意味着目前的知识编辑方法在执行五次有针对性的事实更新方面是有效的,同时对模型的认知能力和跨不同知识领域的适应性的影响最小。

2.4.4. Multi-Task Knowledge Editing

以前的工作被认为是顺序编辑[163,161,69],用于终身知识编辑。但是,他们始终对来自同一分布的单个数据集进行顺序编辑。这与持续学习略有不同。知识编辑不是一项专注于单一领域知识或事实的任务。实际上,我们可能希望从不同分布的不同角度修改我们的模型[205]。

跨域编辑(Cross-domain Editing) MEND 和 SERAC 方法都依赖于训练数据集来帮助模型学习如何编辑参数。我们评估了它们在跨领域环境中的表现,并将结果显示在表 6 中。

对于 MEND 方法,使用 ZsRE 数据集训练的超网络比使用最新数据集训练的超网络表现出更好的跨域性能。这可以归因于 ZsRE 数据集的巨大规模,使 MEND 的超网络能够增强其参数编辑能力。同时,SERAC 方法通过利用其缓存,展示了显着的跨域编辑能力。

持续编辑(Continual Editing)像 LoRA 和 ROME 这样的持续编辑方法不需要训练集,可以直接应用于不同的领域。因此,我们考虑使用更具挑战性的设置进行持续编辑。我们使用 ZsRE、Wikirecent 和 Wikicounterf fact 组成混合知识编辑案例。我们合并了不同数量的设置,包括 10、100、500 和 1000,并随机编辑不同集合的知识。在这里,我们主要考虑三种方法:FT-LROME AdaLoRA。我们在图 4 中报告了实证研究结果。在处理顺序编辑时,我们可以观察到这三种方法都经历了 1,000 次编辑,所有评估指标都急剧下降,并且对于三个不同的任务,趋势相似。相对而言,AdaLoRA 在大约 100 次编辑中表现出稳定的性能。当前的编辑方法倾向于编辑同一区域的不同知识(例如 ROME 是第五层,MEND是最后三层),而知识并未存储在该区域。同时,随着模型的改变,基于原始预训练模型的算法已经不适用。为了应对这些挑战,RASE [206]提出了一种新方法,该方法结合了检索增强和编辑方法的优点,而不是不断修改模型的参数。这种创新技术涉及在内存系统中存储权重变化或与每次编辑相关的其他神经元。该方法通过将复杂的连续修改分解为单独的编辑,并检索相应的编辑操作,简化了流程,并实现了与其他知识编辑方法的无缝集成,从而增强了其通用性和实用性。

2.4.5. Error and Case Analysis

如结果所示,不同的方法在不同的任务上表现出不同的性能。在这里,我们进行了一项研究,以全面了解它们的局限性和优势。在分析知识编辑方法的失败模式时,我们将缺陷分为四种主要类型:

  • 无意义的 token 生成:编辑后的模型会产生无意义的 token,例如“\n”或缺乏语义意义或基础的重复字母组合。
  • 没有生成完整的 token:模型仅生成目标答案的子集,省略了关键令牌。
  • 与知识无关的生成:该模型生成与预期的事实知识无关的文本。
  • 部分 token 替换:生成的答案包含来自目标的密钥 token 的替换或替换,通常会保留原始错误输出的片段。

这些错误类型的出现有助于确定编辑方法的局限性。无意义和缺失的 token 情况凸显了对目标事实进行完全编码的困难,而知识无关和部分替换生成表明,编辑无法取代先前学习的信息。我们对 ZsRE 任务进行了错误分析,并统计了每种编辑方法的错误情况。结果如图 5 所示。

在这里,我们可以找到主要的错误类型是部分 token 替换,这是由于原始模型中的知识与我们的目标模型之间存在冲突。分析表明,主要错误类型为部分 token 替换,表明原始模型中的知识与目标知识之间存在冲突。具体来说,由于所使用的小模型的生成能力有限,SERAC 方法往往会生成无意义的 token。AdaLoRA 方法可能会遗漏一些与目标知识相关的 token。对于微调方法,与其他编辑方法相比,与事实无关的词的百分比更高,并且是 FT-L 最常见的错误类型(47.3%)。这表明,微调的目标可能不适合编辑特定知识。此外,在下一节中,我们发现 FT-L 倾向于修改参数中的更多区域,从而导致更多不相关的生成。

我们还在表 7 中显示了针对不同案例的编辑方法生成的文本。在这里,我们可以发现,目前的编辑方法,如IKEMENDROME等,可以成功地将阿米娜女王雕像的材质从青铜修改为石灰石,并生成流畅的文本。SERAC FT-L, 尽管成功地改变了事实,但往往会产生重复的句子或毫无意义的实体。此外,AdaLoRA 未能改变这一事实,并保留了原始答案“青铜”。

2.5. Analysis

目前的研究已经探索了 LLMs 知识编辑方法的有效性,但其卓越性能的根本原因仍未得到探索。此外,模型编辑和微调方法之间的比较,以及知识定位方法的有效性,都需要进一步研究。本研究提出了一种简单的尝试来弥合这些差距,通过检查模型编辑和微调之间的差异,探索知识定位技术的有效性,并理解其中 LLMs 的知识结构。我们希望进一步的调查能够揭示 LLMs 的机制。

2.5.1. Comparison of Different Knowledge Editing Methods

当前知识编辑方法的有效性值得称赞,但与其他方法相比,其优越性能背后的原因仍然难以捉摸。在本节中,我们将重点介绍涉及模型内参数调整的方法,特别是 MENDROMEMEMITFT-L。当这些方法修改模型的参数时,一个基本问题就出现了:是什么让这些知识编辑方法(如MEND)在局部性和整体性能方面更胜一筹?我们将这种改变定义为 W' = W + ∆W,其中 W 是原始权重矩阵,∆W 表示在编辑过程中所做的修改。因此,我们在本节中的主要重点是辨别不同编辑方法的参数矩阵 ∆W 之间的差异。

稀疏性(Sparsity) 知识编辑的一个重要特征是它打算修改模型中的特定知识片段。这提出了一个直观的假设,即 ∆W 矩阵可能是稀疏的。遵循 De Cao等人[168]的方法,我们提出了一种可视化方法,可以捕获由知识编辑产生的权重更新,如图6所示。

ROMEMENDMEMIT 表现出明显的稀疏更新模式,而 FT 则将其修改更均匀地分布在权重上。特别是,对于像 ROME 和 MEMIT 这样的知识编辑方法,改变集中在 value 层的一列或几列上。这一发现与早期的研究一致,早期研究强调了 value 层在封装相关知识方面的关键作用[42]。关于 MEND 方法,我们提出将学习到的超网络可以看作是一个工具或一个“探针”,帮助我们探索和理解模型用来编码知识的内部机制,提供对模型如何表示和处理信息的见解。

映射到嵌入空间(Mapping to Embedding Space) 为了进一步研究不同编辑方法之间的差异,我们遵循Dar等人[207]的方法进行了嵌入空间分析。他们通过将 LLMs 的权重映射到词汇空间来分析 Transformer 的参数,发现嵌入空间可以解释这些权重。在这里,我们映射两个矩阵 W' 和 W ,以观察这些方法之间的差异。从稀疏性分析中,我们选择了更新的 value 矩阵 ∆W 的前五列,并将 W' 和 W 的相应列映射到嵌入矩阵 E 中,以获得词汇空间中的 logits。然后,我们计算输出 logits 中新知识的 Hit@10 和 Hit@50。我们从 ZsRE 中选择一些案例,其中所有四种方法都成功编辑了知识,并在图 7 中呈现了平均性能。从图中,我们观察到MEND和MEMIT显著地将目标知识注入到参数中。值得注意的是,MEND表现出了卓越的编辑能力,在编辑之前,Hit@50率已经超过90%。这意味着 MEND 可能能够找到并改变持有目标知识的正确神经元,而无需进行全面的知识定位分析。在编辑过程之后,我们观察到 Hit@10分数大幅增加。事实上,在我们的实验中,MEND在编辑后的Hit@1率也在90%以上,显示出其强大的编辑能力。对于 MEMIT,我们还观察到Hit@50增加(59.7% → 70.2%),原始神经元在编辑之前已经具有很高的 Hit 分数。 然而,对于 ROME 和 FT-L,我们没有观察到性能的提高,这表明它们的编辑机制需要进一步研究以了解它们的具体特征和局限性。

2.5.2. The Effectiveness of Knowledge Locating in LLMs

正如我们在上一部分所讨论的,存储在 LLMs 中的知识不是结构化的。此外,在之前的实验中,我们发现当前编辑在便携性方面的表现并不好。正如前人研究发现[69,155,157]的那样,编辑事实知识并不一定使模型能够在推理和应用过程中利用它。同时,Hase等[208]发现,通过因果追踪来衡量,编辑成功与事实的存储位置无关。这些工作凸显了当前的编辑方法不足,并对当前知识位置分析的有效性提出了质疑。Chang等[209]引入了 INJ 和 DEL 两个基准来研究“是否有任何定位方法实际上对记忆数据进行定位LLMs?他们对当前的定位方法进行了实验,包括归零和积分梯度,并提出了两种 prune-based 定位方法:SLIMMING和HARD CONCRETE。两个基准测试显示结果呈正相关,并展示了集成梯度、SLIMMING 和 HARD CONCRETE 的强大定位能力。同时,DEL基准测试表明,所有方法都在擦除目标序列和保留其他记忆数据之间努力平衡;换句话说,通过定位方法识别的神经元往往也与记忆其他一些序列有关。此外,Ju 和 Zhang 提出了评估当前知识定位方法有效性的基准和三个评估指标:一致性、相关性和公正性。该基准在促进全面评估当前定位方法是否能够准确确定与特定事实知识相关的模型参数方面发挥着至关重要的作用。在这里,我们基于基准对知识编辑的定位方法进行了简单的分析。我们采用相对相似度(RSim)的计算方法为:

我们采用了他们的数据集 klob-r(设计用于测量一致性)和 klob-c(设计用于测量相关性),并将其应用于 ROME [79]提出的随意分析方法。由于随意分析是逐层干预,因此我们在这里使用已识别层之间的重叠来计算相似性。我们在图 8 中显示了 RSim 分数。在这里,当我们考虑超过五个层的一致性和相关性时,我们可以发现 Rsim 分数小于 0.6,这意味着不相关知识和相关知识链的定位结果没有显示出太大差异。为了更具体地说,我们在这里进行了一个案例研究。

案例研究 我们考虑了与实体 SMAP 关联的给定事实的三个设置,并在图 9 中进行了显示。我们首先对以下事实进行因果分析:[SMAP−−−−−→日本]。然后,我们考虑一个与事实相关的问题 [SMAP −−−−−→ Japan −−−−→ Japanese],其中模型应根据事实回答问题。最后,我们采用了一个不相关的事实[SMAP −−−→ pioneernal group]。结果表明,这些事实可能与 5 层中的同一位置有关。然而,正如 Ju和 Zhang [210]所提到的,与不相关的知识相比,特定知识及其相关知识链的定位结果应该表现出更大的相似性。目前,随意的分析方法似乎只是定位与实体本身相关的区域,而不是整个事实。该模型是通过使用预训练语料库中记忆的答案作弊还是通过多步推理机制来执行这些答案,目前尚不清楚。这与知识编辑任务密切相关。更广泛地说,更好地了解模型的知识过程可以解锁可解释性和事实验证等功能。然而,在如此大的模型中,充分理解知识究竟是如何组织和相互联系的,这是一个持续的挑战。关键的开放性问题包括开发在推理过程中追踪事实使用情况的方法,设计位置技术以识别对模型输出最突出的知识,以及学习架构属性如何与知识利用相关联。解开这些知识架构对于通过知识编辑等方法实现更精确、更强大的模型干预是不可或缺的,但目前仅操纵 MLP 权重是不够的。

2.5.3. The Implicit Knowledge Structure in LLMs

理解 LLM 中的知识结构对于有效的知识编辑至关重要。以前的研究经常将 LLMs 的内部知识概念化为类似于知识图谱 (KG) 中的三元组,包括主题、关系和客体。这个类比虽然有用,但简化了 LLMs 中知识表示的复杂性质。

在 KG 中编辑知识通常涉及修改两个节点之间的单一关系,相对简单。KG 本质上支持简单的推理任务,并允许保留知识结构的其余部分。图 10 说明了这种弹性,其中编辑和后续恢复过程导致原始 KG 结构的完全恢复。另一方面,由于这些模型中知识的纠缠性质,知识编辑LLMs提出了独特的挑战。与知识被整齐地划分的 KG 不同,在 LLMs 中,知识分布在各种参数和层中,因此很难在不影响其他知识领域的情况下隔离和编辑特定信息。目前将知识视为三元组的观点在某种程度上是有限的,并且无法捕捉这些模型的全部复杂性和相互关联性。以前的工作[183,101]进一步强调了这种复杂性,他们讨论了在参数内修改内在知识的挑战。

此外,先前的研究表明,知识编辑可能会导致意想不到的传播效应。Li 等[205]指出,目前的知识编辑方法会导致 LLMs 内部的知识冲突和知识扭曲。与结构化知识库不同,神经网络对知识结构和相互关系缺乏严格约束。这使得将编辑限制在模型内的局部范围内变得困难,并且其自由形式使编辑过程进一步复杂化。因此,需要对LM的机制有更全面的理解。

目前,T-PatcherIKE 等方法提供即插即用功能和可逆性。 它们提供了灵活性和用户友好性,并且可以根据需要轻松集成到 LLMs 中或分离出来。这些方法旨在减轻与知识编辑相关的一些挑战,允许方便和可逆的修改。随着该领域的发展,当务之急是继续开发方法,不仅要解决知识编辑的挑战,还要利用这些复杂系统的全部潜力,将原始的 LLM 转化为 WikiModels,又称神经知识库,具有编辑可行性。

2.6. Applications

在本节中,我们将总结将知识编辑技术用于各种应用的最新方法,并说明未来探索的潜在方向。

2.6.1. Efficient Machine Learning

模型更新 虽然知识编辑技术直接修改或增强模型参数,但要实现其全部潜力,需要将这些内部更新转化为LLMs下游任务。最近的研究探索了将知识编辑整合到各种任务中,包括问答、事实检查和自然语言生成。对于问答,像 MeLLo [155]这样的方法分解了复杂的问题,并迭代地检索和编辑知识以得出多跳答案。Reckon [211]提出了一种通过反向传播更新他们的参数知识来教导 LLMs 推理的方法。这种方法使模型能够使用更新的参数来回答问题,从而增强它们的推理能力。Padmanabhan 等[212]引入了一种称为蒸馏的知识更新技术,该技术涉及传授有关实体的知识并传播该知识以实现更广泛的推断。此外,MedEdit [213]采用知识编辑方法处理医学问答,这些方法的应用使准确率从44.46%提高到48.54%。同时,一些工作尝试使用知识编辑来处理事实核查数据集,如 FEVER[214]、Vitamin-C[215],并取得了良好的效果。特别是Chen等[97]发现,通过分析退化的知识神经元,模型本身可以检测到错误的事实而不依赖外部数据。在自然语言生成方面,除了前期以WikiGen [170]或WikiBio Hartvigsen等[163]为主的研究外,DoLA [216]通过分析不同层学到的知识,提出了通过对比层解码的方法,大大缓解了一代人的幻觉问题。此外,正如Ilharco等[217]、Santurkar等[218]、Brown等[219]和Ortiz-Jimenez等[220]所强调的那样,任务算术已经成为一种经济高效且可扩展的解决方案,用于直接在权重空间中进行编辑LLMs。

除了自然语言处理外,知识编辑也越来越多地应用于各个领域,展示了其多功能性和有效性。Gu等[221]提出了一种新颖有效的模型编辑方法MENT,以解决代码生成中的挑战。KGEditor [222] 利用知识编辑来修改知识图谱嵌入,而 GNNDelete [223] 引入了一个与模型无关的、专门用于图解读的逐层算子。这些方法突出了知识编辑在增强和完善基于图形的模型方面的潜力。此外,EGNN[224]提出了一种无邻域传播方法,用于纠正错误分类节点上的模型预测,进一步扩大了图网络中知识编辑的范围。

虽然前景光明,但要将编辑后的知识转化为强大的任务改进,还需要做更多的工作。主要挑战包括开发方法,将编辑有效地纳入在线推理,而不仅仅是静态参数,以及处理涉及复杂推理的编辑。知识编辑与下游架构和目标的紧密集成仍然是一个悬而未决的研究问题。
模型操作 一旦我们能够成功编辑模型并理解知识机制,我们就可以通过知识提炼和转移来操纵模型。Zhong 等[225]提出了一种知识蒸馏方法,通过分析模型中的知识神经元块,将 LLMs 中的知识转移到小模型中,提出了不同模型间知识的提炼和融合的新方向。Bayazit 等[226]致力于在特定知识中构建一个关键子网络,并对该子网络进行剪枝,从而去除模型对目标知识的理解,这也是一种剪枝和抑制大模型的新方法。Chang 等[209]还采用了基于李子的模型来分析模型的知识。此外,在分析模型权重的知识时,Dar等[207]表明,可以通过将其权重投射到嵌入空间中来拼接两个模型,这表明拼接不同模型的可能解决方案。 通过编辑和修剪等方法对 LLMs 内部知识的操纵不仅提高了效率和可访问性,而且还有望在应用程序和可扩展性中释放新的潜力。

2.6.2. AI-Generated Content (AIGC)

LLMs现在可以处理不同形式的知识,如图像和音频信息[230–233]。这些模型具有处理或生成多模态知识的能力,这对于在各种应用程序中创建人工智能生成的内容非常宝贵[234]。最近研究中一个值得注意的趋势是使用编辑方法来修改/控制这些模型生成的内容。例如,Cheng等[235]提出了一种新的基准,旨在增强模型对多模态知识的理解。这包括视觉问答(VisualQA)和图像标题等任务,这些任务需要文本和视觉信息的深度集成。同样,Arad等[236]引入了ReFACT,这是一种新颖的文本到图像编辑任务,专注于编辑模型中的事实知识,以提高生成图像的质量和准确性。这种方法还包括一种更新知识编码器的方法,确保模型保持最新和相关性。此外,Pan等[237]探讨了基于transformer的多模态神经元的识别。同时,Gandicota等[238]深入研究了从模型权重中擦除特定概念的概念,特别是在文本到图像扩散模型中。他们引入了一种知识编辑方法,该方法利用这些已识别的神经元,为更细致和有效的多模态知识整合铺平了道路。这种方法为概念删除提供了一种更持久的解决方案,而不是仅仅在推理时修改输出,从而确保即使用户可以访问模型的权重,更改也是不可逆的。

然而,评估模型整合跨模态知识的一致性仍然是一个重大挑战,需要制定新的基准和指标。调整知识编辑技术以对齐多模态表示也至关重要。解决这些研究问题可以使模型能够以类似于人类认知的方式对多模态知识进行学习和推理。

2.6.3. Trustworthy AI

知识编辑将其应用范围扩大到不仅仅是对事实知识的纠正。它还有助于修改 LLMs的其他显著行为,例如消除不安全特性,如图 11 所示。在理想情况下,社会友好和值得信赖的人工智能系统不仅应该拥有准确的知识,而且还应该表现出适当的社会规范和价值观。这需要避免有毒、偏见或有害的语言和观点, 并展示对不同观点和经验的理解和一致性。然而,通过知识编辑实现这种“社会一致性”面临着重大挑战。社会行为本质上是复杂和主观的,因此改变社会行为是一项艰巨的任务。最近,一些现有的工作探索了应用知识编辑技术来构建更可信的人工智能,例如针对隐私问题的解毒、贬低和防御策略。

Toxicity in LLMs LLMs容易受到有害输入的影响,并产生有害的语言,损害其有用性[245,246]。为了评估有毒的生成,Gehman等[247]提供了一个连续生成的数据集RTP,Zhang等[248]设计了SBENCH,其中包括11,435个不同的多项选择题,涵盖7个不同类别的安全问题。为了增强对LLMs无害数据的解毒作用,邓等[249]、黄等[250]、克劳斯等[251]对过孔手动标记的无害数据的LLMs参数进行了微调。然而,这些方法缺乏对恶意扰动的鲁棒性,并且存在高昂的注释成本。知识编辑是操纵 中LLMs毒性的一种可解释的替代方法,它仅调整参数子集并减少计算消耗。一方面,Anonymous [252] 利用知识编辑技术为不同的攻击目标注入后门LLMs。Li等[253]通过消除模型中有限数量的因果路径,在推理时针对不良行为。另一方面,越来越多的研究侧重于通过知识编辑引发安全反应。例如,Geva等[42]探索了通过在前馈网络层上使用逆向工程从神经元中去除有害词的方法。胡等[254]将专家能力和反专家的能力相结合,在保留一般能力的同时,只提取和消除反专家能力的不足。LoRA构建的这种方法的专家和反专家是参数效率高的,使LMs能够保留自然技能,例如MMLU(事实性)[202],小学数学(推理)[255]和Big-Bench-Hard[256]。

然而,这些用于安全生成的知识编辑方法主要局限于令牌级别,这意味着避免使用有毒词。因此,经过编辑的模型面临着丧失纳入敏感术语及其相关观点的能力的风险。例如,像“繁荣”这样的微妙术语的存在阻碍了模型表达安全指令的能力,如“不要制造炸弹”。因此,设计一种编辑方法来生成语义安全和多样化的内容具有很大的前景。此外,对广泛的对抗性输入进行概念知识编辑是必要的,这可以永久地消除有害的概念LLMs,从而增强模型的整体完整性和可靠性。

Bias in LLMs 在庞大的语料库LLMs上训练的LLMs偏见可能会无意中学习有偏见的信息,导致模型中编码的负面刻板印象和社会偏见。当部署在生产系统中时,这种偏见可能会导致不公平和伤害[257,258]。例如,给定描述“Anita 的律师事务所为下东海岸提供服务,包括 Accomack 县”,有偏见的模型可能会产生“Anita 是一名护士”的延续,反映出性别偏见。评估和减轻这些偏差至关重要,有几个基准测试,包括Bios数据集中的偏差[259]、WinoBias[260]和StereoSet[257]。

为了解决偏见LLMs问题,Hernandez等[162]提出了知识编辑方法 REMEDI,该方法显著降低了性别LLMs偏见。Yu等[261]提出了一种分区对比梯度去学习方法,该方法仅优化模型中在特定偏差域中最有影响力的权重。这种方法既能有效地减轻它所适用的性别专业领域的偏见,也能有效地将这些影响推广到其他看不见的领域。此外,受ROME和MEMIT研究结果的启发,DAMA[262]识别了刻板印象表示子空间,并使用正交投影矩阵编辑了易受偏置的FFN。所提出的方法显着减少了 WinoBias 和 StereoSet 中的性别偏见,而不会牺牲不相关任务的性能。

尽管这些方法取得了成功,但要编辑和减轻 LLMs 中的偏见,仍有更多障碍需要克服。这些障碍包括:首先,偏见可能出现在复杂的语义、语用和常识知识中,而现有基准可能无法充分捕捉这些知识;其次,虽然一些偏见可以通过知识编辑来解决,但训练数据本身固有的系统性偏见会带来更持久的困难。因此,解决这些偏见和不公平的根本根源需要全面的策略,包括数据管理、模型架构和知识编辑技术。

Privacy in LLMs LLMs 在广泛的网络数据语料库训练,隐私可能会被记住并无意中泄露敏感或机密信息,从而造成重大的隐私和安全问题[263,264]。“被遗忘权”在以前的工作中得到了强调,强调需要解决个人和机密数据的潜在泄漏问题[265]。在保护个人信息的同时,可以通过知识编辑方法实现可靠性LLMs。例如,Jang等[266]提出知识去学习作为一种修改预训练模型并阻止它们生成特定知识文本的手段。Ishibashi和Shimodaira[187]提出的另一种方法是知识清理,其目的是防止个人和机密信息的泄漏,同时保持可靠性。DEPN [267] 引入了识别与隐私敏感信息相关的神经元。然后,通过将这些检测到的隐私神经元的激活设置为零来对其进行编辑。此外,他们还提出了一个隐私神经元聚合器,用于批量处理和存储隐私信息。实验结果表明,该方法在不影响模型性能的情况下,显著降低了私有数据泄露的暴露。

在多模态模型的背景下,Chen等[268]提出了用于保护个人信息的PrivQA数据集。他们开发了一个多模态基准来评估隐私和效用之间的权衡,其中模型被指示在模拟场景中保护特定类别的个人信息。他们还提出了一种迭代的自我调节技术,可以大大提高隐私性。此外,正如Wu等[269]所强调的那样,知识编辑技术也与联邦学习有关,包括联邦取消学习和联邦增加学习。展望未来,仍需要进一步的研究来开发能够有效且可验证地清除潜在LLMs敏感知识的技术。另一个有趣的应用是通过知识编辑嵌入水印[270]LLM,而不影响模型的性能并为其提供版权保护。因此,有必要仔细评估基准,以严格测试这些方法的能力。

2.6.4. Human-Computer Interaction: Personalized Agents

数百万年的进化使人类能够通过基因和学习经验来实现智力。随着 LLMs的出现,机器在不到几百年的时间里就学会了掌握世界知识。这些知识能力来自从压缩数据派生的参数。在人类与机器可能共存的时代,为了社会利益,设计智能人机交互系统至关重要[271,272]。通过有效地控制 LLMs 作为个性化代理人,我们可以利用他们的能力来创造社会利益,正如 Salemi 等人[273]所概述的那样。与基因编辑类似,知识编辑技术允许通过操纵参数来控制电子大脑,以定制具有各种知识、价值和规则属性的(永久)LLM 代理。

图 11 展示了个性化模型在经济业务、对话系统、推荐系统等各个领域的应用。最近的进展证明了他们表现出个性、观点和情感的能力,使他们更像人。这引发了人们对开发个性化LLMs的兴趣日益浓厚。一些著作[277,278]LLMs通过问卷测试(即MBTI)和其他心理学理论研究了人格。Tu等[279]为具有不同配置文件的虚拟角色构建了对话框架。毛等[280]提出了一种新的知识编辑任务来编辑 LLM 人格。首先,它能够 LLMs 迎合用户的喜好和意见,从而增强用户体验。这可以通过知识编辑来实现,在知识编辑中,模型经过训练以符合每个用户的特定要求和兴趣。还提出了一种情绪基准[281]来衡量LLM情绪。

个性化的 LLMs 通过迎合用户的喜好和意见来增强用户体验。知识编辑是实现这一目标的关键技术。通过训练模型以符合每个用户的特定需求和兴趣,可以提供个性化的推荐和建议。例如,在经济业务中,模型必须理解用户的审美和偏好,以便为他们提供更好的产品推荐。通过了解个人用户的独特品味和偏好,该模型可以提供更准确和个性化的建议,从而提高客户满意度并可能提高销售额。此外,将商家纳入LLMs客户服务系统可能是非常有益的。这些模型可以帮助理解和解决客户的疑问和疑虑,提供个性化的推荐,并提供更令人满意的购物体验。通过利用个性化LLMs,人工智能代理可以有效地处理特殊的产品功能,并将其更好地介绍给买家。

综上所述,基于用户偏好开发面向个人的模型在人机交互领域至关重要,例如经济业务、对话系统和推荐系统。通过知识编辑和与用户的胃口和意见保持一致等新兴技术[282],LLMs可以提供改进的商品和服务,从而提高用户满意度和更好的业务成果。

2.7. Discussion and Conclusion

在这项研究中,我们强调了当今知识编辑所固有的挑战,并为多样化的编辑任务引入了新的基准。虽然目前的方法在某些领域显示出疗效,但仍有重大问题需要改进:

  • 当前的语言模型架构从根本上基于下一个 token 预测任务,但底层机制仍然是不透明的。目前尚不清楚目前的编辑方法可能侧重于改变输出的概率分布或对特定提示的响应,是否真正构成成功或有用的编辑。这种模糊性引发了人们对这些方法在实现有意义和有意识的知识编辑方面的有效性的质疑。
  • 界定知识编辑所施加的影响的程度和界限是具有挑战性的。与神经外科手术类似,鉴于语言模型中信息和技能的交织性质,全面评估修改对模型其他功能的影响是复杂的。这种复杂性表明,目前的知识编辑方法可能更有效地应用于特定任务或特定领域的上下文中,在这些上下文中,编辑的影响更可预测和可包含。
  • 知识的动态性和流动性,随着日常变化和新信息而不断发展,带来了独特的挑战。语言模型不仅必须包含这些不断发展的知识,而且还必须相应地调整其推理、行动和交流方法。这种瞬息万变的知识格局需要一种更加敏捷和响应迅速的方法来控制知识LLMs,就像植入思想钢印一样,可以跟上信息和社会规范的快速发展,并进一步确保人类社会的安全LLMs。

然而,正如Pinter和Elhadad[183]所指出的那样,LLMs 的随机性不仅是复杂性的来源,而且是各种情况下创造力和适应性的源泉。因此,知识编辑的潜力仍然值得探索。许多因素,如先验知识、经验、文化背景和社会互动,错综复杂地联系并塑造了模型的结果。为了在未来真正做到负责任和合乎道德的LLMs,我们可能需要一种综合方法,包括知识编辑、更强大的安全措施、更开放和更强的问责制。总体而言,从传统微调到知识编辑的转变反映了我们处理 LLMs的方法发生了更深层次的演变。它标志着朝着更专业、更细致和更复杂的模型适应和增强方法迈进,这与这些高级语言模型日益增长的复杂性和功能相一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1949211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试八股之Spring-boot-starter-parent的作用是什么

Spring-boot-starter-parent的作用是什么 spring-boot-starter-parent 是Spring Boot项目中的一个特殊POM(Project Object Model),它主要的作用是提供一系列默认的配置和依赖管理,以便简化项目的构建过程。以下是spring-boot-sta…

【Python Web】Flask扩展开发指南

Flask是一个轻量级的Python Web框架,它提供了丰富的扩展库和工具,可以帮助开发者快速构建Web应用。本篇博客将介绍如何进行Flask扩展开发,包括扩展的创建、配置、使用等方面的内容。 目录 Flask扩展开发指南 一、Flask扩展简介 二、创建Fl…

java面向对象进阶进阶篇--《成员、静态、局部、匿名内部类》

个人主页→VON 收录专栏→java从入门到起飞 接口和接口与抽象类综合案例 目录 一、成员内部类 特性: 定义方式: 访问规则: 实例化: 生命周期: 静态成员: 使用场景: 示例: O…

快速入门了解Ajax

博客主页:音符犹如代码系列专栏:JavaWeb关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Ajax的初识 意义:AJAX(Asynchronous JavaScript and…

C语言 | Leetcode C语言题解之第287题寻找重复数

题目&#xff1a; 题解&#xff1a; int findDuplicate(int* nums, int numsSize){int *b(int*)calloc(100001,sizeof(int));for(int i0;i<numsSize;i){ b[nums[i]];if(b[nums[i]]2) return nums[i];}return 0;}

【C语言】 二叉树创建(结构体,先序遍历,中序遍历,后续遍历)

二叉树的创建&#xff1a;首先先定义一个结构体&#xff0c;里面包含数据&#xff08;data&#xff09;&#xff0c;指向左子树的指针&#xff08;L&#xff09;&#xff0c;指向右子树的指针&#xff08;R&#xff09;三个部分 在创建树的函数中&#xff0c;首先先输入…

内网对抗-隧道技术篇防火墙组策略HTTP反向SSH转发出网穿透CrossC2解决方案

知识点&#xff1a; 1、C2/C2上线-CrossC2插件-多系统平台支持 2、隧道技术篇-应用层-SSH协议-判断&封装&建立&穿透 3、隧道技术篇-应用层-HTTP协议-判断&封装&建立&穿透隧道技术主要解决网络通讯问题&#xff1a;遇到防火墙就用隧道技术&#xff0c;…

Mysql第五次作业 触发器和存储过程

1、建库建表 建立触发器&#xff0c;订单表中增加订单数量后&#xff0c;商品表商品数量同步减少对应的商品订单出数量,并测试 建立触发器&#xff0c;实现功能:客户取消订单&#xff0c;恢复商品表对应商品的数量 建立触发器&#xff0c;实现功能:客户修改订单&#xff0c;商品…

Golang | Leetcode Golang题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; type PeekingIterator struct {iter *Iterator_hasNext bool_next int }func Constructor(iter *Iterator) *PeekingIterator {return &PeekingIterator{iter, iter.hasNext(), iter.next()} }func (it *PeekingIterator) hasNe…

鸿蒙应用框架开发【多HAP】程序框架

多HAP 介绍 本示例展示多HAP开发&#xff0c;简单介绍了多HAP的使用场景&#xff0c;应用包含了一个entry HAP和两个feature HAP&#xff0c;两个feature HAP分别提供了音频和视频播放组件&#xff0c;entry中使用了音频和视频播放组件。 三个模块需要安装三个hap包&#xff…

Milvus 向量数据库进阶系列丨部署形态选型

本系列文章介绍 在和社区小伙伴们交流的过程中&#xff0c;我们发现大家最关心的问题从来不是某个具体的功能如何使用&#xff0c;而是面对一个具体的实战场景时&#xff0c;如何选择合适的向量数据库解决方案或最优的功能组合。在 “Milvus 向量数据库进阶” 这个系列文章中&…

提交高通量测序处理数据到 GEO --- 操作流程

❝ 写在前面 由于最近在提交课题数据到 NCBI 数据库&#xff0c;整理了相关笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. 提交高通量测序数据到 GEO --- 说明书 2. 提交高通量测序原…

Hello SLAM(在Linux中实现第一个C++程序)

首先需要安装vim编辑器&#xff0c;输入命令 sudo apt install vim 在Ubuntu上安装好vim编辑器后&#xff0c;创建路径&#xff08;/home/slambook/ch2&#xff09;&#xff0c;在该路径下创建一个cpp文档&#xff08;touch hello.c&#xff09;&#xff0c;通过vim编辑器进行…

Docker安装kkFileView实现在线文件预览

kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等 官方文档地址:https://kkview.cn/zh-cn/docs/production.html 一、拉取镜像 do…

MYSQL 第四次作业

任务要求&#xff1a; 具体操作&#xff1a; 新建数据库&#xff1a; mysql> CREATE DATABASE mydb15_indexstu; Query OK, 1 row affected (0.01 sec) mysql> USE mydb15_indexstu; Database changed 新建表&#xff1a; mysql> CREATE TABLE student( ->…

【人工智能】AI绘画:科技与艺术交汇的新时代

文章目录 &#x1f34a;AI绘画:开启艺术创作新纪元AI绘画技术发展&#xff1a;算法与艺术的完美交融AI绘画的工作原理与创意生成AI绘画的应用 AI绘画工具介绍 &#x1f34a;AI绘画:开启艺术创作新纪元 人工智能正以前所未有的力量重塑我们的世界&#xff0c;而AI绘画作为这股科…

Unity UGUI 之 事件接口

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本&#xff0c;请注意分别 1.什么是事件接口&…

Docker(十)-Docker运行elasticsearch7.4.2容器实例

1.下载镜像 1.1存储和检索数据 docker pull elasticsearch:7.4.2 1.2可视化检索数据 docker pull kibana:7.4.22.创建elasticsearch实例 创建本地挂载数据卷配置目录 mkdir -p /software/elasticsearch/config 创建本地挂载数据卷数据目录 mkdir -p /software/elasticse…

单元测试--Junit

Junit是Java的单元测试框架提供了一些注解方便我们进行单元测试 1. 常用注解 常用注解&#xff1a; TestBeforeAll&#xff0c;AfterAllBeforeEach&#xff0c;AfterEach 使用这些注解需要先引入依赖&#xff1a; <dependency><groupId>org.junit.jupiter<…

【第二天】计算机网络 HTTP请求报文和响应报文是什么样的 HTTP请求方式有哪些 GET请求和POST请求的区别

HTTP请求报文和响应报文是什么样的&#xff1f; 我去&#xff0c;以前都没怎么研究过这个。 客户端发送一个请求给服务器&#xff0c;服务器根据请求报文中的信息进行处理&#xff0c;并将处理结果放到响应报文中返回给客户端。 URL HTTP使用URL (Uniform Resource Locator&…