原文链接:CSDN-脉冲神经网络(SNN)论文阅读(三)—–高精度低时延的ANN转换SNN方法
目录
说明
准备将自己读的一些和SNN(脉冲神经网络)相关的一些论文记录下来,方便自己以后回看也希望能够帮到有需要的人。
删除了文中一些自认为不重要的内容而用自己的话进行简洁描述(很少,比如引言的一些内容),其他部分尽量使用专业用语进行翻译,如果有什么出错或不恰当的地方希望各位批评指出。
相关信息
论文地址: Optimal ANN-SNN Conversion for High-accuracy and Ultra-low-latency Spiking Neural Networks
论文由北京大学(于肇飞组)研究人员发表于ICLR 2022,代码发布于here
主要贡献
论文首先分析了ANN转SNN过程中的一些转换误差,然后提出了quantization clip-floor-shift activation function去替换ANN中的ReLU激活函数,这样转换后的SNN能够在较低的time step内达到较高的精度。
ANN转SNN相关公式以及动机
- 符号定义:首先,定义
表示ANN中第
层中所有神经元的输出,令
表示在t时刻(
时)脉冲神经元接收到前一层的输入后但并未发放脉冲前的膜电势,令
表示在t时刻(
时)脉冲神经元接收到前一层的输入并发放脉冲后的膜电势。
- 令
表示脉冲神经元的放电阈值,
表示在时刻
第
层中所有脉冲神经元发放的脉冲,假设神经元放电后传出的脉冲大小等于阈值
,令
表示第
层的神经元向下一层传递的脉冲信息,
表示第
层神经元和第
层神经元之间的权值。
- ANN转SNN:在ANN中有
,其中表示ReLU激活函数。在SNN中有
通过将等式2从time step1累加到T,可以得到:
使用表示从时刻0到T内的平均突触后电势,可以得到:
等式4描述了相邻层之间脉冲神经元的平均突触后电势()的关系。由于
,如果让初始膜电势
并且忽略掉
,当令T(time step)足够大时等式4就几乎等同于等式1,即此时的SNN公式和ANN公式相等。然而太大的time step会导致很高的推理时间,从而影响SNN的实际应用,因此本文旨在在极低的延迟(time step)下实现高性能的ANN转换SNN。
转换误差分析
本部分详细分析ANN转换SNN中每一层存在的一些误差,此时假设ANN和SNN从前一层接收到的输入相等,即假设,然后开始分析第
层存在的误差。
- 为了简化后续公式,使用
表示第
层传递至
层的输入(ANN和SNN均如此)。
- 绝对转换误差 = 转换后的SNN的输出减去原始ANN的输出:
从等式5中可以看到如果且
则转化误差就不为0。事实上,转换误差由以下三个因素造成:
- Clipping error:
由于脉冲神经元的阈值为,所以SNN的输出
,但是ANN的输出
,其中
表示
的最大值。如图1a所示,
可以通过下式映射到
:
这里的函数表示当
时结果为a,
时结果为b,
时结果为x,
表示向下取整,
表示将
映射为
的
的值。在ANN中的位于
和
之间的激活值都被映射为SNN中的
,这样造成的转换误差称为clipping error。
- Quantization error(flooring error):
输出脉冲是离散事件,因此
在经过
量化后也是离散的,当把
映射为
时,不可避免地存在着一些量化误差。例如图1a中所示,ANN中位于
之间的激活值在SNN中都被映射为
。
- Unevenness error:
不均匀误差是由于输入脉冲的不均匀造成的。同样的脉冲数量,如果脉冲到达的时间不一样,产生的输出也不一样,可能会产生比预期更多或更少的输出。
举个例子:
假设在源ANN中第层中的两个神经元和第
层一个神经元的连接权值分别是2和-2,第
层两个神经元的输出是[0.6, 0.4]。在转换后的SNN中假设
层的两个脉冲神经元在5个time step内(time step=5)分别发放3个脉冲和2个脉冲,令阈值
。因此有
。即使
且ANN和SNN中的权值相等
也会随着脉冲到达的时间不同而变化。ANN中的
,对于SNN有如图1b-d所示的三种情况。
如果两个权值为2和-2的神经元发放脉冲时间分别为和
,突触后神经元将会在
时刻发放脉冲,且
。然而如果两个神经元发放脉冲时间分别为
和
,突触后神经元将会在
时刻发放四个脉冲且
;如果两个神经元发放脉冲时间分别为
和
,突触后神经元将只会在
时刻发放一个脉冲且
。
上述三种误差中存在一些相互依赖关系,特别是如果,不均匀误差会退化为量化误差,因此假设
时可以忽略掉不均匀误差的影响从而估计SNN的激活函数。在转换后的SNN中估计输出值
可以使用
和
函数来表示:
详细推导过程在论文的附录中,感兴趣的朋友可以去查看原始论文。
根据等式7,estimated conversion error 可以由下式得出:
优化的ANN转换SNN
quantization clip-floor activation function
由等式8可以得出,如果将ANN中的ReLU函数替换为带有一定量化步长L的clip-floor函数是不是能够消除掉在time step T=L时刻的转换误差呢?从而能够解决掉低时延的性能退化问题。
由上述思路,论文作者提出了quantization clip-floor activation function去训练ANN:
其中的超参数表示ANN中的量化步长(quantization step),而
是可训练的参数,决定着将ANN中
映射到SNN中
的最大值对应的最大值(比较绕,其实说白了就是
)。使用这样一个新的激活函数,满足以下几个条件时ANN和转换后的SNN之间的转换误差为0:
- 条件:量化步长L=time step T;
;
- 缺陷:在
时误差不一定为0。
进一步改进的quantization clip-floor-shift activation function
基于以上缺陷,论文作者又提出了进一步改进的quantization clip-floor-shift activation function:
和式9相比,式10多了一个超参数向量来控制激活函数的偏移(shift)。当
时虽然不能保证转换误差为0,但是可以估计转换误差的期望值。相似于Deng & Gu, 20201,这里同样假设
服从一定的均匀分布,当满足以下条件时,可以证明当源ANN中的
时对于任意的T和L,转换误差的期望值接近于0。
- 条件:
;
。
证明过程在论文附录中给出,感兴趣的朋友可以去查看原始论文。
结果表示当时即使
平均转换误差也接近于0,从而能够在极低的time step内实现高性能的转换后的SNN。
用于带有quantization clip-floor-shift activation function的训练算法
训练带有quantization clip-floor-shift activation function的ANN也是一个问题。在训练时,论文作者采用straight-through estimatorBengio et al., 20132作为floor函数的导数,即令。整体的导数规则如下式17所示:
实验部分
作者使用VGG-16、ResNet-18、ResNet-20等网络结构在CIFAR-10、CIFAR-100和ImageNet数据集上做了实验证明了该方法的优越性。另外表示随着L的增加,转换后的SNN在time step较小时的精度也会随之下降,即L过大过小都不行,推荐的L为4或8.
部分参考文献
本文由CSDN-lan人啊原创,转载请注明!
Shikuang Deng and Shi Gu. Optimal conversion of conventional artificial neural networks to spiking neural networks. In International Conference on Learning Representations, 2020. ↩︎
Yoshua Bengio, Nicholas L´eonard, and Aaron Courville. Estimating or propagating gradients through stochastic neurons for conditional computation. arXiv preprint arXiv:1308.3432, 2013. ↩︎
文章出处登录后可见!