【译】Enabling deep spiking neural networks with hybrid conversion and spike timing dependent backpropa

【译】Enabling deep spiking neural networks with hybrid conversion and spike timing dependent backpropagation

Date: 2021/6/2
Editor: hx

1 Abstract

  脉冲神经网络(SNN)以异步离散事件(或脉冲)进行操作,如果在神经形态硬件实现,则可以有更高能效。许多工作表明,SNN的推理部分可以通过使用训练过的人工神经网络(ANN)的权重来形成,并将每一层的脉冲发放阈值设置为该层的最大输入。这类转换后的SNN需要大量的时间步骤来达到有竞争力的精度,这就降低了节能性。通过从头开始用基于脉冲的反向传播训练SNN,可以减少时间步长,但这在计算上是昂贵和缓慢的。为了应对这些挑战,我们提出了一种计算高效的深度SNNs训练技术。我们提出了一种混合训练方法:1)采用转换后的SNN,将其权重和阈值作为基于脉冲的反向传播的初始化步骤;2)在这个精心初始化的网络上执行增量的脉冲时间依赖性反向传播(STDB),以获得一个能够在几个epochs内收敛并且能用更少时间步长来处理输入的SNN。STDB是通过使用神经元的脉冲时间定义的新代理梯度函数进行的。权重更新正比于神经元产生输出脉冲的当前时间和最近时间的差。用我们的混合转换和STDB训练的SNN能以少10倍-25倍的时间步长运行,同时能达到与纯转换的SNN相比类似的精度。对于大多数标准的图像分类数据集来说,所提出的训练方法在基于脉冲的反向传播的不到20个epochs中收敛,因此与从头训练SNN相比,大大降低了训练的复杂性。我们在CIFAR-10、CIFAR-100和ImageNet数据集上进行了VGG和ResNet架构的实验。我们在ImageNet数据集上用250个时间步长的SNN实现了65.19%的最高准确率,与具有类似准确率的转换SNN相比,速度快了10倍。

2 Introduction

  近年来,脉冲神经网络(SNN)已经显示出利用事件驱动的神经形态硬件实现低功耗机器智能的前景。基于生物可塑性,SNN中的神经元通过离散的二进制事件(或脉冲)计算和交流信息,这与标准的人工神经网络(ANN)有很大的不同,后者以实值(或模拟)方式处理数据。基于二进制的全有或全无的脉冲通信与稀疏的时间处理相结合,恰恰使SNN成为传统ANN的低功率替代品。尽管SNN在能效方面具有吸引力,但它的训练仍然有不小挑战。脉冲神经元(通常用LIF神经元,或IF神经元建模)的不连续性和不可微分性给基于梯度下降的反向传播带来困难。实际上,在传统的学习任务中,SNN在性能或准确性方面仍然落后于ANN。因此,在过去几年中,有一些工作提出了不同的学习算法或学习规则,以实现深度SNN的复杂视觉识别任务(Wu等人,2019;Hunsberger & Eliasmith,2015;Cao等人,2015)。在所有的技术中,从ANN到SNN的转换(Diehl等人,2016;2015;Sengupta等人,2019;Hunsberger & Eliasmith,2015)已经产生了最先进的精度,与复杂架构上的Imagenet数据集的深度ANN性能相匹配(例如,VGG(Simonyan & Zisserman,2014)和ResNet(He等人,2016) )。在转换中,我们使用梯度下降法训练带有ReLU神经元的ANN,然后通过使用合适的阈值平衡将ANN转换为带有IF神经元的SNN(Sengupta等人,2019)。但是,通过转换得到的SNN会产生2000-2500个时间步的大延迟(以处理给定输入图像所需的总时间步数来衡量)。术语 "时间步长 "可以作为在所有层中处理单个输入脉冲所需的时间单位,代表了网络延迟。较大的延迟转化为推理过程中较高的能量消耗减少了SNN对ANN的效率改进。为了减少延迟,已经提出了基于脉冲的反向传播规则,对脉冲数据进行端到端的梯度下降训练。在基于脉冲的反向传播方法中,通过将脉冲神经元模型近似为连续和可分的(Huh & Sejnowski, 2018),或者通过将代理梯度定义为真实梯度的连续近似(Wu等人,2018;Bellec等人,2018;Neftci等人,2019),来处理尖峰神经元的不可分性。基于脉冲的SNN训练将整体延迟降低了10倍(例如,处理一个输入需要200-250个时间步骤(Lee等人,2019)),但与转换方法相比,需要更多的训练(就总的训练迭代而言)。ANN中的一次前向传播对应于SNN中的多次前向传播,这与时间步数成正比。在基于脉冲的反向传播中,反向传递需要在总的时间步上整合梯度,这增加了计算和存储的复杂性。多次迭代训练和爆炸性的内存需求(用于反向传递计算)使得基于脉冲的反向传播方法只能限于在简单的几层卷积架构上对小数据集(如CIFAR10)应用。

  在这项工作中,我们提出了一种混合训练技术,它结合了ANN-SNN转换和基于脉冲的反向传播,减少了整体延迟,也减少了收敛的训练工作量。我们使用ANN-SNN转换作为初始化步骤,然后进行基于脉冲的反向传播增量训练(由于之前的初始化,只需很少的历时就能收敛到最佳精度)。从本质上讲,我们的混合方法是采用转换后的SNN和使用反向传播的增量训练,与只用转换或只用基于尖峰的反向传播从头开始训练的模型相比,产生了更好的能效和更高的精度。

  总而言之,本文做了以下贡献:

  • 我们为深度SNN引入了一种混合的高效计算的训练方法。我们使用从ANN转换过来的SNN的权重和发射阈值作为基于脉冲的反向传播的初始化步骤。然后,我们用基于脉冲的反向传播训练这个初始化的网络,训练几个 epochs,以减少延迟或时间来进行推理。
  • 我们提出了一种新的基于脉冲时间依赖的反向传播(STDB,标准的STBP一个变种),利用神经元的脉冲时间来计算代理梯度。参数的更新是由脉冲的发生触发的,梯度的计算是基于神经元产生输出脉冲的当前的时间和的最近时间的时间差。这是受Hebb原理启发的,该原理指出突触的可塑性取决于连接到突触的神经元的脉冲活动。
  • 我们的混合方法与新颖的代理梯度下降法允许训练大规模的SNN,而不需要在基于脉冲的反向传播过程中爆炸性的内存。我们对Imagenet和CIFAR数据集上的大型SNN(VGG、ResNet-like架构)进行了评估,结果显示与类似的ANN和转换后的SNN相比,我们的混合方法在计算成本和能量上都更高效。

3 SPIKE TIMING DEPENDENT BACKPROPAGATION (STDB)

  在这一节中,我们描述了脉冲神经元模型,推导提出的基于代理梯度学习的方程,提出了SNN的权重初始化方法,讨论了ANN-SNN转换的约束条件,并总结了整个训练方法。

3.1 LIF神经元模型

  神经元模型定义了神经元内在状态动力学特性和产生脉冲的触发方式。微分方程如下:
τ d U d t = − ( U − U rest  ) + R I \tau \frac{d U}{d t}=-\left(U-U_{\text {rest }}\right)+R I τdtdU=(UUrest )+RI
  上述方程以连续域的方式表示并且更适合生物仿真。我们以Pytorch框架下的离散方式,单个突触后神经元的迭代模型如下:
u i t = λ u i t − 1 + ∑ j w i j o j t − v o i t − 1 o i t − 1 = { 1 ,  if  u i t − 1 > v 0 ,  otherwise  \begin{array}{c} u_{i}^{t}=\lambda u_{i}^{t-1}+\sum_{j} w_{i j} o_{j}^{t}-v o_{i}^{t-1} \\ o_{i}^{t-1}=\left\{\begin{array}{ll} 1, & \text { if } u_{i}^{t-1}>v \\ 0, & \text { otherwise } \end{array}\right. \end{array} uit=λuit1+jwijojtvoit1oit1={1,0, if uit1>v otherwise 
  这里 u u u是膜电势,下标 i i i j j j分别代表突触后和突触前神经元,上标 t t t代表时间步长, λ \lambda λ是膜电势中的泄露常数, w w w是连接突触前后神经元的权重, o o o是二进制输出脉冲, v v v是发放阈值。这种减去阈值的方式被称为软重置。这种方式能够使脉冲神经元在超过发射阈值的额外膜电势结转到下一个时间步骤,从而减少了信息损失。

3.2 STDB学习规则

  神经元动力学(等式2)表明,神经元在某一特定时间的状态经常取决于它在以前时间的状态。这在网络中引入了隐性递归连接(Neftci等人,2019)。因此,学习规则必须在进行空间信用分配的同时进行时间信用分配。信用分配指的是根据网络参数对损失函数的贡献来分配creditblame的过程。空间信用分配确定了结构性网络参数(如权重),而时间信用分配确定了哪些过去的网络活动对损失函数的贡献。 梯度下降学习算法同时解决了信用分配问题:空间信用分配由导数的链式规则在空间上将误差分布到所有层,而时间上的信用分配是通过在时间上展开网络并使用相同的导数链规则进行时间反向传播(BPTT)来完成的(Werbos等,1990)。在BPTT中,网络在所有时间步骤中都被展开,最终输出被计算为每个时间步骤的输出之和。损失函数被定义在输出之和上。

  输出层的神经元的动力学由公式(3)描述,其中泄漏部分被移除(λ=1),神经元只对输入进行积分而不发射。这就消除了定义脉冲计数损失函数的困难(Lee等人,2019)。
u i t = u i t − 1 + ∑ j w i j O j u_{i}^{t}=u_{i}^{t-1}+\sum_{j} w_{i j} O_{j} uit=uit1+jwijOj
  输出层的神经元数量与分类任务中的类别数量相同。该网络的输出通过一个输出概率分布的softmax层。损失函数被定义为真实输出和网络预测分布之间的交叉熵。
L = − ∑ i y i log ⁡ ( p i ) p i = e u i T ∑ k = 1 N e u k T \begin{array}{c} L=-\sum_{i} y_{i} \log \left(p_{i}\right) \\ p_{i}=\frac{e^{u_{i}^{T}}}{\sum_{k=1}^{N} e^{u_{k}^{T}}} \end{array} L=iyilog(pi)pi=k=1NeukTeuiT
   L L L是损失函数, y y y是真实输出, p p p是预测值, T T T是总的时间步数, u T u^T uT是输出层的神经元在所有时间步数中累积的膜电位, N N N是任务中的类别数。对于更深的网络和更长的时间步长,BPTT算法的截断版被用来避免内存问题。在截断版中,损失是在 T T T之前的某个时间步长上根据 t ′ t' t为止的膜电势计算出来的。损失被反向传播到所有层,损失梯度被计算和存储。由此,计算图的历史被清理掉以节省内存。在以后的时间 ( 2 t ′ , 3 t ′ , . . . T ) (2t',3t',...T) 2t3t...T中,损失梯度的后续计算与 t ′ t' t处的梯度相加,得到最终梯度。优化器根据梯度之和更新 T T T处的参数。梯度下降学习的目标是使损失函数最小化。这是通过反向传播误差和更新与导数方向相反的参数来实现的。神经元在最后一层的膜电势损失函数的导数可以表述为:
∂ L ∂ u i T = p i − y i \frac{\partial L}{\partial u_{i}^{T}}=p_{i}-y_{i} uiTL=piyi
  为了计算当前时间的梯度,上一步的膜电势被认为是一个输入量。梯度以如下的方式更新参数:
W i j = W i j − η Δ W i j Δ W i j = ∑ t ∂ L ∂ W i j t = ∑ t ∂ L ∂ u i T ∂ u i T ∂ W i j t = ∂ L ∂ u i T ∑ t ∂ u i T ∂ W i j t \begin{array}{c} W_{i j}=W_{i j}-\eta \Delta W_{i j} \\ \Delta W_{i j}=\sum_{t} \frac{\partial L}{\partial W_{i j}^{t}}=\sum_{t} \frac{\partial L}{\partial u_{i}^{T}} \frac{\partial u_{i}^{T}}{\partial W_{i j}^{t}}=\frac{\partial L}{\partial u_{i}^{T}} \sum_{t} \frac{\partial u_{i}^{T}}{\partial W_{i j}^{t}} \end{array} Wij=WijηΔWijΔWij=tWijtL=tuiTLWijtuiT=uiTLtWijtuiT
  这里 η \eta η代表学习率, W i j t W_{ij}^t Wijt代表时间步 t t t处用于计算的权重。输出层中的神经元不产生脉冲,因此不会遇到不可微分的问题。隐层神经元按照如下方式更新:
Δ W i j = ∑ t ∂ L ∂ W i j t = ∑ t ∂ L ∂ o i t ∂ o i t ∂ u i t ∂ u i t ∂ W i j t \Delta W_{i j}=\sum_{t} \frac{\partial L}{\partial W_{i j}^{t}}=\sum_{t} \frac{\partial L}{\partial o_{i}^{t}} \frac{\partial o_{i}^{t}}{\partial u_{i}^{t}} \frac{\partial u_{i}^{t}}{\partial W_{i j}^{t}} ΔWij=tWijtL=toitLuitoitWijtuit
  这里 o i t o_i^t oit表示阈值函数,其关于 u i t u_i^t uit的导数在处处为零并且与脉冲时间无关。不连续脉冲带来的非线性性的问题可以由代理梯度函数的引入来解决,代理梯度函数是真实梯度的连续估计值:
∂ o i t ∂ u i t = α e − β Δ t \frac{\partial o_{i}^{t}}{\partial u_{i}^{t}}=\alpha e^{-\beta \Delta t} uitoit=αeβΔt
  这里 α \alpha α β \beta β是常数, Δ t \Delta t Δt是突触后神经元产生脉冲的当前时间和上一时间的差。这是一个范围在零到时间步总长 T T T的整数。
Δ t = ( t − t s ) , 0 < Δ t < T , Δ t ∈ Z \Delta t=\left(t-t_{s}\right), 0<\Delta t<T, \Delta t \in \mathbb{Z} Δt=(tts),0<Δt<T,ΔtZ
   α \alpha α β \beta β的值是取决于 T T T的值。如果T很大,β就会降低,以减少指数衰减,这样一个脉冲就可以为以后的时间步长贡献梯度。对于大的T,α的值也会降低,因为梯度可以通过许多时间步长传播。梯度在每个时间步长中被加总,因此大的α可能导致梯度的爆炸。代用梯度可以对所有的Δt值进行预先计算,并存储在一个查找表中,以加快计算。参数更新是由脉冲活动触发的,但是在脉冲时间之后的时间步长中,误差梯度仍然是不为零的。这使得该算法能够避免 "dead neuron "问题,即在没有脉冲的情况下不会发生学习。图1显示了不同Δt值下的激活梯度,对于长时间没有活动的神经元,梯度呈指数级下降。在生物学习的Hebbian模型中,参数更新依赖于活动。这在实验中可以观察到,脉冲时间依赖性可塑性(STDP)学习规则对在一个时间窗口内脉冲的一对神经元的权重进行调制(Song等人,2000)。

在这里插入图片描述

  **图1:加压神经元激活函数(公式11)的代理梯度。 **

α = 0.3, β = 0.01。梯度是为每个神经元计算的,Δt定义了当前模拟时间和神经元的最后一次脉冲时间之间的时间差。例如,如果一个神经元在 t s = 12 t_s=12 ts=12时尖峰,其梯度将在 t = 12 t=12 t=12时达到最大值(Δt=0),并在以后的时间步骤中逐渐减少。如果同一个神经元后来在 t s = 24 t_s=24 ts=24时出现脉冲,它以前的脉冲历史将被覆盖,并且t=24以后的梯度计算将只考虑最近的脉冲。这就避免了在内存中存储所有脉冲历史的开销。

4 SNN WEIGHT INTIALIZATION

  构建用于推理的SNN的一个普遍方法是ANN-SNN转换(Diehl等人,2015;Sengupta等人,2019)。由于网络是用模拟激活训练的,所以它不存在不可微的问题,同时利用了ANN的训练技术。该转换过程有一个主要的缺点:如第1节所述,它有很长的推理延迟(2500个时间步骤)。由于没有规定在转换后根据脉冲活动来优化参数,网络不能利用尖峰的时间信息。在本论文中,我们建议将转换过程作为STDB的初始化技术。转换后的权重和阈值作为优化器的良好初始化,STDB学习规则被应用于时间和空间的信用分配。

  算法1解释了ANN-SNN的转换过程。SNN中的阈值电压需要根据ANN的权重来调整。Sengupta等人(2019)展示了两种方法来实现这一点:权重正常化和阈值平衡。在权重归一化中,权重被归一化因子缩放,阈值被设置为1;而在阈值平衡中,权重不变,阈值被设置为归一化因子。两者的效果相似,都可以用来设置阈值。我们采用阈值平衡法,归一化因子被计算为SNN中相应卷积/线性层的最大输出。最大值是在所有时间步骤的小批量输入中计算出来的。

在这里插入图片描述
在这里插入图片描述

  训练ANN的转换过程有几个限制条件(Sengupta等人,2019;Diehl等人,2015)。训练神经元时不使用偏置项,因为SNN中的偏置项对阈值电压有间接影响,这增加了阈值平衡的难度,过程中更容易出现转换损失。没有偏置项,就不能使用批量归一化(Ioffe & Szegedy, 2015)作为ANN中的正则器,因为它将每一层的输入偏置为零平均值。作为替代方案,Dropout(Srivastava等人,2014)被用作ANN和SNN训练的正则器。第5节将进一步讨论SNN中Dropout的实现。池化操作被广泛用于ANN中,以减少卷积图的大小。有两种流行的变体:最大池化和平均池化(Boureau等人,2010)。最大(平均)池化输出神经元激活的核空间中的最大(平均)值。在SNN中,激活是二进制的,执行最大池化将导致下一层的重大信息损失,所以我们对ANN和SNN都采用平均池化(Diehl等人,2015)。

5 NETWORK ARCHITECTURES

  在这一节中,我们描述了对VGG(Simonyan & Zisserman, 2014)和残差架构(He et al., 2016)进行的修改,用于混合学习,并讨论这两种架构的阈值计算过程。

5.1 VGG 结构

  在VGG结构中,除输入和输出层外,所有层都要进行阈值平衡。对于每个隐藏的卷积/线性层,在所有的时间步中计算出神经元的最大输入,并设置为该层的阈值。阈值分配是按算法1中描述的顺序进行的。所有层的阈值计算不能平行进行(在一个前向通道中),因为在前向方法(算法3)中,我们需要在每个时间步的阈值来决定神经元是否应该发放脉冲。

在这里插入图片描述

5.2 RESIDUAL 结构

  残差架构在不相邻的层之间引入短路连接。为了最小化ANN-SNN的转换损失,Sengupta等人(2019)进行了各种考虑。He等人(2016)提出的原始残差架构使用了一个具有宽核(7×7,跨度2)的初始卷积层。为了进行转换,这被一个由一系列三个卷积层(3×3,步长1)组成的预处理块所取代,中间有剔除层(图2)。阈值平衡机制仅适用于这三个层,基本块中的层具有统一的阈值。

在这里插入图片描述

  图2:SNN的残差结构

6 OVERALL TRAINING ALGORITHM

  算法1定义了基于ANN-SNN转换的SNN参数(权重、阈值)的初始化过程。算法2和3显示了用STDB训练SNN的机制。算法2初始化了每个小批的神经元参数,而算法3执行前向和后向传播并计算信用分配。一层中所有神经元的阈值电压是相同的,在训练过程中不被改变。对于每个dropout层,我们为每个小批输入初始化一个掩码(M)。dropout层的功能是随机剔除一定数量的输入,以避免过度拟合。在SNN的情况下,输入被表示为一个脉冲序列,我们希望在输入的整个持续时间内保持dropuints单元相同。因此,每个小批的随机掩码(M)被初始化(算法2),输入与掩码逐一相乘,以生成dropout层的输出(Lee等人,2019)。泊松发生器函数输出一个泊松脉冲序列,其速率与输入中的像素值成正比。在每个时间步骤中,输入图像中的每个像素都会产生一个随机数。该随机数与归一化的像素值进行比较,如果随机数小于像素值,就会产生一个输出脉冲。这就产生了一个泊松脉冲序列,如果在很长一段时间内平均,其速率相当于像素值。输入的加权和被累积到第一个卷积层的膜电位中。STDB函数比较膜电位和该层的阈值以产生一个输出脉冲。输出脉冲的神经元其在S中的相应entry以当前时间步长(t)更新。最后的脉冲时间被初始化为一个大的负数(算法2),以表示在开始时最后的脉冲发生在负无穷大的时间。这对所有层都是重复的,直到最后一层。对于最后一层,输入在所有的时间步骤中被累积,并通过一个softmax层来计算多类概率。交叉熵损失函数被定义在softmax的输出上,而权重则根据STDB规则通过执行时间和空间信用分配进行更新。

7 EXPERIMENTS

  我们在CIFAR数据集和ImageNet数据集上进行了实验,实验结果如表1所示。

在这里插入图片描述

表1:CIFAR10、CIFAR100和ImageNet数据集的分类结果(Top-1)。

第1栏显示了网络结构。第2栏显示了在第3节所述的约束条件下训练的ANN准确性。第3栏显示了从具有阈值平衡的ANN转换到T=2500时的SNN精度。第4栏显示了同一转换后的SNN在较低的时间步长和调整的阈值下的性能。第5栏显示了用STDB训练第4栏网络后的性能,时间少于20个epochs。

8 ENERGY-DELAY PRODUCT ANALYSIS OF SNNS

  SNN中的单个尖峰消耗的能量是恒定的(Cao等人,2015)。SNN的能量-延迟的一阶分析取决于脉冲和时间步长的总数。图3显示了对VGG16架构的CIFAR10测试集的1500个样本进行评估时,每层的平均尖峰数。平均数的计算方法是将一个层的所有脉冲在100个时间步数内相加,除以该层的神经元数量。例如,网络的第10层的平均脉冲数是5.8,这意味着在100个时间步长期间,该层的每个神经元在所有输入样本中平均发放脉冲5.8次。较高的脉冲活动对应着较低的能效。对转换后的SNN和用转换和STDB训练的SNN的平均脉冲数进行了比较。在等效条件下(时间步长、阈值电压、输入等),用转换和STDB训练的SNN在所有层上的平均脉冲数要少1.5倍,与转换后的SNN相比,实现了更高的精度。当对较大的时间步长进行模拟时,转换后的SNN进一步降低了能量-延迟积,而准确性的提高却微乎其微(Sengupta等人,2019)。

9 RELATED WORK

  Bohte等人(2000)提出了一种直接训练SNN的方法,即只在脉冲时间跟踪神经元的膜电位,并在脉冲时间仅根据膜电位反向传播误差。由于 "dead neuron "问题,这种方法不适合具有稀疏活动的网络:当神经元没有脉冲时,不会发生学习。在我们的工作中,我们需要一个脉冲来开始学习,但梯度贡献在以后的时间步骤中继续,如图1所示。Zenke和Ganguli(2018)在一个单一的时间步长中,在突发神经元的膜电位上得出了一个基于代理梯度的方法。误差只在一个时间步长进行反向传播,只有该时间步长的输入对梯度有贡献。这种方法忽略了早期脉冲输入的影响。在我们的方法中,误差在每个时间步长进行反向传播,而权重的更新是在所有时间步长相加的梯度上进行的。Shrestha和Orchard(2018)提出了一个与本工作中提出的类似的梯度函数。他们使用膜电位和阈值之间的差异来计算梯度,而本工作中使用的是脉冲时间的差异。膜电位是一个连续的值,而脉冲时间是一个由时间步数限定的整数值。因此,取决于脉冲时间的梯度可以预先计算并存储在一个查找表中,以加快计算速度。他们在MNIST数据集的两个卷积层的浅层架构上评估了他们的方法。在这项工作中,我们训练了具有多个堆叠层的深度SNN,用于复杂的分析任务。Wu等人(2018)在SNN上通过时间进行反向传播,在膜电位上定义了代理梯度。代用梯度被定义为膜电位的片状线性或指数函数。文献中提出的其他代理梯度都是在膜电位上计算的(Neftci等人,2019)。Lee等人(2019)将神经元输出近似为连续的低通滤波的脉冲。他们用这个近似的连续值来进行反向传播。文献中大多数关于SNN的直接训练或基于转换的方法的工作都是针对简单分类问题的浅层架构进行实验。在表2中,我们将我们的模型与在CIFAR10和ImageNet数据集上报告准确性的模型进行了比较。Wu等人(2019年)通过使用专门的编码层来捕获输入精度,在12个时间步骤中实现了收敛。计算这种编码层的硬件和能量影响已经超出了本工作的范围。我们的模型在较少的时间步数下表现得比其他所有模型都好。

10 CONCLUSIONS

  用反向传播直接训练SNN的计算成本很高,速度也很慢,而ANN-SNN的转换则存在高延迟。为了解决这个问题,我们为深度SNN提出了一种混合训练技术。我们采用了从ANN转换而来的SNN,并将其权重和阈值作为SNN基于脉冲的反向传播的初始化。然后,我们在这个初始化的网络上进行基于脉冲的反向传播,以获得一个能以较少时间步数运行的SNN。由于有一个良好的初始起点,训练SNN所需的历时数也减少了。与纯粹的转换SNN相比,在减少时间步数的情况下,训练后的SNN具有更高的准确性和更低的脉冲/推理数量。通过时间的反向传播是通过使用神经元的脉冲时间定义的代理梯度进行的,它捕捉了时间信息并有助于减少时间步骤的数量。我们在CIFAR和ImageNet数据集上测试了我们的算法,并以较少的时间步长实现了最先进的性能。

11 REFERENCES(Part)

【1】Going Deeper in Spiking Neural Networks: VGG and Residual Architectures.

【2】Direct Training for Spiking Neural Networks: Faster, Larger, Better

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值