IJCAI 2022 有记忆带符号的神经元:面向简单,精准且高效的ANN-SNN转换
代码链接:https://github.com/ppppps/ANN2SNNConversion_SNM_NeuronNorm
背景
现有的ANN-SNN转换方法忽略了同步ANN与异步SNN之间信息传输的不一致性。
创新点
- 分析ANN的同步与SNN的异步特性可能造成误差,并提出一种有记忆功能的带符号神经元,它的放电率等于ReLU的激活值且保留了转换后SNN的异步特性;
- 提出神经元参数归一化(NeuronNorm)方法显著降低SNN推理延迟;
主要内容与做法
误差分析:
对负权传输的脉冲延迟到达处理不当,导致脉冲神经元输出率较高,使ANN和转换后的SNN无法对应;
解决方法:Signed Neuron with Memory(SNM)
SNM的负脉冲可以使SNN同时保持异步传输和同步传输能力,同时有效解决输出速率过高的问题;而记忆机制使得它可以记住传输脉冲的和(正负可以抵消),只有当和大于0时才能向下传递负脉冲。
SNM如下更新:
m是第L层, 第j个神经元的记忆值。
实现效果如下图:
右侧t4时刻memory的值为1,可发射负脉冲;但t5时刻memory = 0,故不可发射脉冲。
(照着公式看不难理解的)
较长推理延迟的问题:
层归一化需要较高延迟是因为,ANN中的大量激活值都远小于最大激活值,对于SNN,小数值需要较长的时间传输。一个简单的解决方法是设置阈值前对最大激活值λ使用协同系数α,降低阈值可以保留更多的小数据,但无法区分较大的数据。
第L层的信息损失:
c, w, h 表示第c通道第w行第h列
解决方法:Neuron-Wise Normalization 神经元归一化
分别记录ANN中每个神经元的最大激活值,并作为对应SNN神经元的阈值,由于同一层中不同神经元的最大激活值是相对独立的,因此大大减少了信息损失。
总结
本文从神经元模型与归一化方法的角度提出了新的ANN-SNN转换方法。通过分析SNN异步传输导致的误差,提出SNM神经元模型,保证脉冲神经元输出速率与ReLU激活值对应,同时保持SNN异步传输能力;逐层归一化会严重增加SNN推理延迟,提出神经元归一化,可以显著减少信息损失,降低延迟。