Going Deeper With Directly-Trained Larger Spiking Neural Networks

发布时间 2023-03-22 21:16:43作者: 穷酸秀才大草包

郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!

The Thirty-Fifth AAAI Conference on Artificial Intelligence (AAAI-21)

 

Abstract

  脉冲神经网络(SNN)在时空信息和事件驱动信号处理的生物可编程编码中很有前途,非常适合在神经形态硬件中实现节能。然而,SNN独特的工作模式使其比传统网络更难训练。目前,有两条主要路线来探索高性能深度SNN的训练。第一种是将预先训练的ANN模型转换为其SNN版本,SNN版本通常需要很长的编码窗口才能收敛,并且不能在训练过程中利用时空特征来解决时间任务。另一种是在时空域中直接训练SNN。但是,由于发放函数的二值脉冲活动和梯度消失或爆炸的问题,当前的方法仅限于浅层架构,因此难以利用大规模数据集(例如ImageNet)。为此,我们提出了一种基于新兴时空反向传播的阈值相关批归一化(tdBN)方法,称为“STBP-tdBN”,能够直接训练非常深的SNN,并在神经形态硬件上有效实现其推理。通过所提出的方法和详细的跳连,我们将直接训练的SNN从浅层结构(<10层)显著扩展到非常深的结构(50层)。此外,我们还从理论上分析了基于“块体动力学等距”(Block Dynamical Isometry)理论的方法的有效性。最后,我们报告了优越的准确率结果,包括在CIFAR-10上的93.15%,在DVS-CIFR10上的67.8%,以及在ImageNet上的67.05%,时间步长非常少。据我们所知,这是第一次在ImageNet上探索直接训练的高性能深度SNN。我们相信这项工作将为充分利用SNN的优势铺平道路,并吸引更多的研究人员在该领域做出贡献。

 

Introduction

  受人类神经元工作模式的启发,脉冲神经网络(SNN)被认为是人工智能和理论神经科学中一种很有前途的模型(Roy, Jaiswal, and Panda 2019)。得益于内在的神经元动力学和事件驱动的脉冲通信范式,SNN在连续的时空信息处理中显示出巨大的潜力,具有更低的能耗和更好的鲁棒性(Stromatias et al. 2015)。此外,SNN可以很容易地应用于一些专门的神经形态硬件(Merolla et al. 2014; Davies et al. 2018),这可能被视为下一代神经网络。

  有两种主要的方法来训练具有高性能的SNN。一种是将预先训练的ANN转换为SNN模型,通常需要数百个时间步骤(Sengupta et al. 2019; Hu et al. 2018)。因此,尽管这些SNN实现了与具有类似结构的ANN相当的精度,但大量的时间步骤会导致严重的信号延迟并增加计算量。另一种是基于梯度下降方法直接训练神经网络,该方法独立于预先训练的神经网络,可以减少时间步长。最近的一项工作(Wu et al. 2018)提出了一种称为“时空反向传播”(STBP)的学习算法,该算法具有在面向人工神经网络的编程框架(例如Pytorch)上直接训练SNN的方法,为我们探索更深且更大的直接训练的SNN提供了机会。然而,该算法训练的SNN仅限于浅层架构,无法在ImageNet等大规模数据集上获得令人满意的性能。因此,在上述算法下,我们明确了直接训练更深的SNN需要解决的两个问题。

  第一个问题是梯度消失或爆炸。由于时空信息处理的特殊机制和不可微分的脉冲信号,当直接训练SNN时,梯度传播表现得非常不稳定,并且在大多数情况下趋于消失,这阻止了SNN变深。到目前为止,在直接训练的SNN中还没有一种有效的方法来很好地处理这个问题。我们之前的著名工作(Lee et al. 2020; Lee, Delbruck, and Pfeiffer 2016; Wu et al. 2019)未能直接训练深度SNN,并且它们的所有模型都小于10层,这严重影响了它们方法的性能。

  另一个问题是,我们需要平衡每个神经元的阈值和输入,以在SNN中获得适当的发放率。当输入与阈值相比太小时,神经元发出很少的脉冲,神经元膜电位保持不变,因此神经元处理的信息无法充分表达。当输入过大时,神经元会一直发放,并且对输入的变化不敏感。对于直接训练的SNN,随着二值脉冲逐层传播,突触前输入的分布将在训练过程中发生变化,使得输入的大小不合适。已经提出了许多方法来处理它,例如阈值正则化(Lee, Delbruck, and Pfeiffer 2016)和NeuNorm(Wu et al. 2019)。

  归一化似乎是解决这两个问题的合适方法。根据(Chen et al. 2020),它们稳定了网络和梯度传播。此外,他们将突触前输入的分布归一化为相同的期望和方差,这有助于通过减少内部协变量偏移来平衡阈值和输入。然而,现有的归一化方法不适合于SNN的训练。对于额外的时间维度和特殊的激活机制,直接训练的SNN需要专门设计的归一化方法。

  在本文中,我们开发了一种新的算法来直接训练深度SNN。这项工作的主要贡献总结如下:

  • 我们提出了依赖阈值的批归一化来解决梯度消失或爆炸问题,并调整发放率。此外,我们采用了剩余的网络结构,并修改了适用于深度SNN的跳连。
  • 在此基础上,我们研究了非常深的直接训练SNN(将其从不到10层扩展到50层),并在大规模非脉冲数据集(CIFAR-10,ImageNet)和神经形态数据集(DVS-Gesture,DVS-CIFR10)上对其进行了测试。
  • 据我们所知,在CIFAR-10和ImageNet上,我们全面验证了不同的SNN架构(ResNet-18, 34, 50),并报告了与时间步长少得多(不超过6个时间步长)的类似SNN相比具有竞争力的结果,这是直接训练的全脉冲SNN首次在ImageNet上报告相当高的准确性。在神经形态数据集上,我们的模型在DVS-Gesture和DVS-CFAR10上都实现了最先进的性能,这表明了SNN在处理时空信息方面的优势。

 

Related Work

Learning algorithm of SNNs 在过去的几年里,许多学习算法探索了如何训练高性能的深度神经网络,包括:(1) 将预先训练的神经网络转换为神经网络的一些方法;(2) 基于梯度下降的算法。

  第一种被称为“ANN-SNN转换方法”(Sengupta et al. 2019; Han, Srinivasan, and Roy 2020),被视为训练高性能深度SNN的最流行方法,它将ReLU函数的实值输出转换为SNN中的二值脉冲。与ANN相比,这种方法在大规模数据集上成功地报告了具有竞争力的结果,而没有严重退化。然而,它忽略了脉冲神经元丰富的时间动态行为,通常需要数百或数千个时间步长才能接近预先训练的神经网络的准确性。

  基于梯度下降的算法利用误差反向传播来训练SNN。通过梯度下降优化学习算法,一些SNN模型(Lee, Delbruck, and Pfeiffer 2016; Jin, Zhang, and Li 2018; Lee et al. 2020)在CIFAR-10和其他神经形态数据集上实现了高性能。其中,(Wu et al. 2019)将LIF模型(Hunsberger and Eliasmith 2015)改进为迭代LIF模型,并开发了STBP学习算法,使其在面向ANN的编程框架上友好,并加快了训练过程。此外,训练SNN在处理空间和时间信息方面直接显示出巨大的潜力,并在很少的时间步长内报告高精度。然而,由于梯度消失和内部协变量偏移,它无法直接训练非常深的SNN,这正是我们想要克服的。

Gradient vanishing or explosion in the deep neural network (DNN) 当DNN是动态等距时,它可以避免梯度消失或爆炸,这意味着它的输入输出雅可比矩阵的每个奇异值都保持接近1。(Chen et al.2020)提出了一种度量——“块动态等距”,作为所有复杂串-并行DNN的通用统计工具。它研究了神经网络中每个块的一阶矩和二阶矩,并分析了它们对梯度分布的影响。此外,它还对神经网络中权重初始化、批量归一化和跳连的功能进行了理论解释,这有助于我们开发算法。

Normalization 归一化技术能够训练表现良好的神经网络。对于人工神经网络,归一化,如批归一化(Ioffe and Szegedy 2015)、组归一化(Wu and He 2018)和层归一化(Ba, Kiros, and Hinton 2016),已成为常见的方法。批归一化(BN)通过减少内部协变量偏移来加速深度网络训练,从而实现更高的学习率并使模型正则化。虽然BN会导致高学习延迟并增加计算量,但它可以使网络更深,避免梯度消失或爆炸。对于SNN,研究人员提出了其他归一化技术,如基于数据的归一化(Diehl et al. 2015)、Spike-Norm(Sengupta et al. 2019)和NeuNorm(Wu et al. 2019)。这些归一化方法旨在平衡输入和阈值,以避免严重的信息丢失,但它们对我们直接训练的深度SNN无效,因为它们仍然忽略了梯度消失的问题。我们注意到了ANN中BN的影响以及SNN中输入分布的重要性,因此我们对BN进行了修改,以满足SNN模型的训练和推理。

 

Materials and Methods

Iterative LIF Model

  迭代LIF模型最早由(Wu et al. 2019)提出,他利用欧拉方法求解LIF模型的一阶微分方程,并将其转换为迭代表达式:

其中τdecay是一个常数,用来描述膜电位衰减的速度,ut是膜电位,它是突触前输入。设Vth表示给定的阈值。当ut>Vth时,神经元发出脉冲,ut将重置为0。突触前输入是来自最后一层的其他神经元的累积脉冲。因此,它可以用来表示,其中wj是权重,ot(j)表示在 t 时刻来自其他人的二值脉冲输出。考虑到空间结构并设置ureset=0,整个空间和时间域的迭代LIF模型可以由下式定义:

其中ut,n是第n层神经元在 t 时刻的膜电位,ot,n是二值脉冲,衰减是电压衰减常数。

  迭代LIF模型能够在空间和时间维度上实现前向和后向传播,这使得它对通用机器学习编程框架很友好。

 

Threshold-dependent Batch Normalization

  作为DNN的一个常规组成部分,批处理归一化(BN)一直是当前神经网络的一种常见方法,它允许稳定的收敛和更深层次的神经网络。然而,由于额外的时间维度和特殊的激活机制,直接训练的SNN需要专门设计的归一化方法。这促使我们提出了阈值相关的批归一化(tdBN)。

  我们考虑一种脉冲卷积神经网络(SCNN)。设ot表示一层中所有神经元在时间步骤 t 的脉冲输出。对于卷积核W和偏差B,我们得到:

其中xt ∈ RN×C×H×W表示时间步骤 t 处的突触前输入,其中N作为批处理轴,C作为通道轴,(H, W)作为空间轴。

  在我们的tdBN中,高维突触前输入将沿着通道维度进行归一化(图1)。表示xt的第k个通道特征图。那么将通过下式归一化:

其中,Vth表示阈值,α是取决于网络结构的超参数,ε是微小常数,λk和βk是两个可训练参数,E[xk], Var[xk]是在Mini-Batch中统计估计的xk的均值和方差。图1显示了如何计算E[xk], Var[xk],其定义如下:

因此,在训练过程中,yk ∈ RT×N×H×W正是由下一层的第k个通道神经元在时间步长T期间接收的归一化突触前输入。

  在推断中,我们遵循作为标准批归一化的模式来估计μinf,它们分别表示整个数据集上E[xk]和Var[xk]的期望,可以在训练过程中通过移动平均解来计算。

  此外,对于具有tdBN的SNN,在推断中需要进行批范数尺度融合。它消除了推断过程中的批归一化操作,从而保持网络完全脉冲,并使其能够在神经形态平台上实现。设Wc,k和Bc,k表示一层中的第c个特征图和下一层中第k个特征图之间的卷积核和偏差。架构由下式决定:

其中和偏差表示在分批范数尺度融合之后的变换权重。因此,在推断期间,脉冲通过变换的权重和偏差逐层传播,而不进行批归一化操作。因此,我们的tdBN只影响训练期间的计算成本,而不影响已经训练的SNN的运行机制。

  简言之,我们的tdBN与标准BN有两个主要区别。首先,与ANN不同,SNN不仅逐层传播信息,而且从最后一刻到下一刻都在传播信息。因此,tdBN应该在时间和空间维度上对特征输入进行归一化。其次,我们使归一化方差依赖于阈值。在tdBN中,预激活被归一化为N(0, (αVth)2),而不是N(0, 1)。我们将初始化可训练参数λ和β为1和0。在串行神经网络中,超参数α为1。对于具有n个分支的局部并行网络结构,α将为。它在早期训练时进行均值为0和标准差为Vth的预激活。tdBN的代码可以在补充材料A中找到。

 

Overall Training Algorithm

 

Theoretical Analysis

Gradient Norm Theory

Influence of membrane decay mechanism

 

Scaling Factors

 

Deep Spiking Residual Network

 

Experiment

 

Experiment on Static Datasets

 

Experiment on Neuromorphic Datasets

 

Conclusion