论文名:Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing
中文名:权重、阈值权衡实现快速分类且高精度的脉冲神经网络
摘要
例如ConvNets(卷积神经网络)和 DBNs(深度信念网络)代表了最先进的机器学习和计算机视觉问题。为了克服深度网络的大计算量成本,脉冲神经网络最近被提出来了,并且提出了可用于脉冲神经网络的特殊硬件,然而,由于ANNs(模拟神经网络)没有时间信息,所以转换为稀疏的脉冲发射型、事件驱动的SNNs会有精度损失
。这里我们分析了脉冲神经元的发射率和阈值这些参数的选择对ANNs转换为SNNs的影响,我们展示了一组优化技术来最小化转换过程中的性能损失。这些技术产生的网络优于之前在MNIST数据集上的表现最好的网络,这里的许多网络都可以在20ms的仿真时间后接近最好的性能,这些技术包括在训练期间使用修正后的零偏置的线性单元(如ReLUs)、使用一种新的权重正则化方法帮助正则化发射率。我们将ANNs转换为SNNs的方法可以实现低延迟、高精度,与之前的方法相比,它在没有增加训练时间的同时提高了性能。
1. Introduction
深度神经网络目前在自然图片分类上已经是最成功的结构,它们已经在诸如手写数字识别、场景标注、CIFAR数据集和ImageNet数据集这样的问题上实现了巨大的成功。但是伴随的是网络结构越来越深,对于实时检测应用来说提出了新的挑战——需要做特殊的硬件加速器来加速网络推理的速度。脉冲神经网络(SNNs)对于这种加速来说是一个重要的候选方法,在本篇论文中,我们将介绍对于深度脉冲神经网络的新的优化方法,它可以使得脉冲神经网络获得比之前的脉冲方法更高的性能,同时实现了低延迟、更少的操作。
在最近这些年,脉冲神经网络已经变成了一个相当活跃的研究方向。一方面的原因就是被构建更具有生物学意义的神经网络所推动,另一方面就是大规模神经形态计算平台的改进和提升,它是在特定的模拟或者数字硬件上优化类脑的脉冲计算。与在传统CPUs或GPUs上跑神经网络相比,神经形态平台的功耗可能要低好几个数量级,因为它允许分布式和异步基于事件驱动的计算,因此提高了可扩展性和减少了延迟。而进一步的来讲,事件驱动型神经形态系统将计算资源聚焦于网络目前活跃的部分,高效了节省了其他部分的功耗,因此在这样的平台上跑的大规模深度神经网络是很有吸引力的,可能会支持在线学习。这些平台理想地被来自神经形态传感器的输入所驱动,产生稀疏、一帧一帧的、精确定时的事件流,与基于帧的方法相比减少了延时。
脉冲神经网络的训练通常不使用基于脉冲的学习规则,而是先用反向传播训练一个深度神经网络ANNs,然后将这个基于发射率的模型转换为由简单的脉冲神经元组成的模型。理论已经证明了SNNs至少具有和ANNs相当的计算能力,但是实际上很难提出等效的方法来证明这点。目前的一种方法就是由“Realtime classification and sensor fusion with a spiking deep belief network”提出的方法训练脉冲DBNs网络——使用LIF(Leaky integrate-and-Fire)神经元的Siegert的平均发射率近似激活值。另一种方法,在“Mapping from frame-driven to framefree event-driven vision systems by low-rate rate coding and coincidence processing-application to feedforward convnets”这篇论文中提到的,需要对脉冲神经网络中的泄露和绝对不应期的参数做微调。这两种情况下,脉冲神经网络都会在精度上有一定的损失。
最近,“Spiking deep convolutional neural networks for energy-efficient object recognition”提出了一种转换的方法,它的表现比以前的方法都好,因为它将脉冲和非脉冲网络之间的特征差异考虑了。主要挑战就是对于脉冲神经元中的负值和偏置的表示,这个通过使用修正的线性单元(ReLUs)和将偏置设为零解决了。同时,卷积网络的最大池化操作被空间线性子采样替代,同样地转换结果也有很小的损失。在这篇工作中,我们展示了这种微小损失的来源,并且展示了优化的几种工具。我们发现如果SNNs以正确的方式驱动,接近无损的转换是可能的,并且还可以进行非常快速的分类仅基于少量输出峰值。
2. 神经网络结构
A. 基于ReLU的前馈神经网络
在全连接前馈神经网络(FCNs)中,前层的所有神经元被完全连接到下层中,而没有层内的连接。目前的竞争结果重新引起了对这种结果的兴趣。对FCNs中的权重初始化是一个好的方案,它保留了错误梯度,正则化网络来防止过拟合,其在标准数据集上的性能很高。另外最近的提出的Dropout和修正后的线性单元(ReLUs)也对结果比较好,ReLUs是一种非线性的激活函数,它被应用到输入的权重和,可以被描述为:
xix_{i}xi是神经元i的激活值,wijw_{ij}wij是前层的神经元j和本层的神经元i的连接权重,xjx_{j}x