Title:AAAI_Direct Training for Spiking Neural Networks: Faster, Larger, Better
作者:Yujie Wu, Lei Deng, Guoqi Li, Jun Zhu,Yuan Xie and Luping Shi
关键词:类脑、SNN、LIF、STBP、NeuNorm、rate coding、pytorch
1. 研究动机
SNN与ANN的差别很大程度体现在SNN具备了丰富的时空动态特性和事件驱动范式。但由于缺乏有效的训练算法和高效的编程框架,SNN目前还没有表现出与ANNs相当的性能,这极大地限制了网络的规模和应用范围。
(1) SNN训练算法的三大挑战:
- SNN具备复杂的神经动力学,这导致很难在时空域使用BP训练算法,即神经活动不仅在空间域中逐层传播,而且也会沿时间方向影响状态;
- 事件驱动的尖峰活动是离散不可微,这导致实现BP;
- 由于采用了二进制尖峰表示,SNN对参数配置更加敏感,特别是在训练阶段,我们应同时保证突触前刺激的及时反应,避免过多的尖峰,以免降低神经元的选择性 ——> NeuNorm
(2) 编程框架困境:
- 缺乏原生/专门为SNN设计的训练框架
- 成熟的ANN框架无法直接应用于SNN
PyNN、Brain2、NEST、Neuron、BindsNET
2. 研究目标
针对训练算法和编程框架两方面提出一套全栈解决方案,以实现更快、更大、更好的SNN。
解决方案:
-
SNN直接训练算法设计
- NeuNorm神经元归一化方法,平衡神经元选择
- STBP时空反向传播方法,直接训练SNN
-
训练加速优化(基于Pytorch的编程框架)
- 改进rate coding(编解码),加快收敛速度
- LIF转成显式可迭代版本,与ANN编程框架兼容
3. 研究内容
3.1 Explicity iterative LIF
LIF模型通常用来描述神经元活动的行为, 包括细胞膜电位的更新和脉冲发放,公式表达如下:
[图片上传失败...(image-896a73-1569827068379)]
等效电路如下:
[图片上传失败...(image-1da663-1569827068379)]
[图片上传失败...(image-71ce73-1569827068379)]
其中为膜时间常数;
-
当膜电位时,神经元不产生动作电位,不发放脉冲,且u按衰减到静息电位;
-
当膜电位时,神经元产生兴奋,发放脉冲,并将膜电位复位到,并在绝对不应期内保持不变。
[图片上传失败...(image-763521-1569827068379)]
通过欧拉方程转为显示迭代表达式,并将突触前输入展开为线性求和形式,并将微分的缩放效果纳入权重W,即
[图片上传失败...(image-f101ea-1569827068379)]
[图片上传失败...(image-a5f2d6-1569827068379)]
证明如下:
[图片上传失败...(image-52c74d-1569827068379)]
合并公式4和2,即在4中加入2的发放重置功能,规避公式1和2的分段问题,得到<font color = FireBrick>公式5(非常重要)</font>:
[图片上传失败...(image-836f8-1569827068379)]
其中,t表示时间,n和l(n)分别表示第n层及其神经元数量,为从n层的第j个神经元到n+1层的第i个神经元的突触权重,这里假设,,即得到<font color = FireBrick>公式6</font>:
[图片上传失败...(image-40d220-1569827068379)]
其中,f(.)为阶跃函数;
下图为个人理解,也就是说,
[图片上传失败...(image-27a002-1569827068379)]
所以,LIF神经元的膜电位更新流程如下表所示:
[图片上传失败...(image-c2a117-1569827068379)]
3.2 NeuNorm
考虑两个卷积层之间的信号通信,神经元在n层的第f个特征图的位置(i,j)处,接收卷积输入I,则膜电位更新的公式5改写为:
[图片上传失败...(image-e87c5-1569827068379)]
其中,表示第n层的第c个卷积核与第n+1层的第f个卷积核之间的权重, *为卷积操作,R(i,j)表示位置(i,j)的局部
接收域;
为了保证刺激强度保持在一个相对稳定的范围内,以避免活动随着网络的深化而消失或爆炸,用神经学理解就是,保证突触前刺激的及时性和可选择性,避免出现可能损害有效信息表达的过多脉冲,引入辅助神经元,对n层不同FMs(s个卷积核——>s个FM)在相同空间位置的输入强度进行归一化(feature map,卷积特征图),辅助神经元状态x的更新公式如下:
[图片上传失败...(image-3ad3c8-1569827068379)]
其中,表示衰减因子, v代表恒定的比例因子,F代表第n层网络的特征图数量,公式前半部分表示对输入发放速率的平均响应,令 + vF = 1(个人理解这里应该是v/F)
[图片上传失败...(image-631a19-1569827068379)]
假设辅助神经元接收来自同一层的横向输入,并通过可训练的权重传递信号,控制向下一层发射的刺激强度,它的大小与特征图FM尺寸相同。因此,下一层神经元的输入I可以被修改为:
[图片上传失败...(image-afd1bb-1569827068379)]
NeuNorm方法本质上是通过输入统计量(移动平均发放速率)使神经元活动标准化,基本操作类似于批处理归一化中的零均值操作,但NeuNorm是沿着通道维度而不是批处理维度对数据进行标准化。
3.3 Rate coding
速率编码
-
输入端,将实值图像转换为与像素强度成正比的脉冲序列,脉冲采样是概率性的,例如遵循伯努利分布或泊松分布;
-
输出端,它在给定的时间窗口内计算最后一层神经元的放电率来确定网络输出。
为了降低对长时窗口的需求,分别从编码层和解码层扩展了SNN的表达能力。无论内部精度如何降低,保持第一层和最后一层较高的精度对收敛性和性能很重要。
编码
- 长仿真时间的一个要求是在将实值输入转换为脉冲信号时减小采样误差(窗口足够长才能保证精度)
- 将网络第一层指定为编码层,并能同时接收尖峰和非尖峰信号
- 神经形态数据集(spike) ——> 处理 ——> 脉冲序列
- 普通实值数据集(非spike) ——> 转换 ——> 脉冲序列
解码
- 针对长时间窗口的另一个要求是网络输出的表示精度
- 采取了投票策略来解码网络输出,将网络最后一层配置为由多个神经元群体组成的投票层,一个群体表示一个输出类
- 在时域中每个神经元的表示精度的负担(在给定时间窗内的发放速率)很大程度上转移到了空间域(neuron group coding)
3.5 Overall training(STBP)
给定损失函数L,表示在给定时间窗T内,平均投票结果和标签向量的MSE:
[图片上传失败...(image-975aef-1569827068379)]
脉冲信号不仅通过层与层之间的空间域传播, 也通过时域影响神经元的状
态,通过STBP训练网络
[图片上传失败...(image-499f69-1569827068379)]
[图片上传失败...(image-42d9de-1569827068379)]
由于,
[图片上传失败...(image-1050c9-1569827068379)]
其中,宽度参数a表示h(u)的形状shape,因此可用矩形函数h(u)来近似脉冲活
动的导数,以避免二值脉冲不可微的情况;
[图片上传失败...(image-e2c50d-1569827068379)]
如下为SNN整体训练的伪代码:
[图片上传失败...(image-84b3c-1569827068379)]
4. 实验/评估
数据集
- 神经形态数据集:N-MNIST、DVS-CIFAR10
- 非脉冲数据集:CIFAR10
实验结果
- 神经网络结构,实现了大规模SNN的直接训练,且结果与ANN相当,以往的方法只能对2-4层的浅层结构进行直接训练
[图片上传失败...(image-63aec0-1569827068379)]
-
训练加速
- 执行时间,比较SNN在Matlab与Pytorch上的实现,结果表明Pytorch能够在所有三个数据集上提供数十倍的加速度(图3)
- 网络规模,随着尺寸的增大, SNNs显示出明显的精度提高趋势, 这与ANNs一致(图4)
- 仿真长度,仿真长度可以在不降低精度的情况下显著降低,虽然仿真窗口越长,得到的结果越好,但该方法只需较小的长度(4-8)就可以得到满意的结果。值得注意的是,即使是极端的单步仿真,也可以取得不错的性能, 响应速度显著加快, 能耗显著降低, 这就为响应时间和能耗受到极大限制的应用场景提供了可能(图5)
[图片上传失败...(image-46bc7-1569827068379)]
[图片上传失败...(image-dc0503-1569827068379)]
[图片上传失败...(image-779667-1569827068379)]
-
应用精度
- 神经形态数据集,该模型直接训练精度达到99.44%,加入NeuNorm精度提高到99.53%(表3);NeuNorm算法可以加快收敛速度,在不使用NeuNorm的情况下,获得最佳精度58.1%所需epochs为157个, 而采用NeuNorm, 只需要103个epochs即可获得同样的准确率(表4);
- 非脉冲数据集,该模型精度比之前最好的直接法提高15%(达到90.53%),使用NeuNorm直接训练SNNs的精度略好一些(表5);NeuNorm增强了10个类之间的分化程度,即能有效提高算法性能(图6);
[图片上传失败...(image-39fa04-1569827068379)]
[图片上传失败...(image-3093c0-1569827068379)]
[图片上传失败...(image-419a7-1569827068379)]
5. 问题归纳
-
过多的尖峰会导致什么情况?
-
如何理解神经元的选择特性?
-
编码层的具体实现方式是怎样的?如何保证能同时兼容两类数据集?
6. 参考文献
-
Diehl, P. U., and Matthew, C. 2015. Unsupervised learning of digitrecognition using spike-timing-dependent plasticity:. Frontiers inComputational Neuroscience 9:99.
-
Diehl, P. U.; Neil, D.; Binas, J.; Cook, M.; Liu, S. C.; and Pfeiffer, M. 2015. Fast-classifying, high-accuracy spiking deep networks through weight and threshold balancing. In International Joint Conference on Neural Networks, 1–8.
-
Wu, Y., and He, K. 2018. Group normalization. arXiv preprint arXiv:1803.08494.
-
Wu, Y.; Deng, L.; Li, G.; Zhu, J.; and Shi, L. 2018. Spatio-temporal
backpropagation for training high-performance spiking neural networks. Frontiers in Neuroscience 12.
网友评论