当前位置: 首页 > news >正文

大模型基于指令的知识编辑:InstructEdit技术

人工智能咨询培训老师叶梓 转载标明出处

在知识更新和编辑方面,大模型在特定任务上表现出色,但在面对不同任务时往往力不从心,需要为每个任务单独设计编辑器,这在一定程度上限制了其应用范围。为了解决这一问题,浙江大学和腾讯的研究人员提出了一种名为InstructEdit的新技术,旨在提高大型语言模型在不同任务间的知识编辑能力和泛化性。InstructEdit技术的核心是通过简单的指令来指导编辑器适应各种任务表现,从而改善模型的行为,而不影响整体性能。该技术的开发基于对现有知识编辑方法在多任务泛化问题上的深入分析。InstructEdit技术的特点包括:

  1. 统一编辑器:通过一个统一的编辑器,InstructEdit能够在多种任务中实现有效的知识编辑,而无需为每个任务单独设计编辑器。
  2. 多任务编辑能力:实验结果表明,InstructEdit在多任务编辑设置中平均提高了14.86%的可靠性。
  3. 跨任务泛化:InstructEdit在未见过的任务上的表现也超越了以往的强基线,显示出良好的泛化能力。
单任务编辑器(Single-Task Editor)和多任务编辑器(Multi-Task Editor)与InstructEdit的对比

方法

InstructEdit技术通过指令引导编辑器来适应不同的任务,提高模型在多任务编辑中的性能。为了确保多任务编辑的多样性,研究者们选择了几个不同的数据集。其中包括:

Recent:专注于更新2022年7月后添加到WikiData的三元组,用于使模型更新最新知识。

CounterFact:强调来自高浏览量的Wikipedia页面的三元组,以解决模型在修改编辑中忽视不太突出实体的问题。

ConvSent:一个情感编辑任务,旨在调整对话代理对特定主题(如“你对香蕉怎么看?”)的情感,而不会影响其他主题的响应。

研究者们发现将知识从其他任务转移到ZsRE(一种零样本关系提取数据集)是具有挑战性的。因此,他们使用ZsRE来评估多任务编辑的泛化能力,在多任务编辑训练中不包括ZsRE。使用的是[Yao et al., 2023]扩展的版本,它在原有数据集基础上增加了可移植性测试和新的局部性集合。

不同任务的指令示例,如CounterFact和ConvSent任务的描述和输入模板

指令的生成是InstructEdit技术的关键步骤,它涉及到创建和优化用于指导编辑过程的指令。研究者们首先为多任务知识编辑开发了一套指令模板,这些模板覆盖了四个不同的任务家族:CounterFact、Recent、ConvSent和ZsRE。每个任务家族的模板都设计有特定的模型发现指令、输入和目标模板,以及相关的元数据,确保了指令的高度针对性和任务的多样性。

假设可以访问多领域任务数据,单任务编辑、多任务编辑以及InstructEdit在不同领域(如法律、地理、医学和数学)的编辑过程

为了生成这些指令,研究者们采用了GPT-4这一先进的语言模型,并通过精心设计的提示来引导GPT-4产生所需的指令。生成的指令随后通过Trial Editor进行评估,这一评估过程涉及到对指令性能的度量,比如准确性、可靠性等关键指标。评估之后,研究者们继续使用GPT-4对指令进行迭代优化,这个过程一直持续到性能指标不再有显著提升为止。

在指令生成的过程中,研究者们特别注重指令的优化。他们将性能指标反馈给GPT-4,以此来进一步提升指令的质量。这种优化不仅提高了指令的有效性,也确保了它们能够在多任务编辑中发挥最大的作用。完成的指令数据集将向社区公开,使得其他研究者和开发者能够访问和利用这些资源。

在统一编辑器学习指令的过程中,InstructEdit采用了MEND的编辑架构,并结合了元学习编辑器,也就是超网络的概念,来实施精确的编辑操作。这一过程中,模型的参数和梯度被映射到伪激活和伪增量上,从而更新模型参数,实现对知识的具体编辑。InstructEdit通过L2范数缩放梯度,提取了梯度的方向成分,这使得研究者们能够专注于梯度的方向,而忽略其大小,为不同任务间的比较提供了新的角度。

编辑过程本身是将指令附加在输入前,这样做可以促进多任务编辑的进行。通过指令的串联,InstructEdit旨在聚集任务向量并减少不同任务间的潜在冲突。这种策略不仅提高了编辑过程的协同效应,还确保了多任务编辑器在处理各个独立任务时,其性能至少能够达到甚至超过专用的单任务编辑器。这表明InstructEdit技术在提升编辑精度和控制能力方面具有显著优势,能够为大型语言模型提供更为强大和灵活的知识编辑解决方案。

InstructEdit技术通过指令引导编辑器,有效地解决了大型语言模型在多任务编辑中的泛化问题,提高了编辑的精确性和控制能力,并通过可视化分析验证了其有效性。这项工作为知识编辑领域贡献了高质量的指令,并在各种现有的流行知识编辑任务数据集基础上进行了构建。

实验

编辑模型:实验在两个不同规模的大型语言模型上进行:GPT2-XL(1.5B)和LLaMA-2-Base(7B)。这些模型分别代表了不同规模的LLMs,以测试InstructEdit的适用性和有效性。

基线对比:InstructEdit与多种编辑方法进行比较,包括FT-L方法(特定层的FFN微调),CaliNet和GRACE(保持模型参数不变的编辑方法),以及MEND和KE(修改模型参数的编辑方法)。

实验采用了以下一致性评估指标:

可靠性(Reliability):衡量编辑后的模型是否能够正确生成目标答案。

泛化性(Generalization):评估编辑后的模型对等价邻居(例如句子的重述)的预测能力。

局部性(Locality):确保编辑后的模型对范围外的例子保持原有输出。

可移植性(Portability):衡量编辑后的知识在新数据集上的应用能力。

流畅性(Fluency):评估编辑后模型生成文本的多样性。

表3展示了不同编辑方法在多任务编辑中的表现。FT-L方法在可靠性上表现不佳,可能是因为原有模型的先验知识干扰了编辑过程。CaliNet虽然保持了模型的完整性,但在泛化性和可移植性上表现不佳。而MEND和KE在所有指标上都表现出色,实现了可靠性和局部性的平衡。

InstructEdit通过指令引导的方法提高了编辑的精确性和控制能力,达到了与MEND和KE相当的有效性。尽管MEND和KE在编辑结果上有效,但在处理OOD数据时性能不佳,而InstructEdit通过提供具体指令显著改善了这一问题。

通过“保留编辑设置”,评估了知识编辑方法对OOD数据的适应性。结果显示,所有先前的知识编辑基线在应用于OOD数据时性能直线下降。InstructEdit能够有效地解决这些挑战,显示出强大的泛化能力。

InstructEdit在未见指令(Unseen Instructions)上的泛化能力,与见过指令(Seen Instructions)相比达到了可比的结果

结果显示,即使在训练阶段未见过的任务数据集上,InstructEdit也能够实现与单任务编辑相当的性能水平。

通过分析编辑区域的主要成分,并使用t-SNE可视化技术,研究者们展示了InstructEdit与传统编辑方法相比,在优化方向控制、任务扩展对泛化能力的影响,以及适当数据比例对性能提升方面的优势,见图4。

对InstructEdit技术在不同设置下性能的视觉比较和分析

图4(a) 比较了使用InstructEdit和MEND在多任务设置下的知识编辑梯度(∇˜𝑢ℓ)。这里,Recent (InstructEdit) 和 Recent (Multi-Task) 展示了在Recent数据集上分别使用InstructEdit和MEND时的梯度。Recent (Single-Task) 显示了MEND在仅针对Recent数据集训练时的结果。这个子图显示了在多任务编辑中,MEND可能会在不同任务间产生显著的编辑区域重叠,而InstructEdit能够更好地控制梯度,促使不同任务的编辑区域有清晰的分离和足够的边界。

图4(b) 展示了任务扩展对InstructEdit的影响。Recent→ZsRE 表示在Recent数据集上训练并在ZsRE数据集上测试,而Recent&CF→ZsRE 表示同时在Recent和CounterFact数据集上训练,然后在ZsRE上测试。这个子图说明了随着训练任务数量的增加,InstructEdit的编辑区域对不同任务几乎没有重叠,并且编辑的可靠性相应提高。

图4(c) 展示了随着任务数量增加,InstructEdit在可靠性和泛化性方面的表现。这个子图通过不同任务数量的对比,展示了InstructEdit如何在更广泛的任务范围内保持其性能,同时在不同任务上实现更好的泛化。

图4(d) 展示了通过为ConvSent数据集提取1,427个条目来平衡ConvSent (Balanced) 的效果。这个子图说明了在数据平衡后,知识编辑梯度方向变得更加规律,从而提高了编辑器在OOD任务上的可靠性。

InstructEdit技术通过指令引导编辑器,有效地解决了大型语言模型在多任务编辑中的泛化问题,提高了编辑的精确性和控制能力。实验结果表明,InstructEdit在多任务编辑、保留编辑以及对未见指令的迁移方面均展现出卓越的性能。实验分析还揭示了指令在控制优化方向、提高OOD泛化能力以及通过适当数据比例提高性能方面的重要作用。这些发现为知识编辑领域提供了新的见解,并为未来的研究和应用奠定了基础。

论文链接:https://arxiv.org/abs/2402.16123

项目链接:InstructEdit: Instruction-Based Knowledge Editing for Large Language Models

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 算法之递归和迭代
  • 学习记录第二十七天
  • XSS-跨站脚本攻击
  • uniapp中键盘抬起挤压界面
  • 笔记本一线品牌有哪些
  • VBA技术资料MF184:图片导入Word添加说明文字设置格式
  • Java TCP练习2
  • 文件上传-导引
  • P2858 [USACO06FEB] Treats for the Cows
  • WordPress建站之头像及字体错误修正
  • Git 常用命令与工作流程总结
  • 域自适应,你适应了嘛?
  • 快讯 | OpenAI 找回场子:chatgpt-4o-latest 刷新多项AI跑分纪录
  • 1.Linux_常识
  • Anaconda安装jupyter notebook、jupyterlab及体验
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【刷算法】从上往下打印二叉树
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • C++类中的特殊成员函数
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • express如何解决request entity too large问题
  • Fabric架构演变之路
  • mysql innodb 索引使用指南
  • Sass Day-01
  • Vim 折腾记
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • web标准化(下)
  • 分享几个不错的工具
  • 码农张的Bug人生 - 初来乍到
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 最近的计划
  • 你对linux中grep命令知道多少?
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (35)远程识别(又称无人机识别)(二)
  • (39)STM32——FLASH闪存
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (计算机网络)物理层
  • (论文阅读11/100)Fast R-CNN
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)jdk与jre的区别
  • (转)linux下的时间函数使用
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .Net mvc总结
  • .NET NPOI导出Excel详解
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET WPF 抖动动画
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET导入Excel数据
  • .NET简谈设计模式之(单件模式)
  • :class的用法及应用