发布时间2019-07-17,AAAI
摘要
- 提出了一种神经元归一化技术来调整神经选择性,并开发了一种用于深度SNN的直接学习算法
- 通过缩小速率编码窗口并转换泄漏集成和触发(LIF)模型到显式迭代版本中,提出了一种基于Pytorch的实现方法,用于训练大规模SNN
介绍
训练大规模SNN的三大挑战:
-
空间和时间领域复杂的神经动力学使BP变得模糊不清
-
事件驱动的脉冲活动是离散且不可微分的,这阻碍了基于梯度下降的BP实现。
-
SNNs由于二进制脉冲表示而对参数配置更敏感。特别是在训练阶段,我们应该同时确保对突触前刺激的及时反应,并避免过多的脉冲,这可能会降低神经元的选择性。
而现在大部分方法是将ANNs-to-SNNs的转换学习方法,而不是直接训练
本文首先提出了NeuNorm方法来平衡神经选择性并提高性能。然后我们改进编码编码以加快收敛并将LIF模型转换为显式迭代版本,以使其与机器学习框架(Pytorch)兼容。
相关工作
主要在以下两个方便进行改进:
-
设计学习算法:
现有三种学习训练方法:无监督学习(如基于STDP),间接监督学习(如ANNs-to-SNNs)以及直接监督学习(如代替梯度下降的BP),文中各自阐述利弊
-
SNN编程框架:
NEURON和Genesis主要关注从神经元功能到突触反应的生物逼真模拟,对神经科学界更有利;BRAIN2和NEST目标是模拟具有许多生物学特征的更大规模的 SNN,但不是为直接监督学习而设计的,以实现本工作中讨论的高性能;BindsNET 是第一个报告的将 SNN 与实际应用相结合的框架。
然而,对深度 SNN 直接训练的支持仍在开发中。
本文方法
细节此处小编未展开
-
显示迭代的LIF模型
-
神经元标准化 (NeuNorm)
-
编码和解码方案
-
整体训练实施
实验
我们从两个方面在神经形态数据集(N-MNIST 和 DVS-CIFAR10)和非脉冲数据集(CIFAR10)上测试了所提出的模型和学习算法:
-
训练加速;
-
应用的准确性
总结
在本文中,作者提出了一种直接训练算法,用于具有高性能的更深和更大的SNN。提出 NeuNorm 可以有效地使神经元活动正常化并提高性能。除此之外,从编码方面和解码方面优化了脉冲编码,并将原始的连续 LIF 模型转换为显式迭代版本,以便更好的 Pytorch 实现。 最后,通过数十倍的训练加速和更大的网络规模,在神经拟态数据集上实现了最佳精度,并在非脉冲数据集上实现了与人工神经网络相当的精度。据作者言,这是第一次通过对 SNN 的直接训练报告如此高的性能,在主流机器学习框架上的实现可以促进 SNN 的发展。
个人收获
可以尝试是否可以应用到更难的数据集或者多模态或者例如情绪识别等,再进行优化以达到ANN的效果或者降低能量消耗