“可塑性损失”(LossofPlasticity)是深度神经网络最常被诟病的缺点之一,也是基于关于深度学习AI系统被认为是它们无法持续学习的原因之一。对于人脑来说,“可塑性”是指产生新的神经元和神经元之间新的连接的能力,这是持续学习的重要基础。随着年龄的增长,大脑的可塑性以巩固所学知识为代价逐渐下降。神经网络是相似的。一个生动的例子是,2020年,热启动训练已经被证明:只有丢弃最初学习的内容,以一次性学习的方式在整个数据集上进行训练,才能达到更好的学习效果。在深度强化学习(DRL)中,AI系统往往也会“忘记”神经网络之前学过的所有东西,只将其中的一部分保存到回放缓冲区,然后从头开始不断学习。这种重置网络的方式也被认为是证明深度学习无法继续学习。那么,学习系统如何保持可塑性呢?近日,强化学习之父RichardSutton在CoLLAs2022大会上发表了题为“MaintainingPlasticityinDeepContinualLearning”的演讲,并提出了他认为可以解决这个问题的答案:连续反向传播算法(ContinualBackprop)。RichardSutton首先从数据集的角度证明了可塑性损失的存在,然后从神经网络内部分析了可塑性损失的原因,最后提出了连续反向传播算法作为解决可塑性损失的方法:重新初始化一小部分有低效用神经元,这种持续注入多样性可以无限期地保持深度网络的可塑性。以下为演讲全文,AI科技评论不改初衷做了整理。1可塑性损失的真实存在深度学习真的能解决持续学习的问题吗?答案是否定的,主要是以下三点:“不可解”是指像非深度线性网络,学习速度最终会很慢;深度学习采用的专业标准化方法只对一次性学习有效,不同于连续学习。学习与谷物背道而驰;回放缓存本身就是承认深度学习不可行的一种极端方式。因此,我们必须找到适合这种新学习模式的更好的算法,摆脱一次性学习的局限。首先,我们使用ImageNet和MNIST数据集做分类任务,实现回归预测,直接测试连续学习的效果,证明监督学习存在可塑性损失。ImageNet数据集测试ImageNet是一个包含数百万张标有名词的图像的数据集。它有1000个类别,每个类别有700张或更多图像,广泛用于类别学习和类别预测。下面是一张鲨鱼的照片,缩小到32*32。这个实验的目的是从深度学习实践中找到最小的变化。我们将每个类别的700张图像分成600个训练样本和100个测试样本,然后将这1000个类别分成两组,生成一个长度为500的二分类任务序列,所有数据集随机乱序。在对每个任务进行训练后,我们评估模型在测试示例上的准确性,并在进行下一个二元分类任务之前取30次独立运行后的平均值。500个分类任务将共享同一个网络,为了去除复杂性影响,任务切换后将重置head网络。我们使用标准网络,3层卷积+3层全连接,但是输出层对于ImageNet数据集来说可能比较小,因为一个任务只用到两个类别。对于每个任务,每100个样本作为一个batch,共12个batch,训练250个epoch。在开始第一个任务之前只进行一次初始化,使用凯明分布来初始化权重。基于动量的随机梯度下降与ReLU激活函数一起用于交叉熵损失。这里出现两个问题:1.绩效将如何在任务序列中演变?2.在哪个任务上表现会更好?最初的第一个任务更好吗?或者后续任务是否会受益于先前任务的经验?下图给出了答案。连续学习的性能由训练步长和反向传播的组合决定。由于是二分类问题,机会概率为50%,阴影区域代表标准差,不显着。线性基准测试使用线性层直接处理像素值,不如深度学习方法有效,差异显着。图注:使用更小的学习率(α=0.001)会得到更高的准确率,并且在前5个任务中性能逐渐提升,但长期来看呈下降趋势。然后我们将任务数增加到2000个,进一步分析学习率对持续学习效果的影响,平均每50个任务计算准确率。结果如下图。图注:α=0.01的红色曲线在第一个任务上的准确率约为89%。一旦任务数超过50个,准确率就会下降。随着任务数量的进一步增加,可塑性会逐渐丧失,最终准确率会低于Linearbenchmark。当α=0.001时,学习速度变慢,可塑性会急剧下降,准确率仅略高于线性网络。因此,对于好的超参数,任务之间的可塑性会衰减,精度会低于只使用一层神经网络。红色曲线显示的几乎是“灾难性的可塑性损失”。训练结果还取决于迭代次数、步数和网络大小等参数。图中每条曲线在多处理器上的训练时间为24小时,这对于系统实验来说可能不太实用。接下来,我们选择MNIST数据集进行测试。MNIST数据集测试MNIST数据集一共包含60000张手写数字图像,有0-9的10个类别,是一张28*28的灰度图。古德费洛等人。通过洗牌或随机排列像素创建了一个新的测试任务。右下角的图像是生成的排列图像的示例。我们使用这种方法来生成整个任务序列。在每个任务中,随机呈现6000张图像。这里没有添加任务内容,网络权重只在第一个任务之前初始化一次。我们可以使用onlinecross-entropyloss进行训练,继续使用accuracy指标来衡量持续学习的效果。神经网络结构为4层全连接层,前3层神经元个数为2000个,最后一层神经元个数为10个。由于MNIST数据集的图像是居中缩放的,所以卷积运算可以省略。所有分类任务共享同一个网络,使用无动量的随机梯度下降,其他设置与在ImageNet数据集上测试的相同。图注:中图是在任务序列上独立运行30次并取平均值的结果。每个任务有6000个样本。由于是分类任务,一开始随机猜测的准确率为10%。模型学习到排列规则的图像后,预测准确率会逐渐上升,但切换任务后,准确率会下降到10%,所以整体趋势是不断波动的。右图是模型在各个任务上的学习效果,初始准确率为0,随着时间的推移效果逐渐提升。第10个任务的准确性优于第1个任务,但第100个任务的准确性下降,第800个任务的准确性甚至低于第一个任务。为了弄清楚整个过程,后续需要着重分析凸起部分的准确性,取平均值得到中间图像的蓝色曲线。可以明显看出,一开始准确率会逐渐上升,然后趋于平稳,直到第100个任务。那为什么在第800个任务时准确率急剧下降呢?接下来,我们在更多的任务序列上尝试了不同的步长,以进一步观察它们的学习效果。结果如下图所示:注:红色曲线采用与之前实验相同的步长值,准确率确实在稳步下降,可塑性损失比较大。同时,学习率越大,可塑性下降越快。所有步幅值的可塑性都有很大损失。另外,隐藏层的神经元数量也会影响准确率。棕色曲线中的神经元数量为10,000。由于神经网络拟合能力增强,此时准确率会下降的很慢,可塑性还是有损失的,但是网络规模越大,规模越小,可塑性下降的越快。那么从神经网络的角度来看,为什么会出现可塑性损失呢?下图解释了原因。可以发现,“死亡”神经元比例过高,神经元权重过大,神经元多样性丧失是可塑性丧失的原因。图注:横轴仍然代表任务编号。第一张图的纵轴表示“死亡”神经元的百分比。“死”神经元是指输出和梯度始终为0的神经元,不再预测网络的可塑性。.第二张图的纵轴代表权重大小。第三张图的纵轴表示剩余隐藏神经元数量的有效水平。2现有方法的局限性我们分析了除反向传播之外的现有深度学习方法是否有助于保持可塑性。结果表明,L2正则化方法减少了可塑性损失,在此过程中将权重收缩为0,从而可以动态调整和保持可塑性。收缩和扰动方法类似于L2正则化,但也会在所有权重中添加随机噪声以增加多样性,而可塑性损失很小。我们还尝试了其他在线规范化方法,这些方法开始时相对较好,但随着学习的继续,可塑性严重受损。dropout方法的性能更差。我们随机将一些神经元设置为0进行再训练,发现可塑性损失急剧增加。各种方法也对神经网络的内部结构产生影响。使用正则化会增加“死亡”神经元的百分比,因为将权重缩小到0,如果它们保持在0,将导致输出为0,神经元将“死亡”。而收缩和扰动会为权重添加随机噪声,因此不会有太多“死”神经元。normalization的方法也有很多“死”的神经元,好像走错了方向,dropout也是类似的。权重随任务数量变化的结果更合理。使用正则化会得到很小的权重。收缩和扰动在正则化的基础上增加了噪声。大的。但是对于L2正则化以及收缩和扰动,其相对较低的隐藏神经元数量有效水平表明它在保持多样性方面表现不佳,这也是一个问题。Slow-ChangingRegression(SCR)我们所有的想法和算法都源于对Slow-ChangingRegression的实验,这是一个专注于持续学习的新理想化问题。在这个实验中,我们的目标是实现由具有随机权重的单层神经网络形成的目标函数,隐藏层神经元是100个线性阈值神经元。我们不做分类,我们只是生成一个数字,所以这是一个回归问题。每10,000个训练步骤,我们只从输入的底部15中选择1位进行翻转,因此这是一个缓慢变化的目标函数。我们的解决方案是使用相同的网络结构,只有一个隐藏层神经元,同时保持激活函数可微,但我们将有5个隐藏神经元。这和RL中类似,agent探索的范围远小于交互环境,所以只能做近似处理,尽量随着目标函数的变化改变近似值,这样会更容易做一些系统的实验。图注:输入为21位随机二进制数,第1位为输入常数偏差,值为1,中间5位为独立同分布的随机数,其余15位为缓变常数,输出是一个实数。权重随机为0,可以随机选择+1或-1。我们进一步研究了改变步长值和激活函数对学习效果的影响,这里使用了tanh、sigmoid和relu等激活函数:以及激活函数形式对所有学习效果的影响algorithms:同时在步长和激活函数发生变化的情况下,我们也系统地分析了Adam反向传播的影响:最后,使用不同的激活函数后,基于Adam机制的不同算法之间的误差变化:以上实验结果表明,深度学习方法已经不适合连续学习了。遇到新问题时,学习过程会变得很慢,深度的优势就体现不出来。深度学习中的标准化方法只适用于一次性学习,我们需要改进深度学习方法才能将其用于持续学习。3Continuousbackpropagation卷积反向传播算法本身会是一个很好的连续学习算法吗?我们认为不是。卷积反向传播算法主要包括两个方面:小随机权重初始化和每个时间步的梯度下降。尽管它最初会生成小的随机数来初始化权重,但它不会自行重复。理想情况下,我们可能需要一些可以随时进行类似计算的学习算法。那么我们如何让卷积反向传播算法不断学习呢?最简单的方法是有选择地进行重新初始化,比如在执行多项任务之后。但与此同时,重新初始化整个网络在持续学习中可能并不合理,因为这意味着神经网络正在忘记它所学的一切。所以我们最好选择性地初始化神经网络的一部分,比如重新初始化一些“死亡”的神经元,或者根据效用对神经网络进行排序,重新初始化效用较低的神经元。随机选择初始化的思想与Mahmood和Sutton在2012年提出的生成和测试方法有关,只需要生成一些神经元并测试其实用性即可。连续反向传播算法在这两个概念之间架起了一座桥梁。在生成和测试方法上存在一些局限性,只有一个隐藏层和一个输出神经元,我们将其扩展为多层网络,可以通过一些深度学习方法对其进行优化。我们首先考虑将网络设置为多层而不是单一输出。之前的工作提到了效用的概念。由于只有一个权重,所以这个效用只是权重层面的一个概念,但是我们有多个权重。最简单的概括是考虑权重总和级别的效用。另一个想法是考虑特征的活性,而不仅仅是输出权重,因此我们可以将权重之和乘以平均特征激活函数,从而分配不同的比例。我们要设计能够不断学习并保持快速运行的算法,我们在计算效用时也会考虑特征的可塑性。最后,特征的平均贡献被转移到输出的偏差中,减少了特征去除的影响。未来的改进主要有两个方向:(1)我们需要一个全局的效用度量来衡量神经元对所表示的整个功能的影响,而不仅仅是局限于输入权重、输出权重和激活函数等局部度量;(2)我们需要进一步改进生成器,目前只是从初始分布中采样进行初始化,还要探索可以提高性能的初始化方法。那么连续反向传播在保持可塑性方面表现如何呢?实验结果表明,在在线置换MNIST数据集上训练时,连续反向传播完全保留了可塑性。下图中的蓝色曲线显示了这个结果。图注:右图显示了不同替换率对连续学习的影响,例如1e-6的替换率表示每个时间步替换1/1000000个表示。即假设有2000个特征,每500步,每一层都会替换一个神经元。这个更新速度很慢,所以替换率对超参数不是很敏感,不会明显影响学习效果。接下来,我们需要研究连续反向传播对神经网络内部结构的影响。连续反向传播几乎没有“死亡”神经元,因为效用因子考虑了平均特征激活,如果一个神经元“死亡”,它会立即被替换。由于我们不断更换神经元,我们得到了权重更小的新神经元。由于神经元是随机初始化的,因此它们也相应地保留了更丰富的表征和多样性。因此,连续反向传播解决了所有因MNIST数据集缺乏可塑性而导致的问题。那么,连续反向传播能否扩展到更深的卷积神经网络呢?答案是肯定的!在ImageNet数据集上,连续反向传播充分保留了可塑性,模型最终准确率在89%左右。事实上,在初始训练阶段,这些算法的性能不相上下。上面说到替换率的变化很慢,任务数足够大的时候逼近效果更好。这里我们以“SlipperyAnt”问题为例,展示一个强化学习的实验结果。“SlipperyAnt”问题是non-stationaryreinforcement问题的扩展,它与PyBullet环境基本相似,只是地面和agent之间的摩擦每1000万步就会发生变化。我们实现了基于连续反向传播的PPO算法的连续学习版本,可以有选择地对其进行初始化。PPO算法与连续PPO算法的对比结果如下图所示。图注:PPO算法一开始表现不错,但随着训练的进行性能持续下降,引入L2算法和shrinkageandperturbation算法后会有所缓解。另一方面,连续PPO算法表现相对较好,保留了大部分可塑性。有趣的是,PPO算法训练出来的agent只能吃力地走路,而连续PPO算法训练出来的agent却可以跑得很远。4结论深度学习网络主要针对单次学习进行了优化,因为它们可能完全无法进行连续学习。像归一化和DropOut这样的深度学习方法可能对持续学习没有帮助,但在此之上的小改进可能非常有效,例如持续反向传播。连续反向传播根据神经元的效用对网络特征进行排序,特别是对于递归神经网络,可能有更多的方法可以改进排序方法。强化学习算法利用策略迭代的思想,虽然存在持续学习问题,但保持深度学习网络的可塑性为RL和基于模型的RL开辟了巨大的新可能性。
