Optimal ANN-SNN Conversion for High-accuracy and Ultra-low-latency Spiking Neural Networks 阅读总结
运行结果演示
我将该论文发布于此处的代码进行了阅读与运行,得到结果如下:
训练过程(以CIFAR-10为例子使用VGG16模型进行训练)


结果测试:

可以看到,随着T的增加,SNN的准确度越来越接近ANN的准确度,但是运行时间也随之增加,尽管如此,已经可以在较短的时间步长内达到十分优秀的准确率。
Abstract
为了解决传统的ANN-SNN转换中存在的时间步长过长会影响推理时间,而过短会导致性能倒退的问题,这篇论文从理论上分析了ANN-SNN转换中的误差,并提出了clip-floor-shift 激活函数用于ANN的训练,使得ANN-SNN的期望转换误差为0,从而得到高精度低延迟的脉冲神经网络。(是第一次高精度低延迟ANN-SNN转换的探索)
1.Introduction
目前ANN-SNN转换得到的SNN在大规模数据集上性能已经可以和ANN相当,相比于原始的ANN,转换得到的SNN速度快,功耗低更加实用。
在转换过程中SNN的时间步长T取得越大,得到的结果就越接近原始的ANN,然而这会导致巨大的运算量,从而阻碍SNN的实际应用。若是SNN的时间步长T取得过小,会使得产生的剩余势能 V l ( t ) − V l ( 0 ) T \frac{V^l(t)-V^l(0)}{T} TVl(t)−Vl(0)无法忽视,影响模型的精度。
创新之处:目前现有的文章都需要几十到几百的时间步长,而这篇论文中的方案将其缩短到了更少的时间步长(eg.4个时间步长)。
主要贡献:
- 将误差分为clipping error、quantization error、unevenness error
- 提出了用clip-floor-shift激活函数代替ANN中的Relu激活函数
- 在CIRAR-10,CIFAR-100以及ImageNet数据集上进行了测试,所提出的方法在更小的步长上超过了目前最先进的精度。
2.Preliminaries
2.1 ANN中的神经元模型:
α l = h ( W l α l − 1 ) \bm \alpha^l=h(\bm W^l\bm \alpha^{l-1}) αl=h(Wlαl−1)
其中 α l \alpha^l αl为第 l l l层的输出, W l W^l Wl是 l l l和 l − 1 l-1 l−1层之间的权重矩阵, h h h 是Relu激活函数
2.2 SNN中的神经元模型:
由Integrate-and-Fire(IF)模型:
m l ( t ) = v l ( t − 1 ) + W l x l − 1 ( t ) \bm m^l(t)=\bm v^l(t-1)+\bm W^l\bm x^{l-1}(t) ml(t)=vl(t−1)+Wlxl−1(t) s l ( t ) = H ( m l ( t ) − θ l ) \bm s^l(t)=H(\bm m^l(t)-\bm \theta^l) sl(t)=H(ml(t)−θl) v l ( t ) = m l ( t ) − s l ( t ) θ l \bm v^l(t)=\bm m^l(t)-\bm s^l(t)\theta^l vl(t)=ml(t)−sl(t)θl x l ( t ) = s l ( t ) θ l \bm x^l(t)=\bm s^l(t)\theta^l xl(t)=sl(t)θl
其中 m l ( t ) m^l(t) ml(t)为t时刻脉冲产生前的电位, v l ( t ) v^l(t) vl(t)为t时刻脉冲产生后的电位, θ l \bm \theta^l θl是点火阈值 θ l \theta^l θl的向量,H(*)是阶跃函数, x l − 1 ( t ) \bm x^{l-1}(t) xl−1(t)是l-1层向l层的输入
2.3 ANN-SNN转换
由2.2节四个式子推导得到
v l ( t ) − v l ( t − 1 ) = W l x l − 1 ( t ) − s l ( t ) θ l \bm v^l(t)-\bm v^l(t-1)=\bm W^l\bm x^{l-1}(t)-\bm s^l(t)\theta^l vl(t)−vl(t−1)=Wlxl−1(t)−sl(t)θl
同除时间步长T(time step),并累加0-T时间得到:
v l ( T ) − v l ( 0 ) T = W l ∑ i = 1 T x l − 1 ( t ) T − ∑ i = 1 T s l ( i ) θ l T \frac{\bm v^l(T)-\bm v^l(0)}T=\frac{\bm W^l\sum_{i=1}^T\bm x^{l-1}(t)}T-\frac{\sum_{i=1}^T\bm s^l(i)\theta^l}T Tvl(T)−vl(0)=TWl∑i=1Txl−1(t)−T∑i=1Tsl(i)θl
令 ϕ l − 1 ( T ) = ∑ i = 1 T x l − 1 ( t ) T \phi^{l-1}(T)=\frac{\sum_{i=1}^T\bm x^{l-1}(t)}T ϕl−1(T)=T∑i=1Txl−1(t)
有:
ϕ l ( T ) = W l ϕ l − 1 ( T ) − v l ( T ) − v l ( 0 ) T \phi^l(T)=\bm W^l\phi^{l-1}(T)-\frac{\bm v^l(T)-\bm v^l(0)}T ϕl(T)=Wlϕl−1(T)−Tvl(T)−vl(0)
当令T足够大时该等式就几乎等同于2.1节中ANN的等式,即此时的SNN公式和ANN公式几乎相等,此时可以进行ANN-SNN的转化。
由于需要较大的T的限制条件,而较大的T会导致运算时间的增加,于是便产生了需要优化的问题:该如何减少T带来的影响。
3.Conversion error analysis
假设ANN和SNN中T时刻来自l-1层的输入相同,即 α l − 1 = ϕ l − 1 ( T ) \bm \alpha^{l-1}=\phi^{l-1}(T) αl−1=ϕl−1(T)
令 z l = W l ϕ l − 1 ( T ) = W l α l − 1 \bm z^l=\bm W^l\phi^{l-1}(T)=\bm W^l\bm\alpha^{l-1} z

本文分析了ANN到SNN转换中的误差类型,包括截断、量化和不均匀误差,并提出了使用clip-floor-shift激活函数以减少转换误差,达到高精度和低延迟的SNN。实验表明,这种方法在CIFAR-10、CIFAR-100和ImageNet数据集上表现优秀,能在较短的时间步长下实现与原始ANN相当的准确率。
最低0.47元/天 解锁文章
1761





