【论文笔记】Deep Residual Learning in Spiking Neural Networks

写在前面

论文链接arxiv
更多SNN相关知识,见SpikingJelly
下文内容基于个人理解,难免有误。

Abstract

实现脉冲版本的ResNet即SEW ResNet。
SEW ResNet可以克服Spiking ResNet的缺点,实现恒等映射、解决梯度消失/爆炸问题、加深模型深度(超过100层)。

1. Introduction

ResNet的目的,使用残差学习加深模型深度。
Spiking ResNet,采用ANN2SNN的方法,用脉冲神经元替代ReLu,效果不错,但有如下问题:

  • 并非是对SNN模型的直接训练。
  • Spiking ResNet在使用某些种类的脉冲神经元时,不能实现恒等映射。
  • 即使满足恒等映射,也存在梯度爆炸/消失问题。

2. Related Work

2.1. Learning Methods of Spiking Neural Networks

得到较深的SNN模型有两种方法:

  • ANN2SNN,即像通常那样训练ANN,训练完成后把ReLu替换为脉冲神经元。缺点是,这样得到的SNN在工作时,需要更长的时间才能出预测结果 (其中原因目前不了解,因为我对ANN2SNN不太了解)
  • 反向传播方法,又分两类:
    1. 类似于BPTT,将网络在时间维度上展开。通常需要使用代理梯度(surrogate gradient),这样就不必局限于rate-coding了 (不太理解)
    2. The second method computes the gradients of the timings of existing spikes with respect to the membrane potential at the spike timing (不理解)

2.2. Spiking Residual Structure

现在也有基于反向传播的Spiking ResNet,但结构与ResNet类似。

3. Methods

3.1. Spiking Neuron Model

介绍现有的脉冲神经元模型,及数学公式。我上篇博文也写过,不加赘述了。
论文中使用代理梯度方法,也就是,将σ的梯度用于反向传播,σ是与不可微的阶跃函数形状类似的可微函数。

3.2. Drawbacks of Spiking ResNet

有两个缺点,见下文加粗处。
符号含义:F是残差函数,X是输入,S也是输入(只不过是脉冲形式),Y和O是输出,右上角标代表第l层(layer),[t]代表时刻t,SN代表脉冲神经元(spiking neuron)。
在这里插入图片描述
展示三种残差块,左图为ResNet,中图为Spiking ResNet,右图为本论文的SEW ResNet。
在这里插入图片描述
公式(6)对应左图,公式(7)对应中图。
公式(6)(即原ResNet)能实现恒等映射:因为X作为输入,一般也是上一层ReLu的输出,自然有X≥0;当残差F为0时,公式(6)就完成恒等映射。

公式(7)较难实现恒等映射:
S作为输入的脉冲,是非0即1的;当残差F为0时,公式(6)变为O[t]=SN(S[t]),而SN(S[t])往往不等于S[t],这就不能实现恒等映射。
下面讨论实现SN(S[t])=S[t]的可能性:
脉冲神经元在时刻t是否释放脉冲,与时刻t输入、时刻t-1的自身电压、阈值这三者有关。那么进行构造,阈值为1(或小于1的正数),时刻t-1的自身电压为0(规定静息电位为0,就能满足),这样的IF脉冲神经元,就能做到SN(S[t])=S[t]。
即使如此,可见条件也比较苛刻。而且对于复杂的LIF神经元,条件会更苛刻。
(当然,不排除其他情况下也有SN(S[t])=S[t]的可能,只是条件会更苛刻、更偶然)

公式(7)存在梯度爆炸/消失问题:
假定公式(7)满足了恒等映射条件,我们取k个残差块,假定全部进行恒等映射,则有Sl [t]=Sl+1 [t]=…=Sl+k-2 [t]=Sl+k-1 [t]=Ol+k-1 [t],即这k个块的输入、输出都相等。这样在计算梯度时:
在这里插入图片描述
符号含义:Θ‘是替代梯度。
上式:第一个等号是链式法则的展开;第二个等号是将脉冲神经元SN的替代梯度引入;第三个“推出”符号是,因每个S都相等,所以累乘的每个项都相等,所以可以分类讨论并计算出数值结果。
从公式(8)可见,要满足梯度为1,需要替代函数在S-Vth处的梯度为1,这还是比较苛刻的。
所以梯度爆炸/消失问题难以避免。

论文中还点出,造成上述问题的原因是,脉冲神经元的非线性性更强,显然比ReLU强,所以单纯把ReLU替换为SN不太合理。
另外,Nonetheless, the basic block in Fig. 1(b) is still decent for ANN2SNN with extra normalization [17, 49], as the SNN converted from ANN aims to use firing rates to match the origin ANN’s activations. (目前我还不太懂,因为ANN2SNN不了解)

3.3. Spike-Element-Wise ResNet

在这里插入图片描述
公式(9)描述了上面那三张图中的右图,也就是本文新提出的方法。
实际就是,把残差F用SN激活一下,转换成脉冲A,然后脉冲A与输入脉冲S做g运算。
(公式(7)让非脉冲和脉冲做加法运算,就比较别扭;这里统一了形式,让脉冲和脉冲运算,就比较自然)
g是element-wise function,这也是SEW ResNet的来源,即spiking element-wise。
在这里插入图片描述
论文中为g运算准备了3种形式。
至于为何有个令人疑惑的IAND,结合一下下文,应该是因为,AND作为位运算,在运算速度等方面很有优势,但AND在实现恒等映射时有些缺陷,该缺陷可以通过“取反”来克服,所以就有了IAND
提出新方法,自然是为了解决3.2.中的两个缺点,下面来解释是如何解决的:
实现恒等映射:

  • 如果g是ADD或IAND,则令最后那个BN拥有全0的权重和全0的偏置,那么就有F=0,进而O=g(SN(0),S)=g(0,S)=S。
  • 如果g是AND,则令最后那个BN拥有全0的权重和较大的偏置(比神经元的阈值高),那么就有SN(F)=1,进而O=g(1,S)=S。但是,这里这种让神经元在特定时间步总是产生脉冲的做法,是比较难控制的,比如对于PLIF这种复杂的神经元。

总之,恒等映射是能实现的。
(这里我有点困惑,为什么去调整BN?直接把SN的阈值设成0或者设成足够大的数,不是更好?而且对于PLIF也适用。我能想到的解释是,SN毕竟是带状态的东西,还得考虑前一时刻的电压,以及自动梯度等,这就有些麻烦了,而BN只是个无状态的线性变换而已)

解决梯度消失/爆炸问题:
公式(9)以及那个流程图说描述的SEW块,比较像RBA块,RBA块的公式如下:
在这里插入图片描述
(解释一下,X是上一层ReLu的产物,这里把残差F也ReLU一下,再和X做加法运算。这就确实和SEW块很类似了)
RBA块被何凯明老师批判,因为两个加数都是经过ReLU的,自然都是大于等于0的,二者相加会导致Y≥X,随着层数加深,这种放大效果会越来越大。
但SEW块没有这个问题:

  • 若g是AND或IAND,这种位运算的结果自然都是小于等于1的。
  • 若g是ADD,g的运算结果作为输入传递到下一层,在再次参与g运算前,会先被SN控制上界为1,这样的话,每层的增量不会超过1。

(在RBA结构中,与SN等地位的是ReLU,ReLU显然是不会控制上界的)
上面这些貌似和梯度爆炸/消失没关系,只是引申

下面讨论梯度爆炸/消失问题:
假定恒等映射已实现,我们取k个残差块,假定全部进行恒等映射:
在这里插入图片描述
上式:第一个等号是链式法则展开;第二个等号是基于恒等映射条件,根据上文对g的讨论,进行赋值(A=SN(F),由残差生成的脉冲);第三个等号是,通常的运算。
可见,在恒等映射时,梯度总为1,没有梯度爆炸/消失问题。

综上,SEW ResNet就可以层数非常深了。

4. Experiments

5. Conclusions

提出SEW ResNet,克服了Spiking ResNet的两个缺点。实现了非常深层的SNN模型。

写在后面

  • 作为激活函数,SN比ReLU的非线性强得多,可能会有其他应用或效果。
  • 脉冲的二进制特点再次显现:RBA会有无穷大问题,但与RBA结构类似的SEW就不会,因为SNN传递的输入输出是二进制的。今后如果涉及什么无穷大、无穷小、上下界,都可以从二进制脉冲角度考虑一下。
  • 论文的切入点,应该是二元运算的成员,应该是相同种类的(都是脉冲)。在原ResNet中,都是浮点数。
  • 本文只讨论了残差块,其实还有下采样块,如下图,出发点还是让两个脉冲做g运算,其他的不具体谈了:
    在这里插入图片描述
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
deep residual learning for image recognition是一种用于图像识别的深度残差学习方法。该方法通过引入残差块(residual block)来构建深度神经网络,以解决深度网络训练过程中的梯度消失和梯度爆炸等问题。 在传统的深度学习网络中,网络层数增加时,随之带来的问题是梯度消失和梯度爆炸。这意味着在网络中进行反向传播时,梯度会变得非常小或非常大,导致网络训练变得困难。deep residual learning则使用了残差连接(residual connection)来解决这一问题。 在残差块中,输入特征图被直接连接到输出特征图上,从而允许网络直接学习输入与输出之间的残差。这样一来,即使网络层数增加,也可以保持梯度相对稳定,加速网络训练的过程。另外,通过残差连接,网络也可以更好地捕获图像中的细节和不同尺度的特征。 使用deep residual learning方法进行图像识别时,我们可以通过在网络中堆叠多个残差块来增加网络的深度。这样,网络可以更好地提取图像中的特征,并在训练过程中学习到更复杂的表示。通过大规模图像数据训练,deep residual learning可以在很多图像识别任务中达到甚至超过人类表现的准确性。 总之,deep residual learning for image recognition是一种利用残差连接解决梯度消失和梯度爆炸问题的深度学习方法,通过增加网络深度并利用残差学习,在图像识别任务中获得了突破性的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值