脉冲神经网络深度残差学习(ResNet)

news2025/1/11 22:36:06

来源:投稿 作者:小灰灰
编辑:学姐

论文标题:Deep Residual Learning in Spiking Neural Networks

论文链接: https://arxiv.org/pdf/2102.04159v3.pdf

代码链接:https: //github.com/fangwei123456/Spike-Element-Wise-ResNet.

摘要

由于discrete binary activation 和complex spatial- temporal dynamics ,脉冲神经网络(SNN)在基于梯度的方法中存在优化困难。考虑到ResNet在深度学习方面的巨大成功,用残差学习训练深度SNN是很自然的。之前的Spiking ResNet模拟了ANN中的标准残差块,并简单地用脉冲神经元替换ReLU激活层,这会导致退化问题,并且很难实现残差学习。在本文中,我们提出了基于脉冲网络的ResNet来实现深度SNN中的残差学习。我们证明了SEW-ResNet可以很容易地实现identity mapping 并克服Spiking ResNet的消失/爆炸梯度问题。我们在ImageNet、DVS Gesture和CIFAR10-DVS数据集上评估了SEW ResNet,并表明SEW ResNet在准确性和时间步长方面都优于最先进的直接训练SNN。此外,SEW ResNet可以通过简单地添加更多层来实现更高的性能,为深层SNN的训练提供了一种简单的方法。据我们所知,这是第一次可以直接训练100层以上的深层SNN。

介绍

人工神经网络(ANN)在许多任务中取得了巨大成功,包括图像分类、目标检测、机器翻译和游戏。ANN成功的关键因素之一是深度学习,它使用多层来学习具有多个抽象级别的数据表示。已经证明,较深的网络在计算成本和泛化能力方面优于较浅的网络。深度网络所代表的功能可能需要具有一个隐藏层的浅层网络具有指数数量的隐藏单元。此外,网络的深度与网络在实际任务中的表现密切相关。然而,最近的证据表明,随着网络深度的增加,精度会饱和,然后迅速下降。为了解决这一退化问题,提出了残差学习,并在实现领先性能的“非常深”网络中广泛利用残差结构。

SNN因其高生物合理性、事件驱动特性和低功耗而被视为ANN的潜在竞争对手。最近,深度学习方法被引入到SNN中,深度SNN在一些简单的分类数据集中取得了与ANN相近的性能,但在复杂的任务中,如对ImageNet数据集进行分类,其性能仍然不如ANN。为了获得更高性能的SNN,探索更深层的网络结构(如ResNet)是很自然的。Spiking ResNet作为ResNet的版本,是通过模拟ANN中的残差块并用脉冲神经元替换ReLU激活层而提出的。从ANN转换而来的Spiking ResNet在几乎所有数据集上都达到了一流的精度,而直接训练的SpikingResNet尚未被验证可以解决退化问题。

本文的贡献点:

在本文中,我们证明了Spiking ResNet不适用于所有神经元模型来实现identity mapping. 。即使满足identity mapping.条件,Spiking ResNet也会遇到梯度消失/爆炸的问题。因此,我们建议使用Spike Element Wise(SEW)ResNet来实现SNN中的残差学习。我们证明了SEW-ResNet可以很容易地实现身份映射,同时克服了消失/爆炸梯度问题。我们在ImageNet数据集和神经形态DVS手势数据集、CIFAR10-DVS数据集上评估了Spiking ResNet和SEW ResNet。实验结果与我们的分析相一致,表明深度较深的Spiking ResNet存在降级问题——深度较浅的网络的训练损失比深度较低的网络高,而SEW ResNet可以通过简单地增加网络深度来获得更高的性能。此外,我们还表明,SEW ResNet在精度和时间步长方面都优于最先进的直接训练SNN。据我们所知,这是第一次探索直接训练的超过100层的深层SNN。

方法

Spiking Neuron Model

脉冲神经元是SNN的基本计算单元。我们使用一个统一的模型来描述各种脉冲神经元的动力学。可以用充电,放电,重置的顺序来进行理解。

我们取前一个时刻的电压V[t-1],和输入电流X[t],来决定放电前的一个膜电位H[t],

X[t]是时间步t处的输入电流,H[t]和V[t]分别表示神经元动力学后和时间步长t处峰值触发后的膜电位,Vth是触发阈值,θ(x)是Heaviside阶跃函数,定义为

for x < 0 ,S[t]是时间步t的输出峰值,如果有峰值,则等于1,否则等于0。 V_{reset}表示复位电位。式(1)中的函数f(·)描述了神经元动力学,并针对不同的脉冲神经元模型采取了不同的形式。例如,Integrate and Fire(IF)模型和Leaky Integrate&Fire(LIF)模型的函数f(·)可以分别用公式(4)和公式(5)来描述。

式中,τ表示膜时间常数。式(2)和式(3)描述了脉冲产生和重置过程,这对于所有类型的脉冲神经元模型都是相同的。本文用代理梯度法定义了

误差反向传,σ(x)表示代理函数。

Drawbacks of Spiking ResNet

Spiking ResNet不适用于所有实现identity mapping 的神经元模型:

ResNet中的关键概念之一是identity mapping 。如果添加的层实现了identity mapping ,则更深层次的模型的训练误差不应大于较浅层次的模型。然而,它无法在可行的时间内对添加的层进行训练以实现identity mapping ,从而导致较深的模型的性能比较浅的模型差(退化问题)。为了解决这个问题,通过添加一个shortcut 连接(如图1(a)所示),提出了残差学习。如果我们使用Fl 表示ResNet和Spiking ResNet中第1个残差块的残差映射,例如两个卷积层的堆栈,那么图1(a)和图1(b)中的残差块可以表示为

方程(6)的残差块使得在人工神经网络中实现identity mapping 变得容易。

要看到这一点,

在大多数情况下,X^l是先前ReLU层的激活,因此 这是identity mapping。

与ResNet不同,Spiking ResNet中的残差块限制了脉冲模型神经元实现identity mapping。S作为输入的脉冲,是非0即1的;当残差F为0时,公式(7)变为O[t]=SN(S[t]),而SN(S[t])往往不等于S[t],这就不能实现恒等映射。

Spike-Element-Wise ResNet

提出了Spike Element Wise(SEW)残差块来实现SNN中的残差学习,它可以方便地实现身份映射,同时克服消失/爆炸梯度问题。如图1(c)所示,SEW残余块体可以表示为:

 SEW ResNet can overcome vanishing/exploding gradient.:

SEW块类似于ANN中的ReLU before addition(RBA)块[15],可公式化为:

实验

ImageNet Classification

因为ImageNet 2012的测试数据集没有公开,我们无法获取实际测试精度。我们使用验证集的准确度作为测试准确度,[14]等人在ImageNet数据集上评估了18/34/50/101/152层ResNets。为了进行比较,我们考虑具有相同网络架构的SNN,我们把basic residual block (图1(a))用spiking basic block (图一(b))和SEW ResNet (图一(c))代替。静态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层SpikingResNet。随着层的增加,Spiking ResNet的测试精度降低。为了揭示原因,我们比较了训练过程中Spiking ResNet的训练损失、训练精度和测试精度,如图3所示。更重要的是,从图3可以看出,随着深度的增加,SEW ResNet的训练损失减少,训练/测试精度增加,这表明我们可以通过简单地增加网络深度来获得更高的性能。所有这些结果表明,SEW ResNet很好地解决了退化问题。

我们可以发现Spiking ResNet的退化问题——较深的网络比较浅的网络有更高的训练损失。相比之下,较深的34层SEW ResNet的测试精度高于较浅的18层SEW ResNet(如表2所示)。

Comparisons with State-of-the-art Methods. 在表3中,我们将SEW ResNet与之前在ImageNet上获得最佳结果的Spiking ResNets进行了比较。

据我们所知,SEW ResNet-101和SEW ResNet-152是迄今为止唯一具有超过100层的SNN,并且没有其他具有相同结构的网络可供比较。当网络结构相同时,我们的SEW ResNet优于直接训练的Spiking ResNet的精度,同时时间步长T更少。SEW ResNet-34的精度略低于使用td BN(67.04%v.s.67.05%)的Spiking ResNet-34(大型),它使用的时间步长T(6 v.s.4)是我们SEW ResNet的1.5倍,参数数量(85.5M v.s.21.8M)是我们的4倍。最先进的ANN2SNN方法比我们的SEW ResNet具有更好的准确性,但它们分别使用的时间步长是我们的64倍和87.5倍。

Gradients Check on ResNet-152 Structure.

式(8)和式(11)分析了gradients of multiple blocks with identity mapping,为了验证SEW ResNet能够克服消失/爆炸梯度,我们检查了Spiking ResNet-152和SEW ResNet-152的梯度,它们是最深的标准ResNet结构。我们考虑相同的初始化参数,并且有/没有零初始化。

由于SNN的梯度受到发射率的显著影响,我们首先分析firing rate 。图5(a)显示了第l块输出的初始firing rate,下采样块用垂直虚线标记。两条相邻虚线之间的块表示identity mapping areas ,并且具有相同形状的输入和输出,使用零初始化时,Spiking ResNet、SEW AND ResNet,SEW IAND ResNet和SEW ADD ResNet具有相同的firing rates(绿色曲线),即零初始化曲线。如果不进行零初始化,silence 问题会发生在SEW AND网络(红色曲线)中,SEW IAND网络(紫色曲线)可以缓解silence 问题。图5(b)显示了A^l的firing rate ,它表示第l块中最后一个SN的输出,可以发现,尽管SEW ADD ResNet中O^l的firing rate 在identity mapping 中线性增加,但每个块中的最后一个SN仍然保持稳定的firing rate。请注意,当g为ADD时,SEW块的输出不是二进制的,firing rate实际上是平均值, SEW IAND ResNet的SN保持适当的firing rate,并随深度略有衰减(紫色曲线),而SEW AND ResNet深层的SN则保持不变(橙色曲线)。这中现象可以这样解释。当我们使用

在没一个时间步t时,它很难保持 , g 为AND,SEW ResNet中经常会出现静止问题,使用IAND替代AND可以缓解这个问题,因为它很容易保持每个时间步 

我们在所有实验中使用的替代梯度函数是

,因此,它的导数为

DVS Gesture Classification

用于对复杂ImageNet数据集进行分类的原始ResNet对于DVS手势数据集来说太大,因此,我们设计了一个名为7B-Net的小型网络,其结构为c32k3s1-BN-PLIF-{SEW Block-MPk2s2}*7-FC11. 这里,c32k3s1表示具有通道32、卷积核大小3、步长1的卷积层。MPk2s2是卷积核大小为2,步长为2的最大池化层。符号{}*7表示七个重复结构,PLIF表示具有可学习膜时间常数的Parametric Leaky-Integrate-and- Fire 脉冲神经元。

Spiking ResNet vs. SEW ResNet. 

我们首先通过将基本块SEW块替换为(SEW ADD ResNet) and Spiking ResNet 。如图9和表4所示,虽然Spiking ResNet的训练损失(蓝色曲线)低于SEW ADD ResNet(橙色曲线),但测试精度低于SEW ADD ResNet,分别为90.97%和97.92%,这意味着Spiking ResNet比SEW ADD-ResNet更容易过拟合。

Evaluation of different element-wise functions and plain block.:

由于DVS手势数据集上SNN的训练成本比ImageNet上低得多,因此我们对DVS手势数据库进行了更多的消融实验。我们将SEW块替换为普通块(无short- cut connection )并测试性能。我们还评估了表1中的各种元素函数g。图9显示了DVS手势的训练损失和训练/测试精度。

早期时期的波动是由学习率高引起的。我们可以发现,训练损失为SEW IAND<Spiking ResNet<SEW ADD<Plain Net<SEW AND。由于过拟合问题,较低的损耗不能保证较高的测试精度。表4显示了所有网络的测试精度。SEW ADD ResNet的准确度最高.

Comparisons with State-of-the-art Methods:

表5将我们的网络与SOTA方法进行了比较。可以发现,我们的SEW ResNet在精度、参数数量和模拟时间步长方面优于SOTA。

CIFAR10-DVS Classification

我们还实验了关于CIFAR10-DVS数据集的SEW ResNet,该数据集是通过DVS摄像机在LCD监视器上记录CIFAR-10数据集的运动图像而获得的,由于CIFAR10-DVS比DVS手势更复杂,我们使用名为Wide-7B-Net的网络结构,它类似于7B-Net,但具有更多通道。Wide-7B-Net的结构为c64k3s1-BN-PLIF-{SEW Block (c64)-MPk2s2}*4-c128k3s1-BN-PLIF-{SEW Block (c128)-MPk2s2}*3-FC10. 在表6中,我们将SEW ResNet与之前的Spiking ResNet进行了比较。我们可以发现,与Spiking ResNet相比,我们的方法实现了更好的性能(70.2%对67.8%)和更少的时间步长(8对10)。我们还将我们的方法与CIFAR10-DVS上最先进的(SOTA)监督学习方法进行了比较。我们的Wide-7B-Net的精度略低于当前的SOTA方法[8](74.4%vs.s.74.8%),该方法使用1.25倍的模拟时间步长T(20 vs.s.16)和14.6倍的参数数量(17.4M vs.s.1.19M)。此外,当将T形状减少到T=4时,我们的Wide-7B-Net仍然可以获得64.8%的精度。

Conclusion

本文分析了以前的Spiking ResNet,发现它很难实现identity mapping ,并且存在消失/爆炸梯度的问题。为了解决这些问题,我们提出了SEW残差块,并证明了它可以实现残差学习。在ImageNet、DVS Gesture和CIFAR10-DVS数据集上的实验结果表明,我们的SEW残差块解决了退化问题,SEW ResNet可以通过简单地增加网络深度来实现更高的精度。我们的工作可能有助于了解“非常深层”的SNN。

关注下方【学姐带你玩AI】🚀🚀🚀

回复“机器学习”领取机器学习资料合集

码字不易,欢迎大家点赞评论收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MYSQL数据库基础(数据库)

文章目录 一、数据库使用流程二、数据库的操作三、常用数据类型3.1 数值类型3.2 字符串类型3.3 日期类型 四、数据表操作 一、数据库使用流程 用户在客户端输入SQL语句客户端会把SQL通过网络发送给服务器服务器会执行这个SQL&#xff0c;把结果返回给客户端客户端接收到结果后…

第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号——结果导向

0、结果 说明&#xff1a;先来看看串口调试助手显示的结果&#xff0c;如果有遮挡会输出低电平或者高电平&#xff0c;没有遮挡会输出高电平或者低电平&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;这里要区分到底是NPN型号的&#xff0…

分享几个索引创建的小 Tips

文章目录 1. 冗余索引1.1 联合索引左边列1.2 索引中加入主键 2. 隐藏的索引排序3. 删除不使用的索引4. 手动更新索引统计信息5. 适时优化表 关于 MySQL 中的索引&#xff0c;松哥前面已经和小伙伴们聊了不少了&#xff0c;不过在索引使用的时候&#xff0c;还是有一些需要注意的…

如何发布一个npm包

1、注册账号 https://www.npmjs.com/ 使用邮箱注册即可 a. 邮箱会在本地登录时发送验证码使用 b. 发布包后邮箱会收到通知 2、生成AccessToken &#xff08;1&#xff09;直接本地登录 # 根据提示输入用户名、密码、注册邮箱 npm login# 输入完邮箱会发送验证码&#xff0c…

如何做一个有质量的技术分享

分享信息并不难,大多数人都能做到,就算是不善言谈性格内向的技术人员,通过博客或社交媒体,或是不正式的交流,他们都能或多或少的做到。但是如果你想要做一个有质量有高度的分享,这个就难了。 所谓的有质量和有高度,我心里面的定义有两点: 分享内容的保鲜期是很长的会被…

win11本地安装k8s

1、确保本地已经安装DesktopDocker&#xff1b; 2、使用choco下载安装Kind&#xff0c;正常下载安装报错提示&#xff0c;建议使用管理员权限 使用管理员权限下载安装Kind 也可以从github下载kind到本地进行安装&#xff0c;下载地址 Releases kubernetes-sigs/kind GitHub …

分布式锁Redis基础理论与落地实现与Redisson。

分布式锁Redis基础理论与落地实现 基本概念基于Redis的分布式锁基本用法基于Redis实现分布式锁初级版本改进Redis的分布式锁问题Redis的Lua脚本利用Lua脚本写释放锁业务流程再次改进Redis的分布式锁 总结 Redisson基于setnx实现的分布式锁存在下面的问题Redisson入门Redisson可…

64位系统究竟牛逼在哪里?

想必大家都遇到过这样的问题&#xff1a;安装某个软件的时候&#xff0c;出现提示选择32位版本还是64位版本&#xff1f;我们也可以查看自己的电脑是32位还是64位系统。 Windows Linux 大家可能知道32位和64位和系统有关&#xff0c; 但其实 32 vs 64 可以有多重含义。 一般情…

JVM学习笔记(上)

1、总体路线 2、程序计数器 Program Counter Register 程序计数器&#xff08;寄存器&#xff09; 作用&#xff1a;是记录下一条 jvm 指令的执行地址行号。 特点&#xff1a; 是线程私有的不会存在内存溢出 解释器会解释指令为机器码交给 cpu 执行&#xff0c;程序计数器会…

GCC写个库给你玩,就这?

前言 什么是GCC GCC原名为 GNU C语言编译器 「GCC」(GNU Compiler Collection,GNU编译套件) 是由GNU开发的编程语言编译器。 正文 安装命令 sudo apt-get insatll gcc g注意安装版本要大于4.8.5因为4.8.5以后的版本才支持c11标准 查看版本 gcc -v gcc --version g -v g …

Vue.js 的数据双向绑定实现原理

Vue.js 的数据双向绑定实现原理 Vue.js 是一款流行的前端框架&#xff0c;它采用了数据双向绑定的方式&#xff0c;让前端开发人员更加方便地管理数据和视图。在本文中&#xff0c;我们将深入探讨 Vue.js 的数据双向绑定实现原理&#xff0c;以及相关的代码示例。 数据双向绑定…

1. TensorRT量化的定义及意义

前言 手写AI推出的全新TensorRT模型量化课程&#xff0c;链接&#xff1a;TensorRT下的模型量化。 课程大纲如下&#xff1a; 1. 量化的定义及意义 1.1 什么是量化&#xff1f; 定义 量化(Quantization)是指将高精度浮点数(如float32)表示为低精度整数(如int8)的过程&…

jmeter性能测试步骤实战教程

1. Jmeter是什么&#xff1f; 2. Jmeter安装 2.1 JDK安装 由于Jmeter是基于java开发&#xff0c;首先需要下载安装JDK &#xff08;目前JMeter只支持到Java 8&#xff0c;尚不支持 Java 9&#xff09; 1. 官网下载地址&#xff1a; http://www.oracle.com/technetwork/java/…

Map、Set和哈希表的应用练习(数据结构系列15)

目录 前言&#xff1a; 练习题&#xff1a; 结束语&#xff1a; 前言&#xff1a; 在上一节博客中小编给大家介绍了Map、Set和哈希表的一些简单的知识点&#xff0c;同时也给大家简单的演示了一下如何使用他们里面的一些基础方法&#xff0c;那么接下来让小编带着你们一起来…

当心!经济学家分析:未来三年内做好随时失业的准备

AI人工智能又来抢饭碗了&#xff0c;这次竟然通过了公认难考的会计行业考试&#xff01; 近期&#xff0c;OpenAI的大语言模型最新版GPT-4已经完成美国注册会计师&#xff08;简称CPA&#xff09;考试&#xff0c;四大主要会计考试所有科目的平均得分为85.1。 而在CPA考试中&…

落地页设计的营销心理学(三)

本文是「落地页设计的营销心理学」这个主题系列文章的收官篇&#xff0c;要给大家分享关于用户行动号召、提高用户参与度和整个营销落地页结构的设计。 回顾系列文章&#xff1a; 《落地页设计的营销心理学&#xff08;一&#xff09;》 《落地页设计的营销心理学&#xff08…

C++进阶 —— 线程库(C++11新特性)

十&#xff0c;线程库 thread类的简单介绍 在C11之前涉及多线程问题&#xff0c;都是和平台相关的&#xff0c;如windows和Linux下各有自己的接口&#xff0c;这使代码的可移植性较差&#xff1b;C11中最重要的特性就是对线程进行支持&#xff0c;使得C在并行编程时不需要依赖…

【社区图书馆】《写作脑科学》

文章目录 前言语言和思维写作技巧创造性思维总结 前言 杨滢著的《写作脑科学》是一本关于写作的科学读物&#xff0c;它深入探讨了人类大脑是如何进行创造性思维和表达的。这本书让我对写作有了全新的认识&#xff0c;也为我提供了一些实用的技巧和策略来提高自己的写作能力。…

整理 钢琴教材 约翰·汤普森现代钢琴教程(大汤)

邮箱不能及时回复,现放到网盘里了,文末按需自取 约翰-汤普森钢琴教程1 文件名:(大汤1)约翰汤普森现代钢琴教程 1 超清PDF 文件大小:9.9 MB 下载地址:https://download.csdn.net/download/qq_36040764/85051148 约翰-汤普森钢琴教程2 文件名:(大汤2)约翰汤普森现…

Python3中goto的用法

Python3代码指定跳转可以使用goto这个库&#xff1a; 安装&#xff1a; pip install goto-statement 一般安装的版本是1.2 需要做以下修改才能正常使用&#xff1a; python 使用goto&#xff0c;遇到的问题解决_奶嘴偷走初吻的博客-CSDN博客python goto 出现报错:Attribut…