WISE:重新思考大语言模型的终身模型编辑与知识记忆机制

论文地址:https://arxiv.org/abs/2405.14768icon-default.png?t=O83Ahttps://arxiv.org/abs/2405.14768

1. 概述

        随着世界知识的不断变化,大语言模型(LLMs)需要及时更新,纠正其生成的虚假信息或错误响应。这种持续的知识更新被称为终身模型编辑。当前的模型编辑方法主要通过两种方式存储新知识:长期记忆(模型参数)工作记忆(神经网络激活/表示的非参数化知识)。然而,这两种方式在终身编辑情境下存在局限性,无法同时实现可靠性泛化性局部性。为了解决这一问题,本文提出了一种新的模型编辑方法——WISE。该方法采用双参数内存机制,在预训练知识与更新知识之间实现了无缝衔接,通过一种知识分片机制来避免知识冲突。

        大语言模型在训练时获取的知识是静态的,但世界知识是不断变化的。因此,部署后的LLMs可能生成包含幻觉、偏见或过时的响应。同时,由于重新训练或微调模型代价高昂,无法满足快速增长的知识需求。因此,终身模型编辑成为一种解决方案,通过不断地更新和注入知识来保持模型的准确性。然而,模型编辑面临一个关键问题:更新后的知识应存储在何处。

  • 长期记忆编辑:直接修改模型参数存储新知识。这种方式虽然可以保持对新知识的记忆,但会导致与原有预训练知识发生冲突,影响局部性和可靠性。
  • 工作记忆编辑:利用非参数化的检索机制存储新知识,不修改模型参数。这种方式虽然可以避免与原有知识的冲突,提升局部性,但难以泛化,无法应对多样化的查询。

        在此背景下,如何在终身模型编辑中平衡可靠性、泛化性和局部性,成为模型编辑的一个核心难题。

         为了解决上述问题,本文提出了WISE(双参数内存机制的终身模型编辑方法),通过结合长期记忆和工作记忆的优点,打破模型编辑中的“不可能三角”。

  • 双参数内存机制

    • 主内存:存储预训练时的原始知识,保持长期记忆的泛化能力。
    • 侧内存:专门用于存储和更新新知识,保证可靠性和局部性。
  • 路由机制:为了确保编辑后的模型在不同情境下调用合适的知识,WISE设计了一个路由器。该路由器根据输入查询的不同,自动选择是使用主内存中的预训练知识,还是侧内存中的更新知识。这样就能避免对无关知识的干扰。

  • 知识分片机制:为了应对不断增加的编辑请求,WISE引入了知识分片机制。每一组编辑知识会被存储在不同的参数子空间中,这些子空间是相互正交的,确保了不同编辑之间不会产生冲突。编辑完成后,这些分片会被合并为一个共享的侧内存,从而实现无冲突的终身编辑。

        WISE的设计主要解决了现有模型编辑方法在终身学习中的不足。具体体现在以下几点:

  • 可靠性:模型可以记住当前和之前的编辑内容,不会在多次编辑后遗忘新知识。
  • 局部性:编辑只会影响到相关的知识,不会破坏与该编辑无关的预训练知识。
  • 泛化性:模型不仅能记住具体的查询-目标对,还能理解编辑内容,能够应对不同形式的相同知识查询。

        在实验中,WISE显著优于传统的基于长期记忆或工作记忆的模型编辑方法。其在多个LLM架构(如GPT、LLaMA、Mistral等)下的实验表明,WISE在问答任务幻觉检测分布外任务等终身模型编辑场景中,均在可靠性、泛化性和局部性三个指标上取得了更好的结果。

2. 方法

2.1 终身模型编辑  

        终身模型编辑问题,其核心目标是通过连续的编辑,使得大语言模型(LLMs)的输出能够符合人类的期望,同时保持模型之前的知识和能力。 

2.2 重新思考终身模型编辑的内存设计       

表1列出了当前主要模型编辑方法在内存类型和终身编辑能力上的对比。对比的关键维度包括:

  • 长期记忆编辑(修改模型参数)
  • 工作记忆编辑(检索时使用神经网络激活/表示的非参数化知识)
  • 参数化知识检索知识
  • 是否支持终身编辑
  • 可靠性泛化性局部性

表1中的方法对比总结如下:

  • FT-EWC、ROME、MEMIT、MEND:这些方法通过修改 LLM 模型参数来编辑长期记忆,但无法支持连续编辑,或者会对无关知识产生负面影响,导致局部性较差。
  • GRACE:基于工作记忆,通过检索知识避免了对无关知识的冲突,但由于检索机制只记忆查询,不理解其含义,泛化能力较差。

        WISE 方法则通过结合长期记忆和工作记忆的优势,提供了一种更有效的终身模型编辑方案。它利用一个双参数内存机制,同时保持 LLM 的长期记忆(泛化能力)和工作记忆(可靠性和局部性),使其在终身模型编辑中表现出色。

2.3 WISE: 侧内存与知识分片、合并及路由

WISE 的侧内存包含两个关键组成部分:

  • 侧内存设计

    • 侧内存:侧内存是 LLM 某一前馈神经网络(FFN)层的副本,用于存储编辑流。通过这种设计,避免直接修改主内存而可能带来的遗忘和副作用。
    • 路由机制:为了决定使用主内存还是侧内存,设计了路由激活组件,来识别编辑的范围。在推理过程中,该组件决定是使用主内存还是侧内存来完成推理。
  • 知识分片与合并

    • 知识在随机子空间中的分片:为了避免遗忘,将侧内存分为多个随机子空间,保证知识编辑的密度和分布性。
    • 知识合并:利用模型合并技术,将不同的侧内存片段合并为一个共享的侧内存,避免知识丢失。

2.3.1 侧内存设计 (Side Memory Design)

(1)侧内存设计的基本原理
        在Transformer中,每层包含一个多头自注意力机制(MHA)和一个前馈神经网络(FFN),而FFN占据了模型中大量的参数。为避免直接修改主内存(模型预训练时学到的知识),WISE引入了侧内存,用来存储编辑过的知识。

(2)主内存与侧内存之间的路由 (Routing between Side Memories and Main Memory)

 (3)基于边界的损失函数 (Margin-based Loss Function)

2.3.2 知识分片与合并 (Knowledge Sharding and Merging)

(1)知识密度问题 (Knowledge Density)

为了在终身模型编辑中有效存储更新的知识,作者引入了知识密度的概念,它类似于知识容量,用于描述在模型的参数中存储了多少知识。在这个背景下,存在以下两难问题:

  • 知识密度过低:如果编辑次数较少或对整个内存进行微调,知识密度低,可能导致过拟合;
  • 知识密度过高:如果编辑过于频繁,知识密度过高,导致已编辑的知识发生冲突,可能引发灾难性遗忘。

为解决此问题,作者提出了一种知识分片和合并机制,将侧内存编辑划分为多个子片段,存储在不同的参数子空间中,随后通过合并这些子空间,形成一个完整的侧内存。这样设计的好处在于避免了知识冲突,同时实现高效存储。

(2)随机子空间中的知识 (Knowledge in Random Memory Subspaces)

     (3)知识合并 (Knowledge Merging)     

        在完成多次编辑后,多个子空间中的知识需要合并为一个共享的侧内存。由于不同的子空间通过随机掩码生成,这些子空间可能存在重叠部分和不相交部分。作者提出了如下定理来描述这些子空间重叠的情况:

(3)知识合并技术:Ties-Merge​​​​​​

Ties-Merge 的合并过程分为三步:

  • 修剪:修剪每个任务向量中的冗余参数;
  • 符号选择:为每个参数选择最合适的符号;
  • 不相交合并:计算不相交子空间的参数均值,并将结果合并到一个统一的侧内存中。

        通过 Ties-Merge,多个子空间中的知识能够有效合并,减少了子空间合并时的冲突。

(4)路由与检索多个侧内存 (Routing and Retrieving among Several Side Memories)

        由于单个侧内存的知识容量有限,WISE 设计了一个多侧内存系统,能够产生多个侧内存并在推理过程中进行检索。检索过程通过激活评分路由机制(activation score routing)来实现,系统会根据不同的激活指示器分数,选择最合适的内存进行推理。该设计被称为WISE-Retrieve,允许模型应对更复杂的终身编辑场景。

3.实验

3.1 实验设置和评估指标

(1)数据集与模型

  • 选择了几种流行的自回归大型语言模型(LLMs)进行实验,包括:
    • LLaMA-2-7B
    • Mistral-7B
    • GPT-J-6B

论文使用了三个不同的数据集:

  • ZsRE(零样本关系抽取,用于问答任务)
  • SelfCheckGPT(用于修正语言模型生成的幻觉现象)
  • Temporal(用于评估编辑模型在分布外数据上的泛化能力)

        表格3中给出了这些数据集的统计信息,以及编辑数据和评估时使用的无关数据。

(2)基线方法

实验中,比较了多种基线方法和WISE,包括:

  • FT-L:直接微调,使用了KL散度损失。
  • FT-EWC:基于弹性权重合并(EWC)的连续学习微调方法。
  • GPT风格编辑器:如ROMEMEMIT,用于批量编辑模型。
  • MEND:基于超网络的编辑器。
  • DEFERGRACE:基于检索的记忆编辑方法。

(3)评估指标

每个编辑示例包含三个主要测试指标:

  • Reliability(可靠性):模型编辑的成功率。
  • Generalization(泛化能力):编辑后的模型在其他类似查询上的表现。
  • Locality(局部性):编辑后的模型应保持无关数据的输出不变。

             

 3.2 实验结果

(1)WISE的竞争性表现

WISE 在实验中展示了相对于基线模型的卓越性能,特别是在以下几个方面:

  • WISE 超越了现有方法,尤其是在长编辑序列任务中;
  • 直接编辑长期记忆(如 ROMEMEMIT 等)会导致与预训练知识的冲突,导致局部性差;
  • 使用检索工作记忆的方法(如 GRACEDEFER 等)在泛化能力上表现不佳,难以适应多样化查询。

        在 问答任务(QA setting) 中,编辑次数 T=1000 时,WISE 在 LLaMAMistral 模型上分别获得了 0.830.79 的平均分数,相较于最接近的竞争对手提高了 18%11%。这说明了 WISE 在处理长序列编辑时具有良好的稳定性和有效的管理能力。

        相比之下,尽管 MENDROME 在编辑初期表现良好,但随着编辑序列的扩展,它们的表现明显下降,尤其在局部性方面。直接编辑长期记忆的方式(如 MEMITFT-EWCMEND)会显著破坏模型的知识结构,且在 T=1001000 时表现出局部性的大幅下降。

(2)分布外泛化评估(Out-of-Distribution Evaluation)

        理想的模型编辑方法应能够在复杂分布转换(distributional shift)中从公式化编辑例子泛化到自然文本。基于此,使用 Temporal 数据集 测试了分布外的泛化能力。WISE 在该数据集上取得了最佳表现,在 OOD Gen.(泛化能力) 和整体性能上表现出色,尤其是表5所展示的结果。

  • GRACE 在处理长文本时表现不佳,主要因为它的有限参数训练能力。
  • WISE 通过在有限记忆中进行检索路由,避免了 GRACEMEMIT 在处理分布外泛化时所面临的问题,尤其是在应对单个输入词元(token)表示时遇到的问题。

        这段内容的主要总结是 WISE 在不同任务和编辑场景下,相对于其他基线方法具有更好的鲁棒性、泛化能力和局部性表现,特别是在长编辑序列和分布外任务中的优异表现。

3.3 进一步分析(Further Analysis) 

(1)WISE的路由激活可视化(Visualization of WISE’s Routing Activation)

        为了展示记忆路由的效果,实验记录了1000个问答任务(QA)和600个幻觉检测任务中的查询激活值。结果表明,几乎所有无关查询的激活值都较低,而WISE可以精确地将编辑查询和未见过的同义词路由到侧记忆中。这确保了编辑的局部性,并防止了在长期编辑中模型偏离预训练分布。

(2)WISE侧记忆的局部化分析(Localization Analysis of WISE’s Side Memory)

        为了验证在Transformer模型中中到晚层编辑的优势,实验选择了解码器的早期、中期和晚期层进行对比。结果表明,早期和最终层的编辑效果不佳,而中到晚层的编辑效果显著。例如,选择第26层进行编辑可以保持80%的成功率和泛化率,同时保持100%的局部性。这表明中到晚层非常适合作为侧记忆的编辑层。

(3)对ρ和k的分析(Analysis of ρ and k for WISE)

        通过对WISE的重要超参数(掩码比例ρ和子空间数量k)的分析,结果表明,当k⋅ρ=0.4<1 时,子空间设计的知识密度较高,有助于更好的泛化。最佳的子空间重叠概率是0.03,这在合并时作为锚点,同时避免了冲突。实验表明,约20%的FFN参数可以存储至少500个编辑示例。

(4)扩展到3000次编辑(Scale Up to 3K of Edits)

        实验将连续编辑次数扩展到3000次,比较了WISE的多次合并方法(WISE-Merge)和基于路由和检索的WISE-Retrieve方法。实验表明,WISE在应对大规模编辑时保持了高可扩展性,并且WISE-Retrieve在3000次编辑中表现出最佳的性能。

(5)路由器设计的贡献(Contribution of Router Designs in WISE)

        实验对比了没有路由策略的情况下,所有输入均通过主记忆或侧记忆。通过实验验证,WISE的路由器设计在识别编辑范围和最小化副作用方面具有显著效果。表7显示了不同编辑次数下路由器对性能的影响。

(6)WISE的推理时间分析(Inference Time Analysis of WISE)

        推理时间分析表明,随着编辑次数的增加,WISE-Merge保持了稳定的推理时间延迟(约3%),而WISE-Retrieve由于引入了检索机制,推理时间有所增加,但总体仍在可接受范围内,约增加了7%的时间成本。

        存在的潜在问题:

(1)副记忆检索的可扩展性:作者承认在处理非常长的编辑流时,副记忆的检索还有改进的空间。随着编辑数量的增加,特别是在WISE-Retrieve模式下,这可能会导致效率低下。

(2)推理时间的增加:随着编辑次数的增加,特别是在WISE-Retrieve模式中,推理时间会变长。这对于实时应用(需要低延迟响应)来说是一个问题。

(3)合并过程中潜在的知识冲突虽然WISE采用了Ties-Merge技术来合并副记忆并减少冲突,但在存在多个重叠编辑的情况下,仍可能会出现知识冲突的场景

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

npm install 安装很慢怎么办?

安装源管理器nrm sudo npm install -g nrm #macOSnpm install -g nrm #Windows以管理员身份运行 安装完毕之后通过以下命令可以切换你想要的源 nrm ls #查看源列表* npm ---------- https://registry.npmjs.org/yarn --------- https://registry.yarnpkg.com/tencent ------…

FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)

前言 在FPGA设计中&#xff0c;Xilinx Vivado软件是一款功能强大的设计工具&#xff0c;它不仅支持硬件描述语言&#xff08;HDL&#xff09;的开发&#xff0c;还提供了丰富的图形化设计界面&#xff0c;方便用户进行硬件设计、调试和测试。这里我们将详细介绍&#xff0c;如…

操作系统Linux指令

1.注册表文件是Windows操作系统中的一种特殊文件&#xff0c;主要用于存储系统设置和用户配置信息。 这些文件通过REG文件扩展名进行标识&#xff0c;用户可以通过双击REG文件将其内容导入注册表中&#xff0c;从而对系统设置进行修改。 REG文件的特点是功能强大、灵活&#xf…

JAVA面试八股文(五)

#1024程序员节&#xff5c;征文# 在1024程序员节这个特别的日子里&#xff0c;首先&#xff0c;我想对每一位程序员表示最诚挚的祝贺&#xff01;祝愿大家在未来的日子里&#xff0c;能够继续热爱编程、追求卓越&#xff0c;携手共创更美好的科技未来&#xff01;让我们共同庆祝…

进程间通信(二)消息队列、共享内存、信号量

文章目录 进程间通信System V IPC概述System V IPC 对象的访问消息队列示例--使用消息队列实现进程间的通信 共享内存示例--使用共享内存实现父子进程间的通信&#xff08;进程同步&#xff09;示例--使用进程实现之前的ATM案例&#xff08;进程互斥&#xff09; 信号量示例--利…

Linux笔记---vim的使用

1. vim的基本概念 Vim是一款功能强大的文本编辑器&#xff0c;它起源于Unix系统的vi编辑器&#xff0c;并在其基础上进行了许多改进和增强。 Vim以其高效的键盘操作、高度的可定制性和强大的文本处理能力而闻名&#xff0c;尤其受程序员和系统管理员的欢迎。 Vim支持多种模式…

STM32之基本定时器TIM6和TIM7

1.定时器概念和作用 在编程任务中&#xff0c;定时器是非常常用的一个问题。当需要定时发送数据&#xff0c;定时起某个任务&#xff0c;定时做某个操作等等&#xff0c;这些都离不开定时器。本文基于以STM32F4xx系列开发板&#xff0c;介绍一下基本定时器。 2.基本定时器TIM…

基于Ubuntu24.04,下载并编译Android12系统源码 (二)

1. 前言 上篇文章&#xff0c;我们基于Ubuntu24.04&#xff0c;已经成功下载下来了Android12的源码&#xff0c;这篇文章我们会接着上文&#xff0c;基于Ubuntu24.04来编译Android源码。 2. 编译源码 2.1 了解源码编译的名词 Makefile &#xff1a; Android平台的一个编译系…

鸿蒙网络编程系列28-服务端证书锁定防范中间人攻击示例

1. TLS通讯中间人攻击及防范简介 TLS安全通讯的基础是基于对操作系统或者浏览器根证书的信任&#xff0c;如果CA证书签发机构被入侵&#xff0c;或者设备内置证书被篡改&#xff0c;都会导致TLS握手环节面临中间人攻击的风险。其实&#xff0c;这种风险被善意利用的情况还是很…

PHP企业门店订货通进销存系统小程序源码

订货通进销存系统&#xff0c;企业运营好帮手&#xff01; &#x1f4e6; 开篇&#xff1a;告别繁琐&#xff0c;企业运营新选择 嘿&#xff0c;各位企业主和创业者们&#xff01;今天我要给大家介绍一款超实用的企业运营神器——“订货通进销存系统”。在这个数字化时代&…

Docker入门之构建

Docker构建概述 Docker Build 实现了客户端-服务器架构&#xff0c;其中&#xff1a; 客户端&#xff1a;Buildx 是用于运行和管理构建的客户端和用户界面。服务器&#xff1a;BuildKit 是处理构建执行的服务器或构建器。 当您调用构建时&#xff0c;Buildx 客户端会向 Bui…

Element UI

Element ui 就是基于vue的一个ui框架,该框架基于vue开发了很多相关组件,方便我们快速开发页面。 官网: https://element.eleme.io/#/zh-CN 安装Element UI vue init webpack element(项目名)确认项目是否构建成功&#xff1a;进入到项目的根路径 执行 npm start 访问 h…

NSSCTF

[NSSRound#1 Basic]basic_check nikto扫描 nikto -h url PUT请求&#xff0c;如果不存在这个路径下的文件&#xff0c;将会创建&#xff0c;如果存在&#xff0c;会执行覆盖操作。 [NSSRound#8 Basic]MyDoor if (isset($_GET[N_S.S])) {eval($_GET[N_S.S]); } php特性&#…

形式架构定义语言(ADL)

简介 形式规范 多年来&#xff0c;学术界一直在试图通过使用与测试截然不同且更加主动的方法来确保程序语义的正确执行&#xff1a;形式化方法。研究者们认为这种方法通过更加精确、无二义性的描述来达到让程序绝对地按照设计者的思想执行的目的。这种思想早期体现在Floyd在1…

STM32之OLED驱动函数

类似51单片机中的LCD1602驱动差不多&#xff0c; 1.oled驱动代码 oled.c #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBi…

Python入门(二)编程中的“真”与“假”,单双向选择的判断

编程中的“真”与“假” 在编程中&#xff0c;这种“真”、“假”状态我们用布尔数来表示&#xff0c;“真”是True&#xff0c;“假”是False。 另一种方式&#xff0c;是通过比较运算得到。 如图&#xff0c;3赋值给a&#xff0c;1赋值给b&#xff0c;进行大小的比较。 a &g…

U9的插件开发之BE插件(1)

U9插件可分为&#xff1a;BE插件、BP插件、UI插件&#xff1b; BE(Business Entity) 简单就是指实体&#xff0c;U9的元数据。 我的案例是设置BE默认值&#xff0c;即在单据新增时&#xff0c;设置单据某一个字段的默认值&#xff0c;具体如下&#xff1a; 1.插件开发工具&a…

Linux的目录结构 常用基础命令(2)

Linux的目录结构 根目录&#xff1a; 所有分区、目录、文件等的位置起点 整个树形目录结构中&#xff0c;使用独立的一个“/”表示 常见的子目录 /root /bin /boot /dev /etc /home /var /usr /sbin 基础知识 以 . 开头的文件均为隐藏文件 路径用/分开 / 不在第一位就…

plsql 高版本用不了 expaste 插件 问题

plsql 高版本用不了 expaste 插件 问题 其实不是版本问题&#xff0c;而是高版本的咩有在用这个插件&#xff0c;在另外一个功能里面&#xff0c; 查询你要的数据&#xff0c; 选择数据&#xff0c;右键&#xff0c;点 右键 复制为表达式列表&#xff0c;即可 在空白处粘贴…

【C++】C++11基础入门

目录 一、C11发展史&#xff1a; 二、列表初始化&#xff1a; 1、初始化&#xff1a; 2、initializer_list函数&#xff1a; 三、声明&#xff1a; 1、auto自动识别类型&#xff1a; 2、decltype&#xff1a; 3、nullptr&#xff1a; 四、范围for&#xff1a; 五、STL…