论文浅尝 | 记忆力强还是健忘?深入探究语言模型的知识记忆机制

news/2024/2/25 12:05:33/文章来源:https://blog.csdn.net/TgqDT3gGaMdkHasLZv/article/details/135614119

eb8175ade8a0ecd795812956cf54177e.png

笔记整理:方润楠,浙江大学硕士,研究方向为自然语言处理

链接:https://arxiv.org/abs/2305.09144

摘要

近年来,大规模预训练语言模型展示出惊人的记忆能力,相比之下,未经预训练的普通神经网络存在着灾难性遗忘的问题。为了研究这种记忆与遗忘出现的原因,并探求语言模型的记忆机制,作者通过控制模型类别,学习策略,知识分布等方面进行了全面实验。作者发现:1)普通语言模型容易遗忘;2)预训练能够使语言模型记忆力变强;3)知识相关性和多样性会影响记忆形成。

总体介绍

b142c9811b2bb50f64aeb20777227916.png

预训练语言模型的出现,相对于之前传统神经网络模型,展现出了强大的记忆能力,作者为了探究语言模型的记忆机理,采用的知识问答的测试过程,使用从Wikidata中抽取的LAMA数据集三元组作为事实知识进行学习,一共包括23种关系,每种关系包括10000个知识,在训练过程中,将知识三元组转化为自然语言进行学习,如<Steve Jobs, birthplace, California>转化为“Steve Jobs was born in California。通过事实知识的询问进行判断模型是否记住了之前的知识,并且绘制了Figure 1所示的记忆曲线,并根据曲线得出了3个结论,

1)普通语言模型容易遗忘;

2)预训练能够使语言模型记忆力变强;

3)知识相关性和多样性会影响记忆形成。

普通语言模型

d887a21718e95547b32680be0a003a4d.png

在普通语言模型上进行知识记忆实验,如上图,虚线为目标知识,得到对应的知识记忆曲线,语言模型在刚学完目标知识时,曲线明显上升,说明语言模型具有记忆能力,并且能够记住刚学会的知识,但是随着学习过程的更新,获得新知识后,对老知识的遗忘非常的快,甚至在有些情况下有下降到0的表现,证实了普通语言模型的灾难性遗忘的特点,并且随着学习过程的重复,普通语言模型并不能够有进步,表明重复学习对普通语言模型的效果有限。总得来说普通语言模型的记忆特点是短且易遗忘。

但在有些情况下,学习新知识后,记忆曲线的下降并没有那么的快,作者找出这些点,发现此时学习的新知识和目标知识相关性较高,具体过程如Figure3中的红线,可以发现记忆曲线与知识相关性高度拟合,进一步证明了普通语言模型的表现仅与刚学的知识的内容有关,普通语言模型记忆力差。

预训练语言模型

89a3fba746397b221da3c57402a326ec.png

在预训练语言模型上进行了相同的实验,如Figure 5中的橙色曲线,蓝色曲线为普通语言模型的表现,相对于普通语言模型,预训练语言模型的在初期和传统语言模型的表现类似,也出现了学习新知识后在目标知识上的准确率快速下降,并且随着重复学习,预训练模型的准确率不断地提高,并且新知识的学习并不会引起模型准确率明显的下降,总的来说预训练语言模型的记忆是长期的,强健的,并且重复学习对模型的准确率提高有明显的帮助。

fba1958f92ab3516cfdad8940964a4f8.png

为了验证预训练是使得预训练语言模型和普通语言模型产生区别的原因,并且定量的分析预训练如何影响模型的记忆能力,作者抽离出若干个与预训练次数不同的语言模型,在相同的知识记忆测试进行实验。在Figure 7中,在预训练次数较少时,预训练模型与普通模型的区别不大,随着预训练次数的不断提高,特别是当预训练次数大于80000时,模型的准确率明显提高,并且重复学习能够明显提高模型的记忆能力,由此得出结论,预训练是使得模型具有强大记忆力的原因。

知识相关性和多样性对记忆形成的影响

在预训练模型的重复学习过程中,虽然模型的准确率随着重复学习的次数不断提高而提高,但是还是会存在在学习完部分知识后,模型准确率反而下降,在单独抽取出这些知识后,作者发现这些知识都是与目标知识高度相关的知识,由此作者提出了一个猜想,知识的相关性会带来竞争。为此作者设计了实验,统一语言模型分别学习知识相关度高的知识集合,和知识相关度低的知识集合,发现在知识相关度低的知识集合上模型的表现明显好于另一类,并且在相关度较低的出现的记忆退化也明显较少。

23c78a693debc4cd0204b7c79a1f4b4b.png

285179fe045567edfa78e33a856bac02.png

d0fae54574157dd79a647027ea9aba28.png

通过提高每次学习知识的种类,通过两次A&B的方式来取代一次A,一次B的知识学习模式,作者通过对比每次学习一种类型知识和多种类型知识,发现随着知识的多样性的上升,模型的记忆曲线也不断地提高,且灾难性遗忘的回落出现次数也减少,表明每次学习过程中知识的多样性对记忆的形成有正向作用。

总结与展望

本文研究了普通语言模型和预训练语言模型的记忆机制,发现:1)普通语言模型容易遗忘;2)预训练可使语言模型记忆能力增强;3)知识相关性和多样性显著影响记忆形成。这些发现有助于启发许多其他研究。首先,语言模型的记忆机制可以为以前的许多研究提供有用的解释,如灾难性遗忘的原因和预训练的影响。其次,通过揭示影响预训练语言模型记忆的几个关键因素,可以为PLM设计更稳定可靠的学习算法。最后,作者发现语言模型的记忆模式可能类似于人脑,这为连接人工智能和心理学的研究提供了启发。

本文还提出了许多未来研究的开放性问题:1)预训练为何会导致如此显著的遗忘-保留转变,预训练期间是否还有其他同步的转变?2)除了重复学习、预训练和知识多样性,是否还有其他关键因素影响记忆能力?3)大脑和语言模型的记忆之间有哪些关键差异?实现类似于大脑的记忆需要哪些能力?


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

c458212c623963fd52b23b19bb519e31.png

点击阅读原文,进入 OpenKG 网站。

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

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

相关文章

Web - Angular 的 AJAX 与 REST

AJAX AJAX 是用于描述网页与网络服务器互动的一系列技术的术语。它不是一项新技术&#xff0c;而是对长时间以来已存在技术的应用。随着主要网站&#xff08;例如谷歌&#xff09;展示其优势&#xff0c;它作为一种开发技术变得流行。AJAX 这个术语被创造出来&#xff0c;用以描…

深度解析JVM类加载器与双亲委派模型

概述 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的核心&#xff0c;其中类加载器和双亲委派模型是JVM的重要组成部分。本文将深入讨论这两个概念&#xff0c;并解释它们在实际开发中的应用。 1. 什么是类加载器&#xff1f; 类加载器是JVM的一部分&#xff0c;负…

鸿蒙APP闪退的问题

解决鸿蒙&#xff08;HarmonyOS&#xff09;应用闪退的问题通常需要进行一系列的调查和分析。以下是一些建议的步骤&#xff0c;可以帮助你定位和解决鸿蒙应用闪退的原因&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff…

还在质疑js的性能,人家都干到过第一了。

前两天看到一个 just.js&#xff0c;感到了 Techempower 排名第一&#xff0c;甚至打败了 asp.net core&#xff0c;还有drogn&#xff0c;不知道背后什么原因&#xff0c;反正挺震撼的。 现在开始慢慢验证Atwood定律&#xff1a;任何能够用JavaScript实现的应用系统&#xf…

如何在 Python3 中使用变量

介绍 变量是一个重要的编程概念&#xff0c;值得掌握。它们本质上是在程序中用于表示值的符号。 本教程将涵盖一些变量基础知识&#xff0c;以及如何在您创建的 Python 3 程序中最好地使用它们。 理解变量 从技术角度来说&#xff0c;变量是将存储位置分配给与符号名称或标…

java自动化将用例和截图一起执行测试放入world中直接生成测试报告【搬代码】

1.首先我们得用例写好之后放入文档中&#xff0c;把不用的案例类型、前置条件去掉之后&#xff0c;如图&#xff1a; 放到桌面后&#xff0c;先看执行结果&#xff1a; 首先&#xff0c;我们先创建一个时间&#xff0c;这个时间主要是给图片创建名称&#xff0c;并且要在插入…

【LabVIEW FPGA入门】没有CompactRIO时进行编程测试

1.新建一个空白项目。 2.新建cRIO终端。 要添加仿真的远程实时目标&#xff0c;请选择项目名称&#xff0c;右击并选择新建>>目标和设备(Targets and Devices)。 3.新建终端和设备&#xff0c;选一个cRIO型号 接下来&#xff0c;当添加目标和设备窗口出现时&#xff0c;请…

【数据结构】常见八大排序算法总结

目录 前言 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 6.1Hoare版本 6.2挖坑法 6.3前后指针法 6.4快速排序的递归实现 6.5快速排序的非递归实现 7.归并排序 8.计数排序&#xff08;非比较排序&#xff09; 9.补充:基数排序 10.总结…

Jmeter 性能-监控服务器

Jmeter监控Linux需要三个文件 JMeterPlugins-Extras.jar (包&#xff1a;JMeterPlugins-Extras-1.4.0.zip) JMeterPlugins-Standard.jar (包&#xff1a;JMeterPlugins-Standard-1.4.0.zip) ServerAgent-2.2.3.zip 1、Jemter 安装插件 在插件管理中心的搜索Servers Perform…

散列函数,哈希表hash table

附上一句话&#xff1a;我知道大家可能曾经了解过这个散列表了&#xff0c;我发现&#xff0c;如果多看几个相关的视频&#xff0c;从不同的表述方式和不同的理解角度来理解这个问题&#xff0c;我会明白的更透彻&#xff0c;也有更多新的收获&#xff0c;尤其是对这个算法的应…

宁夏银行关键系统基于OceanBase的创新实践

宁夏银行成立于 1998 年&#xff0c;是宁夏第一家“宁”字号地方商业银行&#xff0c;西部地区第一家以省级行政区命名的地方商业银行。2016 年&#xff0c;被中国人民银行评为宁夏地区系统性重要银行。目前&#xff0c;全行设分支机构 97 家&#xff0c;其中总行营业部 1 家&a…

制造工厂ERP系统:从数字销售-生产到财务管理,掌握企业数字化十大核心!

在快速发展的数字化时代&#xff0c;企业&#xff08;尤其是传统生产制造行业&#xff09;面临着诸多挑战与机遇。无论是客户体验、供应链管理还是内部流程优化&#xff0c;数字化都在发挥着关键作用。为了更好地应对数字化带来的挑战和机遇为了更好地应对市场变化和提高竞争力…

打造高品质家具的必选!数控开料机为何备受推崇?

随着科技的不断进步&#xff0c;数控开料机已经成为了木材加工行业中的首选设备。 一、数控开料机在木材加工行业中的优势 高效、精准的加工效果 数控开料机采用高精度的数控技术和高功率的机械传动系统&#xff0c;可以实现对木材的精确开料和高效加工。与传统的手工操作相…

【RabbitMQ】RabbitMQ高级:死信队列和延迟队列

目录 设置TTL&#xff08;过期时间&#xff09;概述RabbitMQ使用TTL原生API案例springboot案例 死信队列概述原生API案例springboot案例 延迟队列概述插件实现延迟队列安装插件代码 TTL实现延迟队列实现延迟队列优化 设置TTL&#xff08;过期时间&#xff09; 概述 在电商平台…

51单片机-电子密码锁

实物演示效果&#xff1a; https://www.bilibili.com/video/BV1xh4y1K7uV/?vd_source6ff7cd03af95cd504b60511ef9373a1d 电子密码锁的主要功能 1.按键设置6位密码&#xff0c;输入密码若密码正确&#xff0c;则锁打开。显示open&#xff01; 2.密码可以自己修改&#xff0…

Ubuntu 22.04安装使用easyconnect

EasyConnect 百度百科&#xff0c;EasyConnect能够帮助您在办公室之外使用公司内网的所有系统及应用。在您的公司部署深信服远程应用发布解决方案后&#xff0c;您的公司所有业务系统及应用都可以轻松迁移至移动互联网上。您可以通过手机、PAD等智能移动终端随时随地开展您的业…

【Leetcode】82. 删除排序链表中的重复元素 II

文章目录 题目思路代码 题目 82. 删除排序链表中的重复元素 II 题目&#xff1a;给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,…

带你解析git的基础功能(二)

文章目录 一.前言二.什么是git的分支管理三.git的分支管理的相关操作3.1 创建分支3.2 切换分支3.3 合并分支 和合并冲突3.4 删除分支 四.分支管理策略第一种分支策略第二种分支策略 总结 一.前言 掌握 Git 分⽀管理&#xff0c;从分⽀创建&#xff0c;切换&#xff0c;合并&am…

Visual Studio 2019 ctrl+f 呼出查找和替换窗口

有时候 ctrlshiftf 呼出查找和替换窗口不起作用&#xff0c;可能和其它程序的快捷键冲突&#xff0c;解决方案&#xff1a; ------------英文版本------------ 依次点击VS菜单栏中的 Tools - Options - Environment - Keyboard: 1. 在右侧的 Show commands containing: 文本框输…

【深度学习】RTX2060 2080如何安装CUDA,如何使用onnx runtime

文章目录 如何在Python环境下配置RTX 2060与CUDA 101. 安装最新的NVIDIA显卡驱动2. 使用conda安装CUDA Toolkit3. 验证onnxruntime与CUDA版本4. 验证ONNX需求版本5. 安装ONNX与onnxruntime6. 编写ONNX推理代码 如何在Python环境下配置RTX 2060与CUDA 10 RTX 2060虽然是一款较早…