脉冲神经网络(spiking neural networks,SNNs)因其局部无监督的脉冲时间依赖可塑性(spike timing dependent plasticity,STDP)和稀疏计算等生物合理的潜在能力而受到越来越多的关注[1-3].研究表明,通过STDP学习规则,侧向抑制[4]和自适应阈值[5]的融合,脉冲神经网络可以成功地进行多个样本交叉训练的离线式无监督学习[6-8].然而,当脉冲神经网络按顺序接受多个任务的训练时,它们往往会遭受灾难性遗忘,即学习新任务会显著降低之前所学任务的性能.人类和其他高级动物能够在其一生中学习大量任务,而不会忘记以前学习的信息.这种学习而不忘记过去知识的能力,称为连续学习,是设计脉冲神经网络的一个关键要求[9],也是脉冲神经网络未来一个重要的研究方向[10].神经科学中关于海马学习的一些研究已经证明,记忆痕迹会在一段时间内衰减[11-14].具体而言,参与维持记忆的长时程增强(long term potentiation,LTP)已被证明不是永久性的,这种增强反应最终会衰减到一定的基准水平[13-14].虽然LTP衰减的潜在机制尚不清楚,但一些神经科学家认为这种衰减与遗忘有关[12-14].受这些研究结果的启发,最近提出了将权值衰减机制与STDP相结合建立模型以克服SNNs灾难性遗忘的自适应突触权值方法(adaptive synaptic plasticity,ASP)[15-16].利用该方法,在每个任务包含一个不同图像类,总共10个任务的MNIST数据集上,具有6 400个兴奋性神经元的SNNs顺序训练这些任务的精度可以达到95.然而,该方法还面临如下一些问题:为了使连续学习精度达到90左右,输出层需要至少6 400个兴奋性神经元,这样大的网络规模会消耗大量的内存和时间,在实时在线等资源有限的条件下很难得到实际应用;该方法仅对10个任务的简单数据集进行了测试,然而人类和高级动物可能会遇到很多必须学习和记忆的不同任务和环境,单靠自适应突触可塑性方法能否支持更多任务的连续学习尚不确定.对小鼠运动皮层的单个L5锥体神经元的在体实验表明,不同的运动学习任务会触发不同的顶端簇分支产生Ca2+脉冲,这种空间分隔对突触可塑性的诱导和维持至关重要[17].任务依赖的信号不仅允许不同的皮层区域以任务依赖的方式处理信息,而且选择性地抑制大部分网络[17-19].这种机制使不同任务对应的神经元群之间只有部分重叠甚至不重叠,从而有利于记忆保持并克服灾难性遗忘[20-21].受这些研究成果的启发,将网络输出层分割成具有相同输出神经元个数的多个子网络,每个子网络的输出神经元互不重叠,子网络数与任务数相同,称该方法为网络分割方法.在此基础上,提出了一个把网络分割与ASP[15]相结合的新方法SplitASP.1 SplitASP方法1.1 网络结构这里采用与文献[6]相同的神经元模型和网络结构.网络包含输入层、输出层和抑制层,如图1所示.输入层是一个神经元阵列,每个神经元对应要处理图像的一个像素;输出层包含数量可变的兴奋性神经元;而抑制层具有和输出层相同数量的抑制性神经元.每个输入图像被输入层神经元转换为Poisson脉冲序列,脉冲频率与对应像素的强度成正比.这些脉冲序列以全连接的方式作为输出层每个兴奋神经元的输入.输出层的兴奋性神经元以一对一的方式与抑制层的抑制性神经元连接,即兴奋性神经元的每个脉冲都会触发相应抑制神经元的一个脉冲.每个抑制性神经元与除了给它传递脉冲信息的兴奋神经元外的所有其他兴奋性神经元连接.训练完成后,依据对数据集每个样本的最高平均响应为每个兴奋性神经元分配一个类别标签.输入层与输出层之间的连接权值通过ASP学习规则[15]动态调整.输出层到抑制层、抑制层再到输出层的连接权值不可调,固定权值的设置使产生脉冲的兴奋性神经元抑制所有其他兴奋性神经元的脉冲,从而产生赢者通吃的侧抑制竞争机制.10.13245/j.hust.230052.F001图1脉冲神经网络结构1.2 网络分割与ASP的融合设输入层包含NI个神经元,输出层包括NO个神经元,对于具有T个任务的数据集,将输出层神经元分割为T个互不重叠的子模块,每个子模块包含NO/T个随机选择的神经元.在这样的网络分割后,输出层神经元形成了一个与任务标识t一一对应的子模块集G={G1,G2,…,GT},且在训练和测试过程中保持不变.每个任务的训练和测试中,只有当前任务对应的神经元Gt不被钳制,其他神经元则都被钳制而不产生脉冲,这使得只有Gt中的神经元参与当前任务的训练和测试.网络分割任务完成后,按顺序通过ASP权值更新规则学习每个任务.当学习第t个任务时,训练过程的数据为当前任务的样本,测试过程的数据包括1~t中所有测试样本.提出的SplitASP方法详见算法1.2 实验与结果本实验是在32 GiB内存的联想手提电脑和64位Win10操作系统下,通过BindsNET程序包完成的.BindsNET是基于Python和PyTorch开发的专门用于脉冲神经网络机器学习的Python函数库[30],这里基于BindsNET完成了ASP和SplitASP的程序设计.为了验证SplitASP的性能,针对如下一些关键问题进行了实验:a.在输出神经元数较少的情况下能否实现有效的连续学习;b.在单个任务相对复杂的情况下,能否保证良好分类效果;c.在多任务情况下能否依然有效地克服灾难性遗忘.2.1 数据集与实验设置实验选取了3个普遍采用的数据集,数据集的基本信息见表1.原始的MNIST数据集[31]包括 7×104张28×28像素的灰度图,其中训练集和测试集分别有6×104张和1 000张0~9共10个类别的图像.原始的FashionMNIST数据集与原始MNIST数据集具有相同数量的训练集、测试集和图像类别,每张图像也是28×28像素的灰度图,不同的是FashionMNIST的图像不是手写数字而是服装,因此每个图像比MNIST的更复杂.原始的EMNIST数据集不仅包括手写数字,而且包括手写字母,因此数据集包含的类别要远多于MNIST的类别,采用的Balanced EMNIST数据集共有47个图像类别.10.13245/j.hust.230052.T001表1实验数据数据集类别数任务数训练集数/102测试集数/102类型数据维数MNIST1010600100Digits28×28×1Split MNIST105600100Digits28×28×1FashionMNIST1010600100Fashions28×28×1BalancedEMNIST47471 128188Digits&Letters28×28×1算法1 所提出方法(SplitASP)的计算流程输入 输入层的神经元数、输出层的神经元数、任务数、训练样本、测试样本输出 记录所有预测结果(Pv)步骤1参数初始化;步骤2对每个任务随机生成一个独立的子网络;步骤3训练和测试.对每个任务首先通过该任务的训练集训练相应的子网络,然后基于测试集测试每个已训练任务的预测精度.为了多任务无监督连续学习,上述3个原始数据集均按照每个任务包含一个图像类别的方式进行了改造.改造后的MNIST数据集具有10个任务,每个任务包含一类随机选择的手写数字.改造后的FashionMNIST数据集具有10个任务,每个任务包含一类随机选择的服装.改造后的Balanced EMNIST数据集共有47个任务,每个任务包含一类随机选择的手写数字或字母.此外,在ANNs连续学习中,通常把原始MNIST改造成具有5个任务的SplitMNIST数据集.SplitMNIST数据集的每个任务包含两个不同类别的手写数字,构成{(0,1),(2,3),(4,5),(6,7),(8,9)}连续任务的数据集.4个数据集的图像都是28×28像素的灰度图,所以网络的输入层包含28×28=784个神经元.为了回答问题a,网络的输出层设置900个神经元,比文献[15]的6 400个神经元大幅减少.SplitMNIST和FashionMNIST的每个任务都比MNIST的图像复杂,用于回答问题b.Balanced EMNIST具有47个任务,以便于回答问题c.所有实验中,每个输入样本的表征时间设置为250 ms,时间步长设置为1 ms.实际场景中尤其是实时在线情景下,受到内存和处理时间限制,一个样本多次表征和每次表征多个样本是不现实的.为此,实验设置每个样本只表征一次,即迭代期数epoch为1,且每次只处理一个样本,即迷你批次minibatch也为1.采用相同的网络结构和设置处理不同的数据集,有利于实验结果的公平比较.2.2 实验结果与分析表2给出了ASP和SplitASP方法在4个连续学习数据集上的测试结果.已有的ASP方法在各数据集上顺序执行5个任务后的遗忘,即MNIST上遗忘20.9%,SplitMNIST上遗忘35.2%,FashionMNIST上遗忘33.3%,EMNIST上遗忘10.1%,4个数据集上平均遗忘约为24.9%.提出的SplitASP方法在各数据集上顺序执行5个任务后的遗忘,即MNIST上遗忘0.1%,SplitMNIST上遗忘8.3%,FashionMNIST上遗忘0.4%,EMNIST上遗忘0.2%,4个数据集上平均遗忘约为2.3%.10.13245/j.hust.230052.T002表2在4个连续学习数据集上的测试精度方法数据集MNISTSplitMNISTFashionMNISTEMNISTTask1Task5Task10Task1Task5Task1Task5Task10Task1Task5Task10Task47ASP10079.1067.2099.5064.3010066.7052.4010089.9075.4539.49SplitASP10099.9099.5598.5090.2010099.6096.4010099.8099.093.66%考虑各数据集平均遗忘,SplitASP比ASP减少遗忘23% (24.9%-2.3%),实现了有效的连续学习,回答了问题a;考虑每个任务的复杂程度,ASP方法在SplitMNIST和FashionMNIST上的平均遗忘为34.3%,而SplitASP方法的平均遗忘仅为4.4%,减少遗忘30% (34.3%-4.4%),SplitASP方法对复杂任务具有很好的效果,回答了问题b.在EMNIST数据上,ASP方法学习完成47个任务后的测试精度为39.5%,相对第1个任务,遗忘60.5%.SplitASP方法完成同样任务后的测试精度为93.7%,相对第1个任务仅遗忘6.3%,减少遗忘54% (60.5%-6.3%),远好于ASP方法,回答了问题c.考虑以上3个问题,对4个数据集SplitASP方法比ASP方法的平均遗忘分别减少23%,30%和54%,三者平均约36%,平均精度提高约36%.图2给出了ASP和SplitASP在MNIST数据集上的实验结果.ASP方法从任务3开始,测试精度快速下降,但基本上稳定在75%的测试精度,说明新任务学习对原有任务产生了严重干扰,ASP能够起到稳定精度的作用,但900个输出神经元不足以使ASP保持高精度.SplitASP方法将输出层分割为互不重叠的子模块,每个模块对应一个任务,最大限度地减少了任务之间的相互干扰,所以几乎没有遗忘.10.13245/j.hust.230052.F002图2在MNIST上的测试精度比较图3显示了ASP和SplitASP在SplitMNIST数据集上的实验结果.学习第1个任务时,ASP好于SplitASP的学习效果,这是因为ASP有900个输出神经元参与学习,而SplitASP有180 (900/5)个输出神经元参与学习.随着后续任务的学习,ASP的测试精度几乎线性下降,而SplitASP的测试精度则稳定在90%以上,说明后者在复杂任务的情况下克服灾难性遗忘的能力远强于前者.10.13245/j.hust.230052.F003图3在SplitMNIST上的测试精度比较图4比较了ASP和SplitASP在FashionMNIST数据集上的测试结果.与SplitMNIST数据集上的情况类似,不同是FashionMNIST数据集有10个任务,而SplitMNIST数据集只有5个.ASP在FashionMNIST上完成10个任务学习后的测试精度为52.4%,在SplitMNIST数据集上完成5个任务学习后的测试精度为64.3%,说明ASP对任务数和任务复杂程度都是敏感的.SplitASP在FashionMNIST上保持很高测试精度,说明对任务数并不敏感,比ASP具有更好的克服灾难遗忘的能力.10.13245/j.hust.230052.F004图4在FashionMNIST上的测试精度比较ASP与SplitASP在EMNIST数据集上的比较实验(图5)表明:在多任务情景下,即使网络规模较小,网络分割与ASP的融合也可以有效克服灾难性遗忘问题.相比之下,单独使用ASP方法则需要比SplitASP方法大得多的网络规模才有可能达到两者融合的效果.10.13245/j.hust.230052.F005图5在EMNIST上的测试精度比较3 结论针对脉冲神经网络连续学习的灾难性遗忘问题,提出自适应突触可塑性ASP与网络分割相结合的SplitASP方法.在多个数据集上的实验结果表明:提出的SplitASP方法可以在小网络规模、复杂任务和多任务情况下,比ASP方法具有更好的连续学习能力,说明网络分割与其他连续学习方法的补充与融合在解决脉冲神经网络灾难性遗忘问题方面具有巨大发展潜力.SplitASP方法在训练和测试过程中都需要任务标识,属于任务增量的连续学习.未来的改进方向是使任务分割能够在测试过程中不依赖任务标识,从而实现类增量的连续学习.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览