基于局部分类器的高效深层脉冲神经网络学习方法

文档序号:32949949发布日期:2023-01-14 13:01阅读:47来源:国知局
基于局部分类器的高效深层脉冲神经网络学习方法

1.本发明属于类脑计算、深度学习领域,具体为一种基于局部分类器的高效深层脉冲神经网络学习方法,尤其是有关提高深层脉冲神经网络在实际任务上的效率及精度的学习方法。


背景技术:

2.作为脑启发的新一代神经网络,脉冲神经网络(spiking neural networks,snns)以脉冲作为信息表示和传输的载体,能够实现基于事件驱动的稀疏及异步计算,具有高效、低功耗的潜在计算优势。
3.但是,由于脉冲神经元模型的高复杂性以及脉冲函数的不可微分性,训练深度脉冲神经网络是一项具有挑战性的任务。一些基于转换的技术通过先训练传统人工神经网络(artificial neural networks,anns),然后利用ann的预训练权重构造与之相同网络结构的snn。这种方法虽然能够达到与ann相似的精度,但是需要大量的脉冲及时延以满足无损失的要求,这极大影响了snn的高效性应用。一些方法尝试利用反向传播算法直接训练snn。但是,反向传播需要将梯度从输出层向后逐层传播到整个网络。在反传过程完成之前,隐藏层的权重不能被更新。这种权重的更新方式阻碍了训练过程的有效并行化,导致对计算资源的要求较高,同时也难以在神经拟态的硬件上实现。
4.生物神经元只需要通过获得局部可用的信息,以高度并行的方式调节突触权重。此局部学习的方案能够独立地更新每一层的权重,从而可以高效地训练深度snn。然而,与基于反向传播的学习规则相比,目前的局部学习方法训练的snn在实际任务的精度方面仍有极大差距。


技术实现要素:

5.本发明的目的在于针对现有局部学习技术的不足,提供一种基于局部分类器的高效深层脉冲神经网络学习方法。
6.本发明的目的是通过以下技术方案来实现的:基于局部分类器的高效深层脉冲神经网络学习方法,包括以下步骤:
7.步骤一:使用脉冲神经元模型构造深度脉冲神经网络,层与层之间的脉冲神经元通过全连接或卷积的方式连接;
8.步骤二:将训练数据输入到snn中,并记录相应的脉冲神经元状态值,以用来更新参数;
9.步骤三:使用基于局部分类器的高效snn学习方法对网络的参数进行调整;
10.所述步骤三通过以下技术方案实现:
11.第l个隐藏层不断接收来自其前一层的输入脉冲,然后通过输出的脉冲传输信息;
12.在训练阶段,输出脉冲也被传送到局部分类器中;
13.采用均方误差作为层级损失函数来衡量每个时间步长的实际输出和期望输出之
间的差异,即:
[0014][0015]
其中:l表示损失函数,n
t
表示整个时间区间,上标a用于表示辅助分类器,其在时间步长t的输出由oa[t]表示,y[t]表示期望输出;
[0016]
定义e-trace包含wa对ua[t]的影响,即以正向方式递归计算:
[0017][0018]
因此,分类器在当前时间点t的权重更新可以被计算为:
[0019][0020]
同样,公式(2)也可以推广到隐藏层,即结合e-trace,隐藏层的权重更新可以计算为:
[0021][0022]
其中:η表示学习,
[0023]
上述两个计算公式都依赖于输出脉冲相对于相应膜电位的梯度,由于这个梯度是不存在的,因此使用公式(5)作为替代导数:
[0024][0025]
借助替代导数,公式(3)和公式(4)中的权重变化可以在每个时间步中立即得到,因此,每个权重可以在训练阶段以高效地并行方式进行修改。
[0026]
步骤四:重复步骤二与步骤三,直到snn学习完成;
[0027]
进一步,snn恰当拟合训练数据,并在测试数据中达到目标效果。
[0028]
有益效果
[0029]
本发明大幅度提升在局部学习模式下深层snn在实际任务上的准确率,同时能够实现并行高效地网络学习训练。
[0030]
该方法改善以脉冲为基础的学习性能,为类脑的神经形态计算体系提供一种高效可行的训练深层snn的方法。
[0031]
该方法引入逐层的辅助分类器,使每层神经元参数可以独立学习。此外,该方法通过前向过程累积在时间维度的梯度,以实现在线学习,即在每一时刻皆可调整脉冲神经网络的参数。
[0032]
本发明用多种主流的数据集评估了该方法的性能。
[0033]
该方法提高深层脉冲神经网络在实际任务上的效率及精度。
[0034]
本发明将有助于提高基于脉冲的局部学习性能,这将对神经形态计算有很大的价值,同时对未来低功耗的片上学习和信息处理有极其重要的推动意义。
附图说明
[0035]
图1是本发明提出的基于局部分类器的高效深层脉冲神经网络学习方法的示例图。
[0036]
图2是本发明提出的基于局部分类器的高效深层脉冲神经网络学习方法的系统框架图。
具体实施方式
[0037]
下面对本发明的使用进行详细说明。
[0038]
如图1、2所示,基于局部分类器的高效深层脉冲神经网络学习方法,包括以下步骤:
[0039]
步骤一:使用脉冲神经元模型构造深层脉冲神经网络,层与层之间的脉冲神经元通过全连接或卷积的方式连接;
[0040]
步骤二:将训练数据输入到snn中,并记录相应的脉冲神经元状态值,以用来更新参数;
[0041]
步骤三:使用基于局部分类器的高效snn学习方法对网络的参数进行调整;
[0042]
进一步地,为详述步骤三中的学习方法,本发明先介绍步骤一中的脉冲神经元模型。本发明的学习方法可适用多种脉冲神经元模型。
[0043]
对于lif脉冲神经元模型,第l层的脉冲神经元i不断地将来自传入神经元的输入电流整合到其膜电位中。每达到发射条件时,神经元就会产生一个输出脉冲,然后在膜电位上复位,即:
[0044][0045]
其中,表示神经元在时间步长t的膜电位,表示神经元i和神经元j之间的突触权重。和分别为来自第j个传入神经元的第k个输入脉冲和第k个输出脉冲的时间,m
l-1
表示前一层的神经元数量,表示发射阈值。
[0046]
考虑到单指数核在处理和学习方面的效率较高,因此采用
[0047]
虽然基于连续时间的脉冲模型可以准确捕捉神经元的动态,但离散时间更适合于深度脉冲网络的学习模拟。
[0048]
因此,通过设置仿真时间步长为1个单位,公式(1)被离散化为:
[0049][0050]
[0051]
其中,τ是时间常数,控制着膜电位的衰减率;表示神经元的输出状态,用1表示发放脉冲,0表示不发放脉冲。
[0052]
对于if脉冲神经元模型,模电压累积和脉冲发放的公式则为:
[0053][0054][0055]
下面通过举例说明隐藏层l来详细解释步骤三中基于局部分类器的高效snn学习方法。
[0056]
第l个隐藏层不断接收来自其前一层的输入脉冲,然后用输出脉冲传输信息。
[0057]
在训练阶段,输出脉冲也被传送到局部分类器中。
[0058]
本发明采用均方误差作为层级损失函数来衡量每个时间步长的实际输出和期望输出之间的差异,即:
[0059][0060]
其中,l表示总损失,n
t
表示整个时间区间,上标a用于表示辅助分类器,其在时间步长t的输出由oa[t]表示,y[t]表示期望输出。
[0061]
定义e-trace包含wa对ua[t]的影响,即以正向方式递归计算:
[0062][0063]
因此,分类器在当前时间点t的权重更新可以被计算为:
[0064][0065]
同样,公式(7)也可以推广到隐藏层,即
[0066]
e-trace,隐藏层的权重更新可以计算为:
[0067][0068]
其中η表示学习率,这两个计算公式都依赖于输出脉冲相对于相应膜电位的梯度,这个梯度是不存在的,通常采用替代导数。
[0069]
本发明使用公式(10)作为替代导数:
[0070][0071]
借助替代导数,公式(8)和公式(9)中的权重变化可以在每个时间步中立即得到。
[0072]
因此,每个权重可以在训练阶段以有效的并行方式进行修改。
[0073]
步骤四:重复步骤二与步骤三,直到snn学习完成;
[0074]
snn恰当拟合训练数据,并在测试数据中达到目标效果。
[0075]
本发明通过局部分层分类器,能够用训练标签对每个隐藏层进行局部训练。
[0076]
此外,本发明可以在每个时间步骤中不断调整权重。
[0077]
在推理过程中,辅助分类器将被丢弃,输入脉冲通过网络传播直接获得用于决策的输出脉冲。
[0078]
这里,本发明采用表1中三种数据集进行实验:
[0079]
1)使用脉冲神经元模型构造深层snn;
[0080]
2)将训练数据输入到深层snn中,并记录相应的用于更新参数的脉冲神经元状态值;
[0081]
3)使用本发明提出的基于局部分类器的高效snn学习方法对网络的参数进行调整;
[0082]
4)重复2)与3),使深层snn恰当拟合训练数据,并在测试数据中达到目标效果,
[0083]
5)最后得到已训练的深层snn。
[0084]
表1
[0085][0086]
表1展示了本发明与当前最新的脉冲神经网络模型的对比,表中的准确率是基于主流的mnist、cifar10和tidigits数据集得到的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1