• Deep Residual Learning in Spiking Neural Networks


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

    35th Conference on Neural Information Processing Systems (NeurIPS 2021), Sydney, Australia. (同组工作)

    Abstract

      由于离散二元激活和复杂的时空动态,深度脉冲神经网络(SNN)给基于梯度的方法带来了优化困难。考虑到ResNet在深度学习中的巨大成功,使用残差学习训练深度SNN是很自然的。之前的Spiking ResNet模仿了ANN中的标准残差块,简单地将ReLU激活层替换为脉冲神经元,存在退化问题,难以实现残差学习。在本文中,我们提出了spike-element-wise (SEW) ResNet来实现深度SNN中的残差学习。我们证明SEW ResNet可以轻松实现身份映射并克服Spiking ResNet的梯度消失/爆炸问题。我们在ImageNet、DVS Gesture和CIFAR10-DVS数据集上评估了我们的SEW ResNet,并表明SEW ResNet在准确性和时间步长上都优于最先进的直接训练的SNN。此外,SEW ResNet可以通过简单地添加更多层来获得更高的性能,为训练深度SNN提供了一种简单的方法。据我们所知,这是第一次直接训练超过100层的深度SNN成为可能。我们的代码可在https://github.com/fangwei123456/Spike-Element-Wise-ResNet获得。

    1 Introduction

      人工神经网络(ANN)在许多任务中取得了巨大成功,包括图像分类[28, 52, 55]、对象检测[9, 34, 44]、机器翻译[2]和游戏[37, 51]。ANN成功的关键因素之一是深度学习[29],它使用多层来学习具有多个抽象级别的数据表征。已经证明,较深的网络在计算成本和泛化能力方面优于较浅的网络[3]。由深度网络表示的函数可能需要具有一个隐藏层的浅层网络的指数数量的隐藏单元[38]。此外,网络的深度与网络在实际任务中的表现密切相关[52, 55, 27, 52]。然而,最近的证据[13, 53, 14]表明,随着网络深度的增加,准确度会饱和,然后迅速下降。为了解决这个退化问题,残差学习[14, 15]被提出,并且残差结构在"非常深"的网络中被广泛利用,实现了领先的性能[22, 59, 18, 57]。

      脉冲神经网络(SNN)被认为是ANN的潜在竞争对手,因为它们具有高生物合理性、事件驱动特性和低功耗[45]。最近,深度学习方法被引入到SNN中,并且深度SNN在一些简单的分类数据集[56]中取得了与ANN相近的性能,但在复杂任务中仍然比ANN差,例如对ImageNet数据集进行分类[47]。为了获得更高性能的 SNN,自然会探索更深的网络结构,如ResNet。Spiking ResNet[25, 60, 21, 17, 49, 12, 30, 64, 48, 42, 43]作为ResNet的脉冲版本,是通过模仿ANNs中的残差块并用脉冲神经元替换ReLU激活层而提出的。从ANN转换而来的Spiking ResNet在几乎所有数据集上都实现了最先进的准确性,而直接训练的Spiking ResNet尚未经过验证可以解决退化问题。

      在本文中,我们表明Spiking ResNet不适用于所有神经元模型来实现身份映射。即使满足恒等映射条件,Spiking ResNet也存在梯度消失/爆炸的问题。因此,我们提出了Spike-Element-Wise (SEW) ResNet来实现SNN中的残差学习。我们证明SEW ResNet可以轻松实现身份映射并同时克服梯度消失/爆炸问题。我们在静态ImageNet数据集和神经形态DVS手势数据集[1]、CIFAR10-DVS数据集[32]上评估了Spiking ResNet和SEW ResNet。实验结果与我们的分析一致,表明较深的Spiking ResNet存在退化问题——较深的网络比较浅的网络具有更高的训练损失,而SEW ResNet可以通过简单地增加网络深度来获得更高的性能。此外,我们表明SEW ResNet在准确性和时间步长上都优于最先进的直接训练的SNN。据我们所知,这是第一次探索直接训练的超过100层的深度SNN。

    2 Related Work

    2.1 Learning Methods of Spiking Neural Networks

      ANN到SNN的转换(ANN2SNN)[20, 4, 46, 49, 12, 11, 6, 54, 33]和具有替代梯度的反向传播[40]是获得深度SNN的两种主要方法。ANN2SNN方法首先用ReLU激活训练ANN,然后通过用脉冲神经元替换ReLU并添加缩放操作(如权重归一化和阈值平衡)将ANN转换为SNN。最近的一些转换方法已经使用VGG-16和ResNet[12, 11, 6, 33]实现了接近无损的精度。然而,转换后的SNN需要更长的时间才能在精度上与原始ANN相媲美,因为转换基于发放率编码[46],这增加了SN​​N的延迟并限制了实际应用。反向传播方法可以分为两类[26]。第一类中的方法通过在模拟时间步长 [31, 19, 58, 50, 30, 40]上展开网络来计算梯度,这类似于时间反向传播(BPTT)的思想。由于与阈值触发发放相关的梯度是不可微的,因此经常使用替代梯度。由替代方法训练的SNN不仅限于发放率编码,还可以应用于时间任务,例如对神经形态数据集进行分类[58, 8, 16]。第二种方法计算现有脉冲时间相对于脉冲时间的膜电位的梯度[5, 39, 24, 65, 63]。

    2.2 Spiking Residual Structure

    3 Methods

    3.1 Spiking Neuron Model

    3.2 Drawbacks of Spiking ResNet

    3.3 Spike-Element-Wise ResNet

    4 Experiments

    4.1 ImageNet Classification

    4.2 DVS Gesture Classification

    4.3 CIFAR10-DVS Classification

    5 Conclusion

    A Appendix

    A.1 Hyper-Parameters

    A.2 Random Temporal Delete

    A.3 Firing rates on DVS Gesture

    A.4 Gradients in Spiking ResNet with Firing Rates

    A.5 0/1 Gradients Experiments

    A.6 Reproducibility

  • 相关阅读:
    测试思想-流程规范 关于预发布环境的一些看法
    Jenkins 开启用户注册机制及用户权限设置
    Jenkins 利用Dashboard View插件管理任务视图
    Loadrunner 脚本开发-从文件读取数据并参数化
    SVN SVN合并(Merge)与拉取分支(Branch/tag)操作简介
    测试思想-流程规范 SVN代码管理与版本控制
    Python 关于Python函数参数传递方式的一点探索
    接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架[V2.0改进版]
    Python 解决Python安装包时提示Unable to find vcvarsall.bat的问题
    lintcode :链表插入排序
  • 原文地址:https://www.cnblogs.com/lucifer1997/p/15606758.html
Copyright © 2020-2023  润新知