译者 | VincentLee
来源 | 晓飞的算法工程笔记
脉冲神经网络(Spiking neural network, SNN)将脉冲神经元作为计算单元,能够模仿人类大脑的信息编码和处理过程。不同于CNN使用具体的值(continuous)进行信息传递,SNN通过脉冲序列(discrete)中每个脉冲发射时间(temporal)进行信息的传递,能够提供稀疏但强大的计算能力。脉冲神经元将输入累积到膜电压,当达到具体阈值时进行脉冲发射,能够进行事件驱动式计算。由于脉冲事件的稀疏性以及事件驱动的计算形式,SNN能提供卓越的能源利用效率,是神经形态结构的首选神经网络。
尽管SNN有很多好处,但目前仅能处理相对简单的任务,由于神经元复杂的动态性以及不可导的操作,暂时没有一个可扩展的训练方法。DNN-to-SNN是近期广泛的SNN训练方法,该方法将目标DNN转化成SNN的中间DNN网络进行训练,然后转成SNN并复用其训练的参数,在小数据集分类上能达到不错的性能,但是在大数据集上分类结果不太理想。
论文打算使用DNN-to-SNN转化方法将SNN应用到更复杂的目标检测领域中,图片分类只需要选择分类就好,而目标检测则需要神经网络进行高度准确的数字预测,难很多。在深入分析后,论文实现YOLO的转换主要面临以下两个问题:
- 常用的SNN归一化方法过于低效,导致脉冲发射频率过低。由于SNN需要设定阈值进行脉冲发射,所以要对权值进行归一化,这样有利于阈值的设定,而常用的SNN归一化方法在目标检测中显得过于低效,后面会详细阐述
- 在SNN领域,没有高效leaky-ReLU的实现,因为要将YOLO转换为SNN,YOLO中包含大量leaky-ReLU,这是很重要的结构,但目前还没有高效的转换方法
为此,论文使用channel-wise归一化(Channel-wise normalization)和阈值不平衡的有符号神经元(signed neuron with imbalanced threshold)来分别解决以上问题,搭建了基于SNN的目标检测模型Spiking-YOLO,论文的贡献总结如下:
- 深度SNN在目标检测领域的第一次尝试
- channel-wise归一化,深度SNN的细粒度归一化方法,使得多个神经元更高但仍然合适的频率发射脉冲,进而让SNN信息传递更快且更准确
- 阈值不平衡的有符号神经元,提出leaky-ReLU在SNN领域的高效实现,在神经芯片上也能够轻量级集成
SNN神经元简述
SNN使用脉冲序列进行神经元间的信息传递,IF(integrate-and-fire)神经元累积输入到膜电压