深度残差学习在脉冲神经网络中的应用
Fang W, Yu Z, Chen Y, et al. Deep residual learning in spiking neural networks[J]. Advances in Neural Information Processing Systems, 2021, 34: 21056-21069.
摘要
深度脉冲神经网络 (SNNs) 因为使用离散的二进制激活和复杂的时空动态,对基于梯度的方法来说存在优化难题。鉴于 ResNet 在深度学习中的巨大成功,尝试用残差学习来训练深度 SNNs 是一个自然的想法。以前的脉冲 ResNet 模仿了 ANNs 中的标准残差块, 仅仅将 ReLU 激活层替换为脉冲神经元 ,但这种方法会出现退化问题,难以实现残差学习。
本文提出了一种新的 Spike-Element-Wise (SEW) ResNet,用于实现深度 SNNs 中的残差学习。我们证明了 SEW ResNet 可以轻松实现恒等映射(identity mapping),并克服脉冲 ResNet 的梯度消失和爆炸问题。
我们在 ImageNet、DVS Gesture 和 CIFAR10-DVS 数据集上对 SEW ResNet 进行了评估,结果显示 SEW ResNet 在准确性和时间步长方面都优于目前最先进的直接训练的 SNNs。此外,SEW ResNet 通过 简单增加层数可以获得更高的性能 ,这为训练深度 SNNs 提供了简便的方法。据我们所知,这是 首次能够直接训练超过 100 层的深度 SNNs 。我们的代码已发布在 fangwei123456/Spike-Element-Wise-ResNet: Deep Residual Learning in Spiking Neural Networks
1. 介绍
人工神经网络 (ANNs) 在图像分类、目标检测 、机器翻译 和游戏 等任务中取得了巨大成功。ANNs 成功的一个关键因素是深度学习,它通过多层网络学习多级抽象的数据表示。研究表明,深度网络在 计算效率 和 泛化能力 上优于浅层网络 。深度网络可以用较少的隐藏单元数表示复杂函数,而浅层网络需要指数级的隐藏单元。此外,网络的深度与其在实际任务中的表现密切相关。然而,最近的研究表明,随着网络深度的增加,准确性会先达到饱和点,然后迅速下降。为了解决这个退化问题,提出了残差学习 [14, 15],这种结构在许多“超深”网络中被广泛应用,并取得了领先的性能。
[14] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pages 770–778, 2016.
[15] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Identity mappings in deep residual networks. In European Conference on Computer Vision (ECCV), pages 630–645. Springer, 2016.
脉冲神经网络 (SNNs) 因其生物学合理性、事件驱动特性和低功耗,被认为是 ANNs 的潜在替代方案 [45]。
[45] Kaushik Roy, Akhilesh Jaiswal, and Priyadarshini Panda. Towards spike-based machine intelligence with neuromorphic computing. Nature, 575(7784):607–617, 2019
最近,深度学习方法被引入 SNNs,使得深度 SNNs 在一些简单分类任务中的表现接近 ANNs ,但在复杂任务中仍逊于 ANNs,如 ImageNet 分类 [47]。
[47] Olga Russakovsky, Jia Deng, Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang, Andrej Karpathy, Aditya Khosla, Michael Bernstein, et al. Imagenet large scale visual recognition challenge. International Journal of Computer Vision, 115(3):211–252, 2015.
为了提升 SNNs 的性能,自然会想到探索类似 ResNet 的深层网络结构。脉冲 ResNet [25, 60, 21, 17, 49, 12, 30, 64, 48, 42, 43] 作为 ResNet 的脉冲版本,通过模仿 ANNs 中的残差块,并将 ReLU 激活层替换为脉冲神经元来实现。
[25] Jaehyun Kim, Heesu Kim, Subin Huh, Jinho Lee, and Kiyoung Choi. Deep neural networks with weighted spikes. Neurocomputing, 311:373–386, 2018.
[60] Fu Xing, Ye Yuan, Hong Huo, and Tao Fang. Homeostasis-based cnn-to-snn conversion of inception and residual architectures. In International Conference on Neural Information Processing, pages 173–184. Springer, 2019.
[21] Sungmin Hwang, Jeesoo Chang, Min-Hye Oh, Kyung Kyu Min, Taejin Jang, Kyungchul Park, Junsu Yu, Jong-Ho Lee, and Byung-Gook Park. Low-latency spiking neural networks using pre-charged membrane potential and delayed evaluation. Frontiers in Neuroscience, 15:135, 2021.
[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.
[49] Abhronil Sengupta, Yuting Ye, Robert Wang, Chiao Liu, and Kaushik Roy. Going deeper in spiking neural networks: Vgg and residual architectures. Frontiers in Neuroscience, 13:95, 2019.
[12] Bing Han, Gopalakrishnan Srinivasan, and Kaushik Roy. Rmp-snn: Residual membrane potential neuron for enabling deeper high-accuracy and low-latency spiking neural network. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pages 13558–13567, 2020.
[30] Chankyu Lee, Syed Shakib Sarwar, Priyadarshini Panda, Gopalakrishnan Srinivasan, and Kaushik Roy. Enabling spike-based backpropagation for training deep neural network architectures. Frontiers in Neuroscience, 14, 2020.
[64] Hanle Zheng, Yujie Wu, Lei Deng, Yifan Hu, and Guoqi Li. Going deeper with directly-trained larger spiking neural networks. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 35, pages 11062–11070, 2021.
[48] Ali Samadzadeh, Fatemeh Sadat Tabatabaei Far, Ali Javadi, Ahmad Nickabadi, and Morteza Haghir Chehreghani. Convolutional spiking neural networks for spatio-temporal feature extraction. arXiv preprint arXiv:2003.12346, 2020.
[42] Nitin Rathi and Kaushik Roy. Diet-snn: Direct input encoding with leakage and threshold optimization in deep spiking neural networks. arXiv preprint arXiv:2008.03658, 2020.
[43] Nitin Rathi, Gopalakrishnan Srinivasan, Priyadarshini Panda, and Kaushik Roy. Enabling deep spiking neural networks with hybrid conversion and spike timing dependent backpropagation. In International Conference on Learning Representations (ICLR), 2020.
尽管从 ANN 转换而来的脉冲 ResNet 在几乎所有数据集上都达到了最先进的准确性,直接训练的脉冲 ResNet 尚未验证能够解决退化问题。
本文表明,脉冲 ResNet 不适用于所有神经元模型来实现恒等映射。即使满足恒等映射条件,脉冲 ResNet 仍然会遇到梯度消失和爆炸的问题。因此,我们提出了 Spike-Element-Wise (SEW) ResNet 来在 SNNs 中实现残差学习。我们证明了 SEW ResNet 能够轻松实现恒等映射,并同时克服梯度消失和爆炸的问题。我们在静态图像数据集 ImageNet 和神经形态数据集 DVS Gesture [1] 及 CIFAR10-DVS [32] 上对脉冲 ResNet 和 SEW ResNet 进行了评估。
实验结果显示,更深的脉冲 ResNet 存在退化问题,即网络越深,训练损失越高,而 SEW ResNet 通过简单增加网络深度可以实现更高性能。此外,SEW ResNet 在准确性和时间步长方面均优于目前最先进的直接训练的 SNNs。据我们所知,这是首次探索直接训练超过 100 层的深度 SNNs。
2. 相关工作
2.1 脉冲神经网络的学习方法
将 ANN 转换为 SNN (ANN2SNN) 和使用替代梯度的反向传播 是获得深度 SNNs 的两种主要方法。ANN2SNN 方法首先训练一个带有 ReLU 激活的 ANN,然后通过将 ReLU 替换为脉冲神经元,并添加权重归一化和阈值平衡等缩放操作,将 ANN 转换为 SNN。一些最新的转换方法在 VGG-16 和 ResNet 上几乎实现了无损精度。
然而,转换后的 SNN 需要更长的时间才能在精度上与原始 ANN 匹敌,因为转换基于速率编码(rate-coding) ,这增加了 SNN 的延迟,限制了其实际应用。
反向传播方法可以分为两类。第一类方法通过在仿真时间步长上展开网络来计算梯度 ,这类似于通过时间的反向传播 (BPTT) 的思想。由于相对于阈值触发的发放的梯度是不可微的,通常使用替代梯度。使用替代梯度方法训练的 SNN 不限于速率编码,也可以应用于时间任务,例如分类神经形态数据集(classifying neuromorphic datasets) 。第二类方法计算现有脉冲的时序相对于脉冲时序处的膜电位的梯度 。
2.2 脉冲残差结构
以前的 ANN2SNN 方法注意到了平凡前馈(plain feedforward) ANNs 和残差 ANNs 之间的区别,并针对转换进行了特定的归一化(normalization)。Hu 等人 [17] 首次在 ANN2SNN 中应用残差结构,并在 SNN 中使用缩放的快捷路径来匹配原始 ANN 的激活。
[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.
Sengupta 等人 [49] 提出了 Spike-Norm 来平衡 SNN 的阈值,并通过将 VGG 和 ResNet 转换为 SNN 验证了他们的方法。现有的基于反向传播的方法使用几乎相同的 ResNet 结构。
[49] Abhronil Sengupta, Yuting Ye, Robert Wang, Chiao Liu, and Kaushik Roy. Going deeper in spiking neural networks: Vgg and residual architectures. Frontiers in Neuroscience, 13:95, 2019.
Lee 等人 [30] 在深度不超过 ResNet-11 的浅层 ResNets 上评估了他们定制的替代方法。Zheng 等人 [64] 提出了阈值依赖的批归一化 (td-BN) 来替换朴素的批归一化 (BN) [23],并通过在快捷路径中添加 td-BN 成功地用替代梯度直接训练了脉冲 ResNet-34 和脉冲 ResNet-50。
[30] Chankyu Lee, Syed Shakib Sarwar, Priyadarshini Panda, Gopalakrishnan Srinivasan, and Kaushik Roy. Enabling spike-based backpropagation for training deep neural network architectures. Frontiers in Neuroscience, 14, 2020
[64] Hanle Zheng, Yujie Wu, Lei Deng, Yifan Hu, and Guoqi Li. Going deeper with directly-trained larger spiking neural networks. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 35, pages 11062–11070, 2021.
[23] Sergey Ioffe and Christian Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In International Conference on Machine Learning (ICML), pages 448–456, 2015.
3 方法
3.1 脉冲神经元模型
脉冲神经元是脉冲神经网络 (SNNs) 的基本计算单元。与 Fang 等人 [3] 类似,我们使用统一模型来描述各种脉冲神经元的动态,其包括以下离散时间动态:
[8] Wei Fang, Zhaofei Yu, Yanqi Chen, Timothee Masquelier, Tiejun Huang, and Yonghong Tian. Incorporating learnable membrane time constant to enhance learning of spiking neural networks. In Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), pages 2661–2671, 2021.
H [ t ] = f ( V [ t − 1 ] , X [ t ] ) (1) H[t] = f(V[t-1], X[t]) \tag{1} H[t]=f(V[t−1],X[t])(1)
S [ t ] = θ ( H [ t ] − V t h ) (2) S[t] = θ(H[t] - V_{th}) \tag{2} S[t]=θ(H[t]−Vth)(2)
V [ t ] = H [ t ] ( 1 − S [ t ] ) + V r e s e t S [ t ] (3) V[t] = H[t](1 - S[t]) + V_{reset}S[t] \tag{3} V[t]=H[t](1−S[t])+VresetS[t](3)
其中, X [ t ] X[t] X[t] 是时间步 t t t 的输入电流, H [ t ] H[t] H[t] 和 V [ t ] V[t] V[t] 分别表示在时间步 t t t 触发脉冲后的膜电位和时间步 t t t 的膜电位。 V t h V_{th} Vth 是触发阈值, Θ ( x ) \Theta(x) Θ(x) 是Heaviside阶跃函数,定义为 Θ ( x ) = 1 \Theta(x) = 1 Θ(x)=1 当 x ≥ 0 x \geq 0 x≥0, Θ ( x ) = 0 \Theta(x) = 0 Θ(x)=0 当 x < 0 x < 0 x<0。 S [ t ] S[t] S[t] 是时间步 t t t 的输出脉冲,当有脉冲时为1,否则为0。 V r e s e t V_{reset} Vreset 表示重置电位。
公式(1)中的函数 f ( ⋅ ) f(\cdot) f(⋅) 描述了神经元动力学,对于不同的脉冲神经元模型有不同的形式。例如,积分-发放模型(IF)和泄露积分-发放模型(LIF)中的函数 f ( ⋅ ) f(\cdot) f(⋅) 分别可以由公式(4)和公式(5)描述。
H [ t ] = V [ t − 1 ] + X [ t ] , (4) H[t] = V[t-1] + X[t], \tag{4} H[t]=V[t−1]+X[t],(4)
H [ t ] = V [ t − 1 ] + 1 τ ( X [ t ] − ( V [ t − 1 ] − V r e s e t ) ) , (5) H[t] = V[t-1] + \frac{1}{\tau}(X[t] - (V[t-1] - V_{reset})), \tag{5} H[t]=V[t−1]+τ1(X[t]−(V[t−1]−Vreset)),(5)
其中 τ \tau τ 表示膜时间常数。公式(2)和公式(3)描述了脉冲生成和重置过程,这些过程对所有类型的脉冲神经元模型都是相同的。在本文中, 替代梯度方法 用于在误差反向传播期间定义 Θ ′ ( x ) ≜ σ ′ ( x ) \Theta'(x) \triangleq \sigma'(x) Θ′(x)≜σ′(x),其中 σ ( x ) \sigma(x) σ(x) 表示替代函数。
3.2 脉冲 ResNet 的缺点
残差块是 ResNet 的关键组件。图 1(a) 显示了脉冲 ResNet 中的基本块。
其中 X l , Y l X^l, Y^l Xl,Yl是ResNet中第 l l l 层的输入和输出,Conv是卷积层,BN表示批量归一化,ReLU表示修正线性单元激活层。
脉冲ResNet中的基本块如图1(b)所示。
简单地将ANNs中的ReLU激活层替换为脉冲神经元(SN),其中 S l [ t ] , O l [ t ] S^l[t],O^l[t] Sl[t],Ol[t] 是在时间步 t t t 时对第 l l l 层输入和输出进行处理的。
根据上述定义,我们将分析脉冲ResNet的缺点。
脉冲ResNet无法实现所有神经元模型的恒等映射。
ResNet的一个关键概念是恒等映射(identity mapping)。He等人[14]指出,如果添加的层实现了恒等映射,则一个更深的模型的训练误差不会大于其较浅模型的训练误差。
然而,如果添加的层没有实现恒等映射,则会导致更深的模型表现比浅层模型更差出现退化问题(the degradation problem)。为了解决这个问题,提出了通过在恒等映射的捷径上添加一个短路连接(shortcut connection)来实现的残差学习(见图 1(a))。
我们用 F l F^l Fl表示残差映射,即一堆两个卷积层,ResNet和脉冲ResNet中的 l l l层可以表示为:
Y l = L N ( F l ( X l ) + X l ) , (6) Y^l = \mathcal{L}_N(\mathcal{F}^l(X^l) + X^l), \tag{6} Yl=LN(Fl(Xl)+Xl),(6)
O l [ t ] = S N ( F l [ S l [ t ] ] + S l [ t ] ) . (7) \quad O^l[t] = SN(\mathcal{F}^l[S^l[t]] + S^l[t]). \tag{7} Ol[t]=SN(Fl[Sl[t]]+Sl[t]).(7)
方程(6)中的残差块使在ANNs中实现恒等映射变得容易。为了说明这一点,当 F l ( X l ) ≡ 0 \mathcal{F}^l(X^l)\equiv 0 Fl(Xl)≡0 时, Y l = R e L U ( X l ) Y^l = ReLU(X^l) Yl=ReLU(Xl)。在大多数情况下, X l X^l Xl 是前一个ReLU层的激活值,并且 X l ≥ 0 X^l \geq 0 Xl≥0。
因此, Y l = R e L U ( X l ) = X l Y^l = ReLU(X^l) = X^l Yl=ReLU(Xl)=Xl,这实现了恒等映射。
不同于ResNet,脉冲ResNet中的残差块(方程(7))限制了脉冲神经元模型的恒等映射实现。当 F l [ S l [ t ] ] ≡ 0 \mathcal{F}^l[S^l[t]] \equiv 0 Fl[Sl[t]]≡0时, O l [ t ] = S N ( S l [ t ] ) ≠ S l [ t ] O^l[t] = SN(S^l[t]) \neq S^l[t] Ol[t]=SN(Sl[t])=Sl[t]。
因为 S N SN SN 会对输入 S l [ t ] S^l[t] Sl[t] 进行脉冲生成处理,而这个处理的结果通常不等于输入。
为了传输 S l [ t ] S^l[t] Sl[t] 并使 S N ( S l [ t ] ) = S l [ t ] SN(S^l[t]) = S^l[t] SN(Sl[t])=Sl[t],第 l l l 层残差块中的最后一个脉冲神经元(SN)需要在接收到脉冲后发送一个脉冲,并在 t t t 个时间步内 未接收到脉冲时保持静默。这对方程(4)描述的IF神经元有效。
需要确保 𝑆𝑁 在接收到脉冲时发出一个脉冲,在未接收到脉冲时保持静默。这意味着 𝑆𝑁 的输出行为要严格遵循输入脉冲的情况。
具体来说,我们可以设置 0 < V t h ≤ 1 0 < V_{th} \leq 1 0<Vth≤1且 V [ t − 1 ] = 0 V[t-1] = 0 V[t−1]=0(确保神经元的初始状态是静默的),以确保 X [ t ] = 1 X[t] = 1 X[t]=1导致 H [ t ] ≥ V t h H[t] \geq V_{th} H[t]≥Vth, X [ t ] = 0 X[t] = 0 X[t]=0导致 H [ t ] < V t h H[t] < V_{th} H[t]<Vth。
然而,当考虑一些具有复杂神经动力学的脉冲神经元模型时,实现 S N ( S l [ t ] ) = S l [ t ] SN(S^l[t]) = S^l[t] SN(Sl[t])=Sl[t]变得困难。例如,在[66, 8, 61]中使用的LIF神经元考虑了一个可学习的膜时间常数 τ \tau τ,其神经动力学可由方程(5)描述。当 X [ t ] = 1 X[t] = 1 X[t]=1且 V [ t − 1 ] = 0 V[t-1] = 0 V[t−1]=0时, H [ t ] = 1 τ H[t] = \frac{1}{\tau} H[t]=τ1。在训练过程中由于优化器的影响,找到一个确保 H [ t ] > V t h H[t] > V_{th} H[t]>Vth的发放阈值是困难的。
脉冲ResNet在长时间序列上遭遇梯度消失/爆炸问题。
考虑一个脉冲ResNet,其中有 k k k 个顺序块来传输 S l [ t ] S^l[t] Sl[t],并且满足恒等映射条件,例如脉冲神经元是IF神经元,其 0 < V t h ≤ 1 0 < V_{th} \leq 1 0<Vth≤1 ,那么我们有 S l [ t ] = S l + 1 [ t ] = . . . = S l + k − 1 [ t ] = O l + k − 1 [ t ] S^l[t] = S^{l+1}[t] = ... = S^{l+k-1}[t] = O^{l+k-1}[t] Sl[t]=Sl+1[t]=...=Sl+k−1[t]=Ol+k−1[t] 。将 S l [ t ] S^l[t] Sl[t]和 O l [ t ] O^l[t] Ol[t]中的第 j j j个元素分别记作 S j l [ t ] S^l_j[t] Sjl[t]和 O j l [ t ] O^l_j[t] Ojl[t],则第 ( l + k − 1 ) (l + k - 1) (l+k−1) 层残差块相对于第 l l l 层残差块输入的梯度可以逐层计算如下:
∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ O j l + i [ t ] ∂ S j l + i [ t ] = ∏ i = 0 k − 1 Θ ′ ( S j l + i [ t ] − V t h ) → { 0 , if 0 < Θ ′ ( S j l [ t ] − V t h ) < 1 1 , if Θ ′ ( S j l [ t ] − V t h ) = 1 + ∞ , if Θ ′ ( S j l [ t ] − V t h ) > 1 (8) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial O^{l+i}_j[t]}{\partial S^{l+i}_j[t]} = \prod_{i=0}^{k-1} \Theta' (S^{l+i}_j[t] - V_{th}) \rightarrow \begin{cases} 0, & \text{if } 0 < \Theta' (S^l_j[t] - V_{th}) < 1 \\ 1, & \text{if } \Theta' (S^l_j[t] - V_{th}) = 1 \\ +\infty, & \text{if } \Theta' (S^l_j[t] - V_{th}) > 1 \end{cases} \tag{8} ∂Sjl[t]∂Ojl+k−1[t]=i=0∏k−1∂Sjl+i[t]∂Ojl+i[t]=i=0∏k−1Θ′(Sjl+i[t]−Vth)→⎩ ⎨ ⎧0,1,+∞,if 0<Θ′(Sjl[t]−Vth)<1if Θ′(Sjl[t]−Vth)=1if Θ′(Sjl[t]−Vth)>1(8)
其中, Θ ( x ) \Theta(x) Θ(x) 是Heaviside阶跃函数, Θ ′ ( x ) \Theta'(x) Θ′(x) 是由替代梯度定义的。由于 O j l + i [ t ] = S N ( S j l + i [ t ] ) O^{l+i}_j[t] = SN(S^{l+i}_j[t]) Ojl+i[t]=SN(Sjl+i[t]) ,因此第二个等式成立。考虑到 S l [ t ] S^l[t] Sl[t] 只能取0或1的事实,常用的替代函数无法满足 Θ ′ ( S j l [ t ] − V t h ) = 1 \Theta'(S^l_j[t] - V_{th}) = 1 Θ′(Sjl[t]−Vth)=1 [40] 。因此,在较深的脉冲ResNet中,梯度消失/爆炸问题容易发生。
[40] Emre O Neftci, Hesham Mostafa, and Friedemann Zenke. Surrogate gradient learning in spiking neural networks: Bringing the power of gradient-based optimization to spiking neural networks. IEEE Signal Processing Magazine, 36(6):51–63, 2019.
基于上述分析,我们认为先前的脉冲ResNet忽略了脉冲神经元引起的高度非线性,并且很难实现残差学习。然而,如图1(b)所示。
通过额外的归一化 [17 , 49] ,基本块对于ANN2SNN来说仍然表现良好,因为从ANN转换的SNN可以通过使用发放率(firing rates)来匹配原始ANN的激活。
[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.
[49] Abhronil Sengupta, Yuting Ye, Robert Wang, Chiao Liu, and Kaushik Roy. Going deeper in spiking neural networks: Vgg and residual architectures. Frontiers in Neuroscience, 13:95, 2019.
3.3 Spike-Element-Wise ResNet
这里我们提出了Spike-Element-Wise (SEW) 残差块,以实现SNNs中的残差学习,这可以轻松实现恒等映射,同时解决梯度消失/爆炸问题。如图1©所示。
SEW残差块可以表示为:
O l [ t ] = g ( S N ( F l ( S l [ t ] ) ) ) , S l [ t ] ) = g ( A l [ t ] , S l [ t ] ) , O^l[t] = g(SN(F^l(S^l[t]))), S^l[t]) = g(A^l[t], S^l[t]), Ol[t]=g(SN(Fl(Sl[t]))),Sl[t])=g(Al[t],Sl[t]),
其中 g g g 表示具有两个spikes tensor作为输入的元素级函数(element-wise function)。这里我们用 A l [ t ] A^l[t] Al[t] 表示需要学习的残差映射为 A l [ t ] = S N ( F l ( S l [ t ] ) ) A^l[t] = SN(F^l(S^l[t])) Al[t]=SN(Fl(Sl[t])) 。
SEW ResNet 可以轻松实现恒等映射
通过利用spikes的二进制特性,我们可以找到满足恒等映射的不同元素级函数 g g g(如表1所示)。
表1:元素级函数(element-wise functions) g 的列表
Name | Expression of g ( A l [ t ] , S l [ t ] ) g(A^l[t], S^l[t]) g(Al[t],Sl[t]) |
---|---|
ADD | A l [ t ] + S l [ t ] A^l[t] + S^l[t] Al[t]+Sl[t] |
AND | A l [ t ] ∧ S l [ t ] = A l [ t ] ⋅ S l [ t ] A^l[t] \land S^l[t] = A^l[t] \cdot S^l[t] Al[t]∧Sl[t]=Al[t]⋅Sl[t] |
IAND | ( ¬ A l [ t ] ) ∧ S l [ t ] = ( 1 − A l [ t ] ) ⋅ S l [ t ] (\neg A^l[t]) \land S^l[t] = (1 - A^l[t]) \cdot S^l[t] (¬Al[t])∧Sl[t]=(1−Al[t])⋅Sl[t] |
具体来说,当选择ADD(加法)和IAND(逻辑与)作为元素级函数(element-wise functions) g g g 时,恒等映射是通过设置 A l [ t ] = 0 A^l[t] = 0 Al[t]=0 来实现的,这可以简单地通过设置最后一个批归一化层(BN)中的权重和偏差在 F l F^l Fl 中为零来实现。然后我们可以得到:
批归一化层的作用
批归一化层对输入进行标准化,使其具有均值为0,方差为1的分布。然后,它会通过可训练的参数(权重 γ \gamma γ 和偏差 β \beta β )重新缩放和移动数据。
这适用于所有神经模型。
当使用AND作为元素级函数(element-wise functions) g g g 时,我们设置 A l [ t ] = 1 A^l[t] = 1 Al[t]=1 以实现恒等映射。它可以通过将最后一个BN的权重设置为零,并将偏差设置为足够大的常数来引发spikes,例如,当最后一个SN是IF神经元时,将偏差设置为 V t h V_{th} Vth。然后我们有:
O l [ t ] = 1 ∧ S l [ t ] = S l [ t ] 。 O^l[t] = 1 \land S^l[t] = S^l[t]。 Ol[t]=1∧Sl[t]=Sl[t]。
注意,使用AND可能会遇到与Spiking ResNet相同的问题。很难控制一些具有复杂神经动力学的脉冲神经元模型在指定时间步生成spikes。
下采样块的形成
值得注意的是,当一个块的输入和输出具有不同的维度时,shortcut 设置为具有 stride > 1的卷积层,而不是恒等连接,以执行下采样。
图2:Spiking ResNet和SEW ResNet中的下采样块
(a) 下采样基本块 (b) 下采样SEW块
ResNet和Spiking ResNet使用{Conv-BN}而不是图2(a)中的ReLU。在对比中,我们在 shortcut(图2(b))中添加了SN。
SEW ResNet 可以克服梯度消失/爆炸问题
SEW块类似于ReLU加之前的RBA块[13],其公式如下:
Y l = R e L U ( F l ( X l ) ) + X l 。 (10) Y^l = ReLU(F^l(X^l)) + X^l。 \tag{10} Yl=ReLU(Fl(Xl))+Xl。(10)
RBA块因为 X l + 1 = Y l ≥ X l X^{l+1} = Y^l \geq X^l Xl+1=Yl≥Xl 被He等人[15]批评 ,这将在深层中导致无限输出。实验结果[15]也表明 RBA 块的性能比基本块(图1(a))差。
在某种程度上,SEW块是RBA块的扩展。
注意,使用 ADD 和 IAND 作为输出spikes的函数(即二进制张量),这意味着在SEW块中,ANNs中的无限输出问题 永远不会在SNNs中发生 ,因为所有spikes都小于等于1。
当选择ADD作为元素级函数(element-wise functions) g g g 时, k k k 个顺序SEW块的无限输出问题可以减轻,因为 k k k 个顺序SEW块的输出将不大于 k + 1 k + 1 k+1 。此外,当 g g g 为ADD时,下采样SEW块将输出调节为不超过2。
当恒等映射实现时,第 ( l + k − 1 ) (l + k - 1) (l+k−1) 层SEW块相对于第 l l l 层SEW块输入的输出梯度可以逐层计算如下:
∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = { ∏ i = 0 k − 1 ∂ ( 0 + S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if g = A D D ∏ i = 0 k − 1 ∂ ( 1 ∧ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if g = A N D ∏ i = 0 k − 1 ∂ ( ( 1 − 0 ) ⋅ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if g = I A N D (11) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \begin{cases} \prod_{i=0}^{k-1} \frac{\partial (0+S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = ADD \\ \prod_{i=0}^{k-1} \frac{\partial (1 \land S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = AND \\ \prod_{i=0}^{k-1} \frac{\partial ((1-0) \cdot S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = IAND \end{cases} \ \ \ \ \tag{11} ∂Sjl[t]∂Ojl+k−1[t]=i=0∏k−1∂Sjl+i[t]∂g(Ajl+i[t],Sjl+i[t])=⎩ ⎨ ⎧∏i=0k−1∂Sjl+i[t]∂(0+Sjl+i[t])=1,∏i=0k−1∂Sjl+i[t]∂(1∧Sjl+i[t])=1,∏i=0k−1∂Sjl+i[t]∂((1−0)⋅Sjl+i[t])=1,if g=ADDif g=ANDif g=IAND (11)
每一层的输出 O j l + i [ t ] O^{l+i}_j[t] Ojl+i[t] 可以由element-wise函数 g g g 作用于 A j l + i [ t ] A_j^{l+i}[t] Ajl+i[t] 和 S j l + i [ t ] S_j^{l+i}[t] Sjl+i[t] 得到,即:
O j l + i [ t ] = g ( A j l + i [ t ] , S j l + i [ t ] ) O^{l+i}_j[t] = g(A_j^{l+i}[t], S_j^{l+i}[t]) Ojl+i[t]=g(Ajl+i[t],Sjl+i[t])
具体来说:
- 当 ( g = ADD ) 时:
g ( A j l + i [ t ] , S j l + i [ t ] ) = A j l + i [ t ] + S j l + i [ t ] g(A_j^{l+i}[t], S_j^{l+i}[t]) = A_j^{l+i}[t] + S_j^{l+i}[t] g(Ajl+i[t],Sjl+i[t])=Ajl+i[t]+Sjl+i[t]
在恒等映射中,设 A j l + i [ t ] = 0 A_j^{l+i}[t] = 0 Ajl+i[t]=0 ,则有:
O j l + i [ t ] = 0 + S j l + i [ t ] = S j l + i [ t ] O^{l+i}_j[t] = 0 + S_j^{l+i}[t] = S_j^{l+i}[t] Ojl+i[t]=0+Sjl+i[t]=Sjl+i[t]
因此:
∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = ∂ ( 0 + S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \frac{\partial (0 + S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1 ∂Sjl+i[t]∂g(Ajl+i[t],Sjl+i[t])=∂Sjl+i[t]∂(0+Sjl+i[t])=1- 当 ( g = AND ) 时:
g ( A j l + i [ t ] , S j l + i [ t ] ) = A j l + i [ t ] ∧ S j l + i [ t ] g(A_j^{l+i}[t], S_j^{l+i}[t]) = A_j^{l+i}[t] \land S_j^{l+i}[t] g(Ajl+i[t],Sjl+i[t])=Ajl+i[t]∧Sjl+i[t]
在恒等映射中,设 A j l + i [ t ] = 1 A_j^{l+i}[t] = 1 Ajl+i[t]=1 ,则有:
O j l + i [ t ] = 1 ∧ S j l + i [ t ] = S j l + i [ t ] O^{l+i}_j[t] = 1 \land S_j^{l+i}[t] = S_j^{l+i}[t] Ojl+i[t]=1∧Sjl+i[t]=Sjl+i[t]
因此:
∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = ∂ ( 1 ∧ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \frac{\partial (1 \land S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1 ∂Sjl+i[t]∂g(Ajl+i[t],Sjl+i[t])=∂Sjl+i[t]∂(1∧Sjl+i[t])=1- 当 ( g = IAND ) 时:
g ( A j l + i [ t ] , S j l + i [ t ] ) = ( 1 − A j l + i [ t ] ) ⋅ S j l + i [ t ] g(A_j^{l+i}[t], S_j^{l+i}[t]) = (1 - A_j^{l+i}[t]) \cdot S_j^{l+i}[t] g(Ajl+i[t],Sjl+i[t])=(1−Ajl+i[t])⋅Sjl+i[t]
在恒等映射中,设 A j l + i [ t ] = 0 A_j^{l+i}[t] = 0 Ajl+i[t]=0 ,则有:
O j l + i [ t ] = ( 1 − 0 ) ⋅ S j l + i [ t ] = S j l + i [ t ] O^{l+i}_j[t] = (1 - 0) \cdot S_j^{l+i}[t] = S_j^{l+i}[t] Ojl+i[t]=(1−0)⋅Sjl+i[t]=Sjl+i[t]
因此:
∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = ∂ ( ( 1 − 0 ) ⋅ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \frac{\partial ((1 - 0) \cdot S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1 ∂Sjl+i[t]∂g(Ajl+i[t],Sjl+i[t])=∂Sjl+i[t]∂((1−0)⋅Sjl+i[t])=1
结合以上各项计算,逐层计算梯度的完整过程为:
∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} ∂Sjl[t]∂Ojl+k−1[t]=i=0∏k−1∂Sjl+i[t]∂g(Ajl+i[t],Sjl+i[t])
对于不同的 ( g ),都得到常数1:
∏ i = 0 k − 1 1 = 1 \prod_{i=0}^{k-1} 1 = 1 i=0∏k−11=1
第二个等式在 g = A D D / I A N D g = ADD/IAND g=ADD/IAND 时成立。由于公式(11)中的梯度是常数,SEW ResNet可以克服梯度消失/爆炸问题。
4. 实验
4.1 ImageNet 分类
由于ImageNet 2012测试服务器不再可用,我们无法报告实际的测试准确率。取而代之的是,我们使用验证集上的准确率作为测试准确率,与[17, 64]相同。
He等人[14]在ImageNet数据集上评估了18/34/50/101/152层的ResNet。
为了进行比较,我们考虑了具有相同网络架构的SNNs,只是将基本残差块(图1(a))替换为脉冲基本块(图1(b))和SEW块(图1©),其中 g g g 为ADD。我们将具有基本块的SNN称为Spiking ResNet,将具有SEW块的SNN称为SEW ResNet。
在静态ImageNet数据集上采用IF神经元模型。在ImageNet上训练期间,我们发现Spiking ResNet-50/101/152无法收敛,除非我们使用零初始化,这使得所有块在训练开始时都是恒等映射(identity mapping)。因此,本文中报告的Spiking ResNet-18/34/50/101/152的结果均使用零初始化。
Spiking ResNet vs. SEW ResNet
我们首先评估了Spiking ResNet和SEW ResNet的性能。
表2报告了ImageNet验证集上的测试准确率。
结果显示,较深的34层Spiking ResNet的测试准确率低于较浅的18层Spiking ResNet。随着层数的增加,Spiking ResNet的测试准确率下降。
为了揭示原因,我们比较了Spiking ResNet在训练过程中的训练损失、训练准确率和测试准确率,如图3所示。
我们发现了Spiking ResNet的退化问题——较深的网络比较浅的网络有更高的训练损失。相比之下,较深的34层SEW ResNet的测试准确率高于较浅的18层SEW ResNet(如表2所示)。更重要的是,从图3可以看出,SEW ResNet的训练损失随着深度的增加而减少,训练/测试准确率随着深度的增加而增加,这表明我们可以通过简单地增加网络的深度来获得更高的性能。所有这些结果表明,SEW ResNet很好地解决了退化问题。
与最先进方法的比较
在表3中,我们将SEW ResNet与在ImageNet上取得最佳结果的先前Spiking ResNet进行了比较。据我们所知,SEW ResNet-101和SEW ResNet-152是迄今为止唯一超过100层的SNNs,没有其他相同结构的网络可供比较。
在网络结构相同的情况下,我们的SEW ResNet即使在较少的时间步T情况下,也优于直接训练的Spiking ResNet的最先进的准确率。SEW ResNet-34的准确率略低于Spiking ResNet-34(大)与td-BN(67.04%对67.05%),后者使用了1.5倍的模拟时间步T(6对4)和4倍的参数数量(85.5M对21.8M)。最先进的ANN2SNN方法[33, 17]的准确率比我们的SEW ResNet更高,但它们分别使用了64倍和87.5倍的时间步。
[33] Yuhang Li, Shikuang Deng, Xin Dong, Ruihao Gong, and Shi Gu. A free lunch from ann: Towards efficient, accurate spiking neural networks calibration. In International Conference on Machine Learning (ICML), volume 139, pages 6316–6325, 2021.
[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.
SEW块的脉冲响应分析
图4显示了ImageNet上SEW ResNet-18/34/50/101/152的 A l A^l Al 脉冲率。
SEW ResNet-18有7个块,SEW ResNet-34和SEW ResNet-50有15个块,SEW ResNet-101有33个块,SEW ResNet-152有50个块。下采样(downsample)SEW块由下三角符号 ▽ \bigtriangledown ▽ 标记。
由于我们选择ADD作为逐元素函数(element-wise)g,较低的脉冲率意味着SEW块更接近于实现恒等映射,除了下采样块。
注意,下采样块的快捷方式不是恒等映射,如图2(b)所示。
图4显示,SEW块中的所有脉冲神经元的脉冲率都很低,最后两个块中的脉冲神经元的脉冲率甚至几乎为零。由于时间步T为4且脉冲率不超过0.25,SEW ResNet-18/34/50中的所有神经元在整个模拟过程中平均不超过一次脉冲。此外,SEW ResNet-101/152中的所有脉冲率不超过0.5,表明所有神经元在平均上不超过两次脉冲。总体而言,SEW块中的 A l A^l Al 的脉冲率处于较低水平,验证了大多数SEW块充当恒等映射。
ResNet-152结构的梯度检查
∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ O j l + i [ t ] ∂ S j l + i [ t ] = ∏ i = 0 k − 1 Θ ′ ( S j l + i [ t ] − V t h ) → { 0 , if 0 < Θ ′ ( S j l [ t ] − V t h ) < 1 1 , if Θ ′ ( S j l [ t ] − V t h ) = 1 + ∞ , if Θ ′ ( S j l [ t ] − V t h ) > 1 (8) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial O^{l+i}_j[t]}{\partial S^{l+i}_j[t]} = \prod_{i=0}^{k-1} \Theta' (S^{l+i}_j[t] - V_{th}) \rightarrow \begin{cases} 0, & \text{if } 0 < \Theta' (S^l_j[t] - V_{th}) < 1 \\ 1, & \text{if } \Theta' (S^l_j[t] - V_{th}) = 1 \\ +\infty, & \text{if } \Theta' (S^l_j[t] - V_{th}) > 1 \end{cases} \tag{8} ∂Sjl[t]∂Ojl+k−1[t]=i=0∏k−1∂Sjl+i[t]∂Ojl+i[t]=i=0∏k−1Θ′(Sjl+i[t]−Vth)→⎩ ⎨ ⎧0,1,+∞,if 0<Θ′(Sjl[t]−Vth)<1if Θ′(Sjl[t]−Vth)=1if Θ′(Sjl[t]−Vth)>1(8)
∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = { ∏ i = 0 k − 1 ∂ ( 0 + S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if g = A D D ∏ i = 0 k − 1 ∂ ( 1 ∧ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if g = A N D ∏ i = 0 k − 1 ∂ ( ( 1 − 0 ) ⋅ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if g = I A N D (11) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \begin{cases} \prod_{i=0}^{k-1} \frac{\partial (0+S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = ADD \\ \prod_{i=0}^{k-1} \frac{\partial (1 \land S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = AND \\ \prod_{i=0}^{k-1} \frac{\partial ((1-0) \cdot S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = IAND \end{cases} \ \ \ \ \tag{11} ∂Sjl[t]∂Ojl+k−1[t]=i=0∏k−1∂Sjl+i[t]∂g(Ajl+i[t],Sjl+i[t])=⎩ ⎨ ⎧∏i=0k−1∂Sjl+i[t]∂(0+Sjl+i[t])=1,∏i=0k−1∂Sjl+i[t]∂(1∧Sjl+i[t])=1,∏i=0k−1∂Sjl+i[t]∂((1−0)⋅Sjl+i[t])=1,if g=ADDif g=ANDif g=IAND (11)
公式(8)和公式(11)分析了具有恒等映射的多个块的梯度。
为了验证SEW ResNet是否能克服消失/爆炸梯度问题,我们检查了Spiking ResNet-152和SEW ResNet-152的梯度,它们是最深的标准ResNet结构。我们考虑了相同的初始化参数和有/无零初始化。
由于SNNs的梯度显著受到脉冲率的影响(见Sec.A.4),我们首先分析脉冲率。
图5(a)显示了第 l l l 个块输出 O l O^l Ol 的初始脉冲率。下采样块的索引由垂直虚线标记。两个相邻虚线之间的块代表恒等映射区域,并具有相同形状的输入和输出。
使用零初始化时,Spiking ResNet、SEW AND ResNet、SEW IAND ResNet和SEW ADD ResNet具有相同的脉冲率(绿色曲线),这是零初始化曲线。
不使用零初始化时,SEW AND网络(红色曲线)发生静默问题,而SEW IAND网络(紫色曲线)缓解了这个问题。
图5(b)显示了第 l l l 个块的最后一个SN的输出 A l A^l Al 的脉冲率。
可以发现,尽管SEW ADD ResNet在恒等映射区域中的 O l O^l Ol 脉冲率线性增加,但每个块中的最后一个SN仍保持稳定的脉冲率。
注意,当 g g g 为ADD时,SEW块的输出不是二进制的,脉冲率实际上是平均值。
SEW IAND ResNet的SNs保持了足够的脉冲率,并且随着深度略有衰减(紫色曲线),而SEW AND ResNet的深层SNs保持静默(橙色曲线)。
静默问题可以解释为,当使用AND时, O l [ t ] = S N ( F l ( O l − 1 [ t ] ) ) ∧ O l − 1 [ t ] ≤ O l − 1 [ t ] O^l[t] = SN(F^l(O^{l−1}[t])) ∧ O^{l−1}[t] ≤ O^{l−1}[t] Ol[t]=SN(Fl(Ol−1[t]))∧Ol−1[t]≤Ol−1[t] 。
由于很难在每个时间步 t t t 保持 S N ( F l ( O l − 1 [ t ] ) ) ≡ 1 SN(F^l(O^{l−1}[t])) ≡ 1 SN(Fl(Ol−1[t]))≡1,因此 在使用AND作为g的SEW ResNet中,静默问题可能经常发生。
使用IAND代替AND可以缓解这个问题,因为在每个时间步t保持 S N ( F l ( O l − 1 [ t ] ) ) ≡ 1 SN(F^l(O^{l−1}[t])) ≡ 1 SN(Fl(Ol−1[t]))≡1 很容易。
我们在所有实验中使用的代理梯度函数是 σ ( x ) = 1 π arctan ( π 2 α x ) + 1 2 \sigma (x) = \frac{1}{\pi} \arctan (\frac{\pi}{2} \alpha x) +\frac{1}{2} σ(x)=π1arctan(2παx)+21,因此 σ ′ ( x ) = α 2 ( 1 + ( π 2 α x ) 2 ) \sigma^{\prime}(x)=\frac{\alpha}{2\left(1+\left(\frac{\pi}{2} \alpha x\right)^{2}\right)} σ′(x)=2(1+(2παx)2)α 。当 V t h = 1 , α = 2 V_{th} = 1,α = 2 Vth=1,α=2 时,每个块的梯度幅度 ∥ ∂ L ∂ S ∥ ∥\frac{∂L}{∂S} ∥ ∥∂S∂L∥ 如图6所示。
注意 α = 2 , σ ′ ( x ) ≤ σ ′ ( 0 ) = σ ′ ( 1 − V t h ) = 1 α = 2,σ′(x) ≤ σ′(0) = σ′(1 − Vth) = 1 α=2,σ′(x)≤σ′(0)=σ′(1−Vth)=1 和 σ ′ ( 0 − V t h ) = 0.092 < 1 σ′(0 − V_{th}) = 0.092 < 1 σ′(0−Vth)=0.092<1 。
可以发现,在没有零初始化的情况下,Spiking ResNet-152中的梯度从较深的层到较浅的层在恒等映射区域中衰减,这由 σ ′ ( x ) ≤ 1 σ′(x) ≤ 1 σ′(x)≤1 引起。
值得注意的是,零初始化的Spiking ResNet-152中也发生了衰减。虚线附近的小凸起 ∧ ∧ ∧ 是由那些 S j l [ t ] = 0 S^l_j[t] = 0 Sjl[t]=0 的梯度消失引起的。在这些梯度完全衰减到0之后, ∥ ∂ L ∂ S ∥ ∥ \frac{∂L}{∂S}∥ ∥∂S∂L∥ 将成为一个常数,因为其余的梯度是由 S j l [ t ] = 1 S^l_j[t] = 1 Sjl[t]=1 和 σ ′ ( 1 − V t h ) = 1 σ′(1 − V_{th}) = 1 σ′(1−Vth)=1计算的,这也可以解释为什么梯度-索引曲线在某些区域是水平的。
参考零初始化的SEW ResNet-152,可以发现无论我们选择什么g,所有的梯度-索引曲线都是相似的。这是由于在恒等映射区域中, S l S^l Sl 对于所有索引 l l l 都是常数,梯度也成为常数,因为它不会流经SNs。没有零初始化时,SEW AND ResNet-152中发生了消失梯度问题,这是由静默问题引起的。由于图5中显示的足够的脉冲率,SEW ADD、IAND网络的梯度在从较深的层到较浅的层时没有显著衰减,表明消失/爆炸梯度问题在这些网络中不会发生。
当 V t h = 0.5 , α = 2 V_{th} = 0.5,α = 2 Vth=0.5,α=2 时, σ ′ ( 0 − V t h ) = σ ′ ( 1 − V t h ) = 0.288 < 1 σ′(0 − Vth) = σ′(1 − Vth) = 0.288 < 1 σ′(0−Vth)=σ′(1−Vth)=0.288<1 ,这表明向 SNs 传递脉冲容易导致梯度消失,如图 7 所示。
在零初始化的情况下,Spiking ResNet-152 中的衰减更为严重,因为 F l F^l Fl 的梯度无法贡献。不管我们选择什么 g g g ,SEW ResNet-152 都不会受到影响。当 V t h = 1 , α = 3 V_{th} = 1,α = 3 Vth=1,α=3 时, σ ′ ( 1 − V t h ) = 1.5 > 1 σ′(1 − V_{th} ) = 1.5 > 1 σ′(1−Vth)=1.5>1 ,这表明向 SNs 传递脉冲容易导致梯度爆炸。
图 8 显示了这种情况下的梯度。与图 6 中的原因相同,代理函数的变化会增加没有零初始化的所有网络的梯度,但不会影响具有零初始化的 SEW ResNet-152。Spiking ResNet-152 遇到了梯度爆炸的问题,而 SEW ADD 和 IAND ResNet-152 的这个问题不严重。
4.2 DVS手势分类
原始ResNet是为复杂的ImageNet数据集分类设计的,对于DVS手势数据集来说太大了。因此,我们设计了一个名为7B-Net的小型网络,其结构为 c 32 k 3 s 1 − B N − P L I F − S E W B l o c k − M P k 2 s 2 ∗ 7 − F C 11 c32k3s1-BN-PLIF-{SEW Block-MPk2s2}*7-FC11 c32k3s1−BN−PLIF−SEWBlock−MPk2s2∗7−FC11 。这里 c 32 k 3 s 1 c32k3s1 c32k3s1 表示卷积层,通道数为32,卷积核大小为3,步长为1。MPk2s2表示最大池化,卷积核大小为2,步长为2。符号{}*7表示七次重复结构,PLIF表示具有可学习膜时间常数的参数化泄漏积分发放神经元,这在[8]中提出,并可以用方程(5)描述。有关AER数据预处理的详细信息,请参见Sec.A.1。
H [ t ] = V [ t − 1 ] + 1 τ ( X [ t ] − ( V [ t − 1 ] − V r e s e t ) ) , (5) H[t] = V[t-1] + \frac{1}{\tau}(X[t] - (V[t-1] - V_{reset})), \tag{5} H[t]=V[t−1]+τ1(X[t]−(V[t−1]−Vreset)),(5)
[8] Wei Fang, Zhaofei Yu, Yanqi Chen, Timothee Masquelier, Tiejun Huang, and Yonghong Tian. Incorporating learnable membrane time constant to enhance learning of spiking neural networks. In Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), pages 2661–2671, 2021.
Spiking ResNet vs. SEW ResNet
我们首先通过将SEW块替换为基本块来比较具有加法元素函数(SEW ADD ResNet)的SEW ResNet和Spiking ResNet的性能。
网络 | 元素函数 g | 准确率(%) |
---|---|---|
SEW ResNet | ADD | 97.92 |
SEW ResNet | IAND | 95.49 |
Plain Net | - | 91.67 |
Spiking ResNet | - | 90.97 |
SEW ResNet | AND | 70.49 |
表4:DVS手势上的测试准确率。网络按准确率排序。表4显示了所有网络的测试准确率。SEW ADD ResNet的准确率最高。
如图9和表4所示,尽管Spiking ResNet(蓝色曲线)的训练损失低于SEW ADD ResNet(橙色曲线),但测试准确率低于SEW ADD ResNet(90.97% vs. 97.92%),这表明Spiking ResNet比SEW ADD ResNet更容易过拟合。
不同元素函数和普通块的评估。由于DVS手势数据集上的SNN训练成本远低于ImageNet,我们在DVS手势数据集上进行了更多的消融实验。我们用普通块(无shortcut connection)替换SEW块,并测试性能。我们还评估了表1中的各种元素函数g。
图9显示了DVS手势上的训练损失和训练/测试准确率。早期时期的剧烈波动是由于较大的学习率引起的(参见Sec.A.1)。我们可以发现,训练损失为SEW IAND < Spiking ResNet < SEW ADD < Plain Net < SEW AND。由于过拟合问题,较低的损失并不保证较高的测试准确率。
与最先进方法的比较
表5比较了我们的网络与最先进(SOTA)的方法。可以发现我们的SEW ResNet在准确率、参数数量和模拟时间步方面都优于最先进的工作。
网络 | 准确率(%) | 参数数量 | 时间步 |
---|---|---|---|
c32k3s1-BN-PLIF-{SEW Block (c32)-MPk2s2}*7-FC11 (7B-Net) | 97.92 | 0.13M | 16 |
{c128k3s1-BN-PLIF-MPk2s2}*5-DPFC512-PLIF-DP-FC110-PLIF-APk10s10 [8] | 97.57 | 1.70M | 20 |
Spiking ResNet-17 with td-BN [64] | 96.87 | 11.18M | 40 |
MPk4-c64k3-LIF-c128k3-LIF-APk2-c128k3-LIF-APk2-FC256-LIF-FC11 [16] | 93.40 | 23.23M | 60 |
表5:与DVS手势数据集上最先进方法的比较。
4.3 CIFAR10-DVS分类
我们还报告了CIFAR10-DVS数据集上的SEW ResNet,该数据集是通过DVS相机录制LCD监视器上的CIFAR-10数据集的动态图像获得的。由于CIFAR10-DVS比DVS手势更复杂,我们使用名为Wide-7B-Net的网络结构,该结构类似于7B-Net,但具有更多的通道。Wide-7B-Net的结构为 c 64 k 3 s 1 − B N − P L I F − S E W B l o c k ( c 64 ) − M P k 2 s 2 ∗ 4 − c 128 k 3 s 1 − B N − P L I F − S E W B l o c k ( c 128 ) − M P k 2 s 2 ∗ 3 − F C 10 c64k3s1-BN-PLIF-{SEW Block (c64)-MPk2s2}*4-c128k3s1-BN-PLIF-{SEW Block (c128)-MPk2s2}*3-FC10 c64k3s1−BN−PLIF−SEWBlock(c64)−MPk2s2∗4−c128k3s1−BN−PLIF−SEWBlock(c128)−MPk2s2∗3−FC10 。
在表6中,我们将SEW ResNet与之前的Spiking ResNet进行了比较。可以发现我们的方法在性能(70.2% vs. 67.8%)和时间步(8 vs. 10)方面优于Spiking ResNet [64]。我们还将我们的方法与CIFAR10-DVS上最先进的监督学习方法进行了比较。我们的Wide-7B-Net的准确率略低于当前的最先进方法[8](74.4% vs. 74.8%),该方法使用了1.25倍的模拟时间步(20 vs. 16)和14.6倍的参数数量(17.4M vs. 1.19M)。此外,当将T大幅减少到T = 4时,我们的Wide-7B-Net仍然可以获得64.8%的准确率。
5 结论
在本文中,我们分析了之前的Spiking ResNet,其残差块模仿了ResNet的标准块,发现它几乎无法实现恒等映射,并且存在梯度消失/爆炸的问题。为了解决这些问题,我们提出了SEW残差块,并证明其可以实现残差学习。ImageNet、DVS Gesture和CIFAR10-DVS数据集上的实验结果表明,我们的SEW残差块解决了退化问题,通过简单增加网络深度,SEW ResNet可以实现更高的准确率。我们的工作可能为‘非常深’的SNNs的学习带来启示。