Optimal ANN-SNN Conversion for High-accuracy and Ultra-low-latency Spiking Neural Networks 阅读总结

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

运行结果演示

我将该论文发布于此处的代码进行了阅读与运行,得到结果如下:
训练过程(以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αl1)
其中 α l \alpha^l αl为第 l l l层的输出, W l W^l Wl l l l l − 1 l-1 l1层之间的权重矩阵, 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(t1)+Wlxl1(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) xl1(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(t1)=Wlxl1(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)=TWli=1Txl1(t)Ti=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 ϕl1(T)=Ti=1Txl1(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ϕl1(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) αl1=ϕl1(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

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

for-nothing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值