论文阅读——Deep Residual Learning in Spiking Neural Network

相关工作:
两种主要的训练深层SNNs的方法:
1、ANN to SNN的方法:
先训练一个有ReLU激活函数的有替代梯度的bp,然后把ANN转换到SNN,通过把ReLU激活函数转换成一个脉冲神经元,和增加一些比例缩放操作,类似权重归一化和阈值平衡。一些最近的转换方法已经达到了损失更少的VGG16。然而,这些被转换的SNNs需要一个更长的时间去在精度上与原始的ANN竞争因为这些转换方法是基于比率编码的,这也提高了SNN的延时和约束了务实的应用。
2、BP的方法可以分成两类:
第一类是通过仿真时间步数上打开的网络计算梯度,类似于BPTT。作为与阈值引发的发放有关的梯度是不可区别的,替代的梯度被经常使用。
第二类是计算在脉冲时间,存在的与细胞膜电势有关的脉冲的时间的梯度

脉冲残差结构:
先前的ANN to SNN方法注意到了朴素前馈ANN和残差ANN之间的区别,并且做了特殊的归一化给转换方法。Sengupta等人提出了Spike-Norm方法去平衡SNN的阈值和通过转换VGG和ResNet到SNN上。已经存在的基于BP的方法用在用几乎相同的结构和ResNet。Lee等人评估他们的定制的替换的方法在浅层ResNets,它们的深度不超过11层,郑等人提出了依赖阈值的批归一化算法去替换前期的批归一化算法并且成功地直接用替换的梯度通过增加依赖阈值的批归一化发放,训练了34层的脉冲残差网络额50层的脉冲残差网络。
3、方法
脉冲神经元是SNNs的基本计算单元。我们用一个被整合的模型去描述所有种类脉冲神经元的动态特性,包括了下面这些离散时间公式
在这里插入图片描述
X[t]是在时间步骤t的输入电流,H[t]和V[t]分别指的是在神经元动态特性之后的细胞膜电势和在时间t的一个脉冲引发之后的细胞膜电势。Vth是发放阈值,函数f描述神经元的动态特性和对于不同的脉冲神经元模型有不同的形式。比如说,IF和LIF神经元模型的函数f分别如下。
在这里插入图片描述
τ代表了细胞膜时间常数公式23描述了脉冲代和重置过程。
在这里插入图片描述
脉冲ResNet的缺点
残差块是ResNet的关键组件。图1a展示了ResNet的基本块,Xl,Yl是ResNet里第l层块的输入和输出,Conv是卷积层,BN是批归一化层,ReLU指示整流线性单元激活函数。
脉冲ResNet不是对所有神经元模型适用的去实现identity mapping。ResNet中的临界的概念之一是identity mapping。如果增加层实现了identity mapping,一个更深的模型应该已经训练了误差且不比它的浅层副本更好。然而,它不能去训练增加层去实现identity mapping在一个可行的时间,结果再更深的模型比浅层模型表现更差(梯度消失问题)。为了解决这个问题,通过增加一个捷径连接的残差学习被提出。如果我们用Fl去表示ResNet中的第l层的残差块的残差mapping——两个卷积层的堆栈,和脉冲ResNet,然后这个图1a和b中的残差块能被用公式表示为
在这里插入图片描述
这个公式6的残差块使它更简单去实现ANNs中的identity mapping。为了观察这个,Fl(Xl)=0,Yl=ReLU(Xl)。在大多数例子中,Xl是先前的ReLU层的激活函数和Xl>=0。因此Yl=ReLU(Xl)=Xl,这是identity mapping。

和ResNet不同,脉冲ResNet约束了脉冲神经元的模型去实现identity mapping。当Fl(S[t])=0,Ol[t]=SN(S【t】)!=Sl【t】。去传输Sl【t】和使SN(Sl【t】)=Sl【t】,脉冲神经元SN在第l残差块在接受一个脉冲之后需要去发放一个脉冲,并且在没有
接受到脉冲的时候保持平静在时间t的时候。它工作为IF神经元。所以设置Vth在0到1之间去确信发放的时候大于阈值,没发放的时候小于阈值。然而,考虑到一些拥有复杂神经元的动态特性的脉冲神经元模型,它是困难的去实现SN(l【t】)=Sl【t】。比如说LIF神经元考虑到了一个可学习的细胞膜时间常数τ。当X【t】=1,H【t】=1/τ。它很难去发现一个发放阈值确信H【t】>Vth因为τ在被优化器训练的时候会变。
脉冲ResNet被梯度消失和梯度爆炸问题所困扰。考虑一个拥有k个序列块的脉冲ResNet去传输Sl【t】,并且这个identity mapping条件被达到。指示第j个元素在Sl【t】和Ol【t】中分别对应Slj【t】和Olj【t】,第l+k-1个残差块的输出的梯度与第l层的残差块的输入有关能一层一层被计算。
在这里插入图片描述
第一个等式作为identity mapping条件被相遇并且在这里插入图片描述第二个等式在这里插入图片描述。考虑到Slj【t】只能取0和1的事实,在这里插入图片描述一般不满足用被提及的替代的函数。因此,梯度消失或者梯度爆炸的问题易于发生在深层脉冲ResNet中。
基于上面的分析,我们相信先前的脉冲ResNet忽视了被脉冲神经元造成的高度非线性问题,并且能几乎不实现残差学习。尽管如此,图一b中的基本块仍然是对拥有额外的归一化的ANN2SNN仍然是下降的,从ANN转换来的SNN致力去使用发放率去匹配原始的ANN的激活函数。
3.3 SEW ResNet
这里我们提出了SEW残差块去实现残差学习在SNNs中。它能简单的实现identity mapping和克服梯度消失和梯度爆炸问题在同样的时间。SEW残差块能用公式表达成
在这里插入图片描述
g代表一个拥有两个脉冲tensor作为输入的智慧元素函数的。这里我们用Al【t】去指示残差mapping去被学习为Al【t】=SN(Fl(Sl【t】))。
SEW ResNet 能简单的实现identity mapping。通过利用脉冲的二元特性,我们能找到不同的智慧元素函数g满足identity mapping。
在这里插入图片描述element-wise函数。
在这里插入图片描述
明确的,当选择ADD和IAND作为智慧元素函数g,identity mapping被实现通过设置Al【t】=0,这能够简单的通过设置最后批归一化层的权重和偏置为0去实现。然后我们能得到Ol【t】=g(Al[t],Sl[t])=g(SN(0),Sl[t])=g(0,Sl[t])=Sl[t]。这是可应用到所有神经元模型里的。用AND作为智慧元素函数g的时候,我们设置Al【t】=1去得到identity mapping。它能被实现通过设置最后的BN的权重为0和偏置为一个足够大的常数去造成脉冲。当最后的SN是IF神经元的时候,设置偏置为Vth。然后我们有Ol【t】=1与Sl【t】=Sl【t】。注意用AND智慧元素也许会发生和脉冲ResNet相同的问题。这是困难的去控制一些拥有复杂的神经元动态特性去产生脉冲神经元模型在一个明确的时间。
降采样的公式
标记地,当一个块的输入和输出有不同的维度,这个捷径被设置为卷积层用步长大于1,而不是identity连接,去表现降采样。ResNet和脉冲ResNet利用再捷径中的没有ReLU层的{conv-BN}。相反的,我们补充了一个SN在捷径里。

SEW ResNet能克服梯度消失和梯度爆炸问题。
SEW块与在ANNs中增加的块(RBA)的ReLU函数相似,能够用公式表达成
Yl = ReLU(Fl(Xl))+Xl
RBA块因为X(l+1) = Yl>=Xl,会造成无穷大输出的问题。但是因为SEW的输入都是1或0,并且k个序列最大不会超过k,所以他不会产生无穷大输出。
但identity mapping被实现,第(l+k-1)个SEW块的输出的梯度与第l个SEW块的输入有关能被逐层计算:
在这里插入图片描述
第一个公式在这里插入图片描述,第二个公式设置在这里插入图片描述在这里插入图片描述
,且梯度是个常数,所以克服了梯度消失和梯度爆炸问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值