健忘是一种病态,善忘是一种智慧。 ——写在前面

1. 背景
当你在看这篇博客的时候,就正在使用一个复杂的生物神经网络。你有一个约为876亿个神经元的高度互连的大脑帮你完成阅读、呼吸、运动和思考。你的每一个生物神经元都是生物组织和化学物质的有机结合。若不考虑其速度的话,可以说每个神经元都是一个复杂的微处理器。你的某些神经结构是与生俱来的,而其他一些则是在实践中形成的。

科学家们对生物神经网络工作机理有一定的认识。一般认为,包括记忆在内的所有生物神经功能,都存储在神经元和及其之间的连接上。学习被看作是在神经元之间建立新的连接或对已有的连接进行修改的过程。 早在20世纪60年代,科学家们就基于对生物神经网络工作机理认识,期望构造出像人类大脑一样容纳智慧、意识、记忆的人工神经网络。但均以失败告终。就连被大家推向神坛的深度学习在结构上、以及功能与生物神经网络都相去甚远。

与生物神经网络相比较,现有的深度学习存在诸多缺陷。灾难性遗忘就是缺陷之一。所谓的灾难性遗忘:即学习了新的知识之后,几乎彻底遗忘掉之前习得的内容。它使得人工智能体缺乏像生物一样不断适应环境以及增量式(持续)学习的能力。早在神经网络的远古时代,研究人员[1-2]就已经发现人工神经网络中存在这一问题了。直到现在,仍然有许多研究人员(例如… Goodfellow, yoshua Bengio等[3])常试解决(缓解)深度学习中的灾难性遗忘问题。

2. What and Why 灾难性遗忘
首先回答第一个W: 什么是灾难性遗忘?
上面已经给出灾难性遗忘的定义,此处复述:灾难性遗忘即学习了新的知识之后,几乎彻底遗忘掉之前习得的内容。

具体描述:我们搭建了一个深度神经网络来学习识别各种动物。假定我们遇到了一个非常吝啬的数据提供者,每次只提供一种动物的数据,并在学习完成识别该动物后,将数据收缴上去;然后才给下一个动物的训练数据。有意思的现象出来了,这个神经网络在学习识别小狗后,让它识别之前学习过的小猫,它竟然识别不出来。这就是灾难性遗忘,它一直是深度学习领域一个比较严重的问题。

基于深度学习的智能体们就像陈列在书架上的一本本工具书,它利用预先收集好的静态的数据集学习,在学习过程结束后就是一种静态(没有生命)的存在。无法对新数据进行学习,如果硬塞给它学习,就会出现灾难性遗忘问题。当然,我们可将新数据加入到历史训练数据集中,用包含新旧训练数据的数据集对网络进行重新训练,可想而知,这样做法的学习效率是有多低!

在现实世界中,很多任务不可能一次性得到所有的训练数据(例如开放的环境、非特定的任务)。这就使得神经网络必须能够利用不断产生的新数据持续学习新知识,并且不遗忘之前所学过的重要内容。然而,持续学习却是人类以及其他生物与生俱来的能力。只有解决了灾难性遗忘问题,人工神经网络才有可能变成像人类一样强大的智能体,而不是摆在书架上一本本静态的工具书。

注意:深度强化学习的训练过程似乎不需要预先收集所有的训练数据,但是它的环境与任务都是封闭的。深度神经网络的结构是针对任务手工调整确定,并在训练、测试与利用时保持不变。我想强调的是,深度强化学习披上了强化学习利用机器人与环境交互的数据进行学习的外衣,让我们有种深度学习具备持续学习的能力,不存在灾难性遗忘的问题的错觉。首先,大部分深度强化学习成功的例子中的任务是特定的、环境的状态空间也是确定的。机器人在这样一个环境中,学习这一任务,相当于有一个已经确定的有边界的数据集,每一个训练数据都是按特定的概率分布在这个数据集中采样得到的。并且,类似于有监督的深度学习,喂给深度强化学习的交互数据也是会重复出现,通过对神经元不断的刺激完成学习的。最近,有研究人员利用深度强化学习对多任务进行学习,作者明确指出首先需要面的问题就是深度神经网络的灾难性遗忘问题,里面有非常明显的缓解灾难性遗忘问题的机制。

接着回答第二个W: 为什么会灾难性遗忘?
深度学习的灾难性遗忘问题是深植于它的基因,是无法解决的问题,只能通过各式各样的机制、策略来缓解。

为什么说是深植于它的基因里呢?神经网络由网络结构与网络参数构成。不凑巧的是,深度学习在结构与参数两方面都植入了灾难性遗忘的基因:

  • 深度学习的结构一旦确定,在训练过程中很难调整。神经网络的结构直接决定学习模型的容量。固定结构的神经网络意味着模型的容量也是有限的,在容量有限的情况下,神经网络为了学习一个新的任务,就必须擦除旧有的知识。
  • 深度学习的隐含层的神经元是全局的,单个神经元的细小变化能够同时影响整个网络的输出结果。另外,所有前馈网络的参数与输入的每个维度都相连,新数据很大可能改变网络中所有的参数。我们知道,对于本身结构就已经固定的神经网络,参数是关于知识的唯一变化量。如果变化的参数中包含与历史知识相关性很大的参数,那么最终的效果就是,新知识覆盖了旧的知识。


其它类型的人工神经网络如果也存在灾难性遗忘问题,也逃不掉以上两种原因(或其中之一)。

备注:那么,有没有不含灾难性遗忘问题的人工神经网络,当然有:例如增量式径向基函数网络、自组织增量学习网络等代表的宽度学习就不存在灾难性遗忘问题。但它们又存在其他非常严重的问题,使其不具备到类人的持续学习能力,本文暂不表。

3. 现有的解决方法综述
现有的灾难性遗忘问题解决方法大致可以分为两派:参数派与结构派。其中,参数派主张对深度学习进行修补,结构派主张提出新的人工神经网络模型。此部分主要针对深度学习的灾难性遗忘问题进行综述,因此主要介绍参数派的方法,不过多涉及结构派。

新数据会修改与历史知识相关的重要神经元的参数,这是造成深度学习灾难性遗忘的根本原因。大致有四种方法:1) 利用新数据训练的同时,不断用包含历史数据相关的信息刺激神经元,形成一种竞争,从而使历史知识相关的重要神经元的参数尽可能少的受影响,同时也保证了新知识能够被学习;通常称为Self-refreshing Memory Approaches[5];2)在开始训练新数据前,利用旧网络对新数据进行预测得到虚拟的训练数据【可以看作是旧网络的一个回忆】,目标函数中包含新旧网络的参数约束,每训练一个新数据,利用所有的虚拟数据约束旧参数,抑制遗忘;这类方法被称为知识蒸馏法[6];3)[7]从另一个角度来约束参数的变化,文中认为参数是一个概率分布,只要在这个分布的核心地带,对于该任务就是可行的,不同的任务对应不同的概率分布,如果能找到两个分布重叠的部分,并将参数约束到这个区域,那么这一参数不就可以对这些任务都有效吗,这类方法被称之为Transfer Techniques法[7]。4)第四类,我称它为其它方法,例如保留所有的历史数据,研究评判重要数据的技术,只保留那些重要的,信息量大的数据。这只是保留所有历史数据的一个改进版本,只要评判方法合理,肯定也能缓解灾难遗忘问题,本文对这一类方法就不介绍。

                           

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐