Spiking Deep Convolutional Neural Networks for Energy-Efficient Object Recognition
论文地址:https://link.springer.com/article/10.1007/s11263-014-0788-3
1.摘要:
卷积神经网络在解决目标检测等计算机视觉问题上展现了很大的优势,而脉冲神经网络在使用超低功耗的spike-based神经形态的硬件上具有极大的潜力。该篇文章的工作给出了一个新的将CNN转变为SNN网络的方法,并在DAPRA Neovision2和CIFAR-10数据集上达到了与传统CNN网络相当的优势。
2.方法:
2.1传统卷积神经网络模型
由卷积层、tanh**函数、max pooling和全连接层组成,如下图所示:
2.2实现脉冲卷积神经网络的挑战
将CNN转为SNN主要有两种途径:一是直接训练一个CNN-like结构的SNN,该方向的研究不成熟,训练方法主要使用STDP-liked规则,并且不清楚如何训练一个深度SNN来实现较高的功能;二是训练一个CNN网络并将学习到的权重应用到与已训练的CNN网络类似的结构中去。
直接将2.1中的CNN结构转换为spike-baed结构中会导致准确率方面的损失,主要有以下几个原因:
- SNN网络中难以表示负的输出值,而tanh**函数、卷积层权重与偏置的输出、图像预处理过程都有可能导致负的输出值;尽管可以使用抑制神经元对负的输出值禁行标示,但这增加了网络神经元的个数;
- 与CNN不同,SNN中没有很好的方法对偏置进行表征,CNN中的偏置可以为正值或负值;
- SNN中max pooling的实现需要两层网络
2.3提出的脉冲卷积神经网络
为了克服2.2中的挑战,本文训练了一个定制化的CNN网络,然后使用该定制化网络训练的权重迁移到SNN网络中去,CNN网络结构主要变化如下:
- 使输出值均为正值,在预处理层(图像转化和空间归一化)之后使用了abs()函数,使用了HalfRect()**函数,HalfRect(x)=max(x,0)
- 去掉了偏置biases(一个简单的实现方法是将偏置值变为0)
- 使用降采样(subsampling)代替max pooling,降采样使用了和为1的卷积核,将一个小的图像邻域中像素值相加。
经过上述变化,定制的CNN网络结构转变如下:
CNN与SNN结构之间的转换为直接的,转换后的SNN网络结构如下:
其中HalfRect()为SNN中隐藏的属性,SNN之间网络的连接表示突触,卷积核权重在SNN网络中转变为突触强度。
SNN网络中膜电位的更新规则如下所示:
上式中,L表示泄露(leakage)系数,V(t)为膜电位,当膜电位达到阈值theta时,神经元发送脉冲并将膜电位重置为0;膜电位不能低于静息状态时的值Vmin。
SNN网络的详细结构如下图所示:
X(t)可以被定义为:
其中Ap+i,q+j(t)为前一层的输入脉冲,Kp,q表示卷积核的权重。上图中包含了脉冲的激发层(Spike Generation),假设Iijk为输入到激发层的图像,在t时刻,第k个神经元(i,j)满足下列条件下时激发脉冲:
rand()表示符合(0,1)均值分布的随机数产生器,c为峰值频率的缩放系数,本文中设置为常数1/3。
3.结果
在Neovision2 Tower数据集上
在CIFAR-10上
文章作者还将模型迁移到神经形态的芯片上计算能耗