Direct Training for Spiking Neural Networks: Faster, Larger, Better
摘要
我们开发了一种神经元正则化技术以实现神经元分立的调整,并构建了一种直接有效的训练算法用于深层SNN的研究。通过优化速率编码窗口尺寸和将LIF模型转换为精确迭代版本的方法,我们开发了PyTorch版本的方法用于训练深度SNN,并显著提升了速度。
准确的LIF迭代模型
原来的LIF模型是这样的变化模式

其中u是膜电压,t代表时间,I代表外部输入,u_{reset}代表重置电压。
更换成迭代模式变成如下图

其中,在t + 1时刻输入的信息由o^{(t),n + 1}进行表示,在t + 2时刻则由o^{(t + 2),n + 2}进行具体表示。
最终输出的具体表现为u^{(t + 2),n + 2}}, 其中该值代表膜电压的状态。
而$o^{(t + 2),n + 2}}的具体表现为是否存在动作电位(即是否有脉冲)。
正则化
随着网络层数的加深,目的是为了避免脉冲消退或者爆炸。
整体训练部署
为了构建一个有效的误差度量工具L,在集成预测结果与标签向量Y之间计算平均平方差的均值;此方法适用于时间范围或时间段T内的数据处理场景。

该变量o^{t,N}表示最末一层在时刻t处的投票决策。M是一个固定投票矩阵。
基于详细推导出的迭代LIF模型可以看出:不仅在层间传递时域信息,在时域上也会对神经元状态产生影响。
这表明,在计算梯度过程中需要同时考虑两个不同的领域。

实验
从两个方面:
1.训练加速,
2.应用准确性
网络结构
表1和表2提供加速分析和准确度评估。


pytorch支持训练速度显著提升,并且在三个不同的数据集上均表现出色。这种性能得益于pytorch对卷积操作的优化设计。为了进一步验证这些改进效果的具体表现,请参考图4中的实验结果。随着网络规模的增长,snn模型的精度呈现明显的提升趋势,并且这一趋势与人工神经网络的表现一致。

模拟长度
为了精确模仿神经元的动力学行为和信息编码功能,SNN必须进行足够的模拟步骤才能实现这一目标。假设设定的时间步数为T,则需重复执行推理逻辑T次以确定脉冲发放频率。由此可知网络功耗可被建模为O(T)的增长关系;对于较深层的SNN架构而言,即使前期工作量高达数百至数千个时间步骤(time steps)——亦即每个时间步骤所需的操作开销——仍能达到令人满意的精度水平。(如Sengupta等人,2018所示),这导致了显著的能量消耗与最初的目标背道而驰。值得庆幸的是,在本文所提出的编码架构下,能够大幅减少时间步骤数量而不影响准确性

仅需少量步骤(4至8个),即可达到较为理想的效果。
值得特别注意的是,在仅执行一步的情况下,该方法仍能实现一个尚可接受的结果,并使反应速度和功耗显著降低。
确保在响应时间和能源消耗方面受到严格限制的应用情境下实施此方法。
例如,在火星探测器和依赖太阳能电池板支持的卫星系统等场景中应用该方法可获得良好的效果。
结论
在这个研究中, 我们开发出一种可以直接训练SNN的方法. 为此, 我们设计了一种新的神经元正则化技术. 此外, 我们还改进了速率编码策略, 并将原始连续LIF模型成功转换为精确迭代的形式. 最后, 通过数十倍训练加速以及更大规模网络的应用, 在神经态数据集上实现了最优精度;同时, 在传统的人工神经网络体系中也达到了相当高的准确性. 从目前掌握的情况来看, 这一技术有望推动SNN在主流机器学习框架中的应用和发展
