| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 脉冲神经网络(SNN)论文阅读(一)-Going Deeper With Directly-Trained Larger Spiking Neural Networks -> 正文阅读 |
|
[人工智能]脉冲神经网络(SNN)论文阅读(一)-Going Deeper With Directly-Trained Larger Spiking Neural Networks |
Going Deeper With Directly-Trained Larger Spiking Neural Networks目录说明准备将自己读的一些和SNN(脉冲神经网络)相关的一些论文记录下来,方便自己以后回看也希望能够帮到有需要的人。 相关信息论文地址: Going Deeper With Directly-Trained Larger Spiking Neural Networks
文献1:Wu Y, Deng L, Li G, et al. Direct training for spiking neural networks: Faster, larger, better[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33(01): 1311-1318. 主要贡献论文提出了基于spatio-temporal backpropagation (时空反向传播)的threshold-dependent batch normalization (tdBN) 方法,称为 “STBP-tdBN”,并使用tdBN构建了一个深度脉冲残差网络,扩展了直接训练的SNN的深度(从小于10层到50层),使用很小的timestep(时间步长)在CIFAR-10数据集上达到了93.15%的准确率,在DVS-CIFAR10数据集上达到了67.8%的准确率(STOA)、ImageNet数据集上达到了67.05%的准确率。 启发基于本文提出的tdBN算法以及ResNet-SNN,可以用其构建深层次的SNN网络并取得更好的性能。 Abstract脉冲神经网络(SNN)在时空信息的bioplausible coding(生物可信编码)和event-driven(事件驱动)信号处理方面具有广阔的应用前景,非常适合应用于energy-efficient(低能耗的)神经形态硬件中。然而,其独特的工作模式使得其比传统网络更难训练。目前,主要有两种方式训练高性能的深层SNN。一是将预训练的ANN模型转换为对应的SNN版本,这种方式通常需要较长的coding window(编码窗口)进行收敛,也不能在训练时利用spatio-temporal features(时空特征)来解决时间任务(temporal tasks)。另一种方法是在时空域(spatio-temporal domain)中直接训练SNN,但由于激发函数(firing function)的二元脉冲活动(binary spike activity)和梯度消失或爆炸的问题,目前的方法还局限于浅层架构,难以利用大规模数据集(如ImageNet)。为此,我们提出了一种阈值依赖批量归一化(threshold-dependent batch normalization ,tdBN)方法,该方法基于新兴的时空反向传播(spatio-temporal backpropagation),称为“STBP-tdBN”,可以直接训练深层SNN,并在神经形态硬件上有效地实现其推理。利用提出的方法和精心设计的shortcut connection,我们将直接训练的SNN从一个浅层结构(<10层)大大地扩展到一个很深的结构(50层)。此外,我们基于“块动态等距(Block Dynamical Isometry)”理论从理论上分析了我们方法的有效性。最后,我们报告了更好的精度结果,包括在CIFAR-10上的93.15%,在DVS-CIFAR10上的67.8%,在ImageNet上的67.05%,而且时间步长(timestep)非常小。据我们所知,这是第一次在ImageNet上探索直接训练的高性能的深度SNN。我们相信这项工作将为充分发挥SNN的优势、吸引更多的研究者在这一领域做出贡献铺平道路。 Introduction目前主要有两种方式来训练高性能的SNN。
Related WorkSNN学习算法:在过去的几年里,很多学习算法都在探索如何训练一个深层的SNN,如(1)一些将预训练的ANN转化为SNN;(2)基于梯度下降的算法。
深度神经网络(DNN)中的梯度消失或爆炸:当动态等距时(即其输入输出雅可比矩阵的每个奇异值都保持在1附近),DNN可以避免梯度消失或梯度爆炸。Chen1等人提出了“块动态等距”,作为所有复杂串并联DNN的通用统计工具,通过研究神经网络中每个块的一阶矩和二阶矩,并分析它们对梯度分布的影响,并对神经网络中权值初始化( weight initialization)、批处理归一化(batch normalization )和shortcut connection 的作用进行了理论解释,为我们算法的开发提供了理论依据。 正则化:对于人工神经网络(ANN)来说,正则化(如batch normalization、group normalization、 layer normalization )已成为常用的方法。batch normalization(BN)通过减少内部协变量移位(internal covariate shift)来加速深度网络训练,从而提高学习速度并正则化模型。虽然它会导致很高的学习延迟(learning latency )和增加计算量,但BN使得能够训练更深的网络并避免梯度消失或爆炸。对于SNN,研究人员提出了其他的正则化技术,如data-based normalization、Spike-Norm和NeuNorm。这些正则化方法的目的是平衡输入和阈值,避免严重的信息丢失,但它们仍然忽略了梯度消失问题,对直接训练的深层SNN无效。 我们注意到BN在ANN中的效果和SNN中输入分布的重要性,因此我们修改BN以满足SNN模型的训练和推理。 Materials and Methods迭代的LIF模型(Iterative LIF model):迭代LIF模型最早由Wu2等人在2019年提出,利用欧拉法(Euler method)求解Leaky integrate-and-fire (LIF)模型的一阶微分方程,并将其转换为迭代表达式 阈值依赖批量正则化(Threshold-dependent batch normalization):批归一化(batch normalization, BN)作为DNN的正则化组成部分,是目前常用的神经网络方法,它可以实现稳定的收敛和更深层的神经网络。但是,由于SNN额外的时间维度和特殊的激活机制,直接训练的SNN需要专门设计的归一化方法。这促使我们提出阈值依赖的批处理规范化(threshold-dependent batch normalization,tdBN)。 在推理过程中,我们遵循标准Batch Normalization的模式(schema),分别估计出代表
E
[
x
k
]
E[x_k]
E[xk?]和
V
a
r
[
x
k
]
Var[x_k]
Var[xk?]在整个数据集上的期望
μ
i
n
f
\mu_{inf}
μinf?和
σ
i
n
f
2
\sigma^2_{inf}
σinf2?,并在训练过程中通过移动平均求解(moving average solution)得到。 整体训练算法(Overall training algorithm):在本节中,我们介绍STBP-tdBN的整体训练算法,用我们的tdBN从头开始训练深层SNN。 Theoretical Analysis在本节中,我们将分析tdBN对STBP-tdBN训练的SNN的影响。利用神经网络中梯度规范理论(gradient norm theory)的理论工具,我们发现我们的tdBN可以缓解训练过程中梯度消失或爆炸的问题。我们还将解释归一化过程中加入的尺度因子 α \alpha α和 V t h V_{th} Vth?的作用。 梯度规范理论(Gradient norm theory):梯度范数理论是近年来发展较好的理论,它旨在克服各种神经网络结构中的梯度消失或爆炸问题。在本文中,我们采用Chen4等人在2020年提出的“Block Dynamical Isometry”来分析tdBN在直接训练的SNN中的效果,它把网络看作为一系列的块(block): 引理1. 考虑一个神经网络,它可以如式(17)那样用一系列的块表示,第 j j j个块的雅可比矩阵表示为 J j J_j Jj?。如果 ? j , ? ( J j J j T ) ≈ 1 \forall j,\phi(J_jJ_j^T)\approx 1 ?j,?(Jj?JjT?)≈1且 φ ( j j J j T ) ≈ 0 \varphi(j_jJ_j^T)\approx 0 φ(jj?JjT?)≈0,网络就达到了“块动态等距(Block Dynamical Isometry)”,并能避免梯度消失或梯度爆炸。 引理2. 考虑一个神经网络块,包含有0均值的数据归一化(data normalization with 0-mean)、线性转换(linear transform )和整流激活rectifier activations(General Linear Transform)。设输入输出向量的二阶矩分别为 α i n \alpha_{in} αin?和 α o u t \alpha_{out} αout?,有 ? ( J J T ) = α o u t α i n \phi(JJ^T)=\frac{\alpha_{out}}{\alpha_{in}} ?(JJT)=αin?αout??。 在梯度规范理论框架的基础上,将梯度规范与脉冲神经元的特性相结合,进一步分析tdBN算法对SNN的有效性。 定理1: 考虑一个时间步长为T的SNN,在T时刻的第
j
j
j个雅可比矩阵记为
J
j
t
J^t_j
Jjt?。当
τ
d
e
c
a
y
=
0
\tau_{decay}=0
τdecay?=0时,将两个tdBN层之间每个块(block)的输入向量和输出向量的二阶矩固定为
V
t
h
2
V_{th}^2
Vth2?,有
?
(
J
j
t
(
J
j
t
)
T
)
≈
1
\phi(J_j^t(J_j^t)^T)\approx1
?(Jjt?(Jjt?)T)≈1并且可以在SNN的训练过程中避免梯度消失或梯度爆炸。 膜电势衰减机制的影响(Influence of membrane decay mechanism):下面分析
τ
d
e
c
a
y
\tau_{decay}
τdecay?对梯度传播的影响。从等式(2)到等式(15),可以得到: 尺度因子(Scaling factors):众所周知,SNN模型获得有竞争力的性能的关键是设置合适的阈值以保持发放率(firing rate)和减少信息丢失。为了实现这一点,我们在tdBN的归一化实现中引入两个尺度因子用来平衡预激活(pre-activation)和阈值。在早期的训练过程中,有
α
\alpha
α和
V
t
h
V_{th}
Vth?两个尺度因子,通过将可训练参数
λ
\lambda
λ和
β
\beta
β初始化为1和0来将预激活归一化为
N
(
0
,
V
t
h
2
)
N(0,V_{th}^2)
N(0,Vth2?)。 定理2 采用迭代LIF模型,假设预激活
x
t
~
N
(
0
,
σ
i
n
2
)
x^t \sim N(0,\sigma_{in}^2)
xt~N(0,σin2?),则膜电势
u
t
~
N
(
0
,
σ
o
u
t
2
)
u^t \sim N(0,\sigma_{out}^2)
ut~N(0,σout2?)且
σ
o
u
t
2
∝
σ
i
n
2
\sigma_{out}^2 \propto \sigma_{in}^2
σout2?∝σin2?。 用可视化分析方法验证定理2,在实验中设置
τ
d
e
c
a
y
=
0.25
\tau_{decay}=0.25
τdecay?=0.25并展示具有不同预激活方差
σ
i
n
2
\sigma_{in}^2
σin2?的膜电势分布情况,结果如图3所示。我们发现在预激活和膜电势的分布之间有高度的相似性,进一步支持了定理2。 接下来,利用LIF模型分析信息前向传播机制。 在前向过程中,当膜电势达到阈值时神经元会发放一个脉冲从而使信息前向逐层传播。根据定理2和等式(3),我们可以近似计算神经元发放脉冲的可能性 P ( u t > V t h ) P(u^t>V_{th}) P(ut>Vth?)。不难看出, P ( u t > V t h ) P(u^t>V_{th}) P(ut>Vth?)与膜电势的方差 σ i n 2 \sigma_{in}^2 σin2?和 σ o u t 2 \sigma_{out}^2 σout2?正相关。因此,使用尺度因子来调整预激活的分布,以维持深层SNN的脉冲发放率。图4显示了当我们将预激活的方差 x t ~ N ( 0 , σ i n 2 ) x^t\sim N(0,\sigma_{in}^2) xt~N(0,σin2?)设为不同值时神经元的发放率分布情况。 由于延迟/衰退(decay)机制,即使神经元每次都接受到正的输入也可能不会触发一个脉冲(如图4a),这意味着下一层的神经元只接受到很小的非零突触前输入,使得脉冲信号在深层SNN中消失,阻止了信号的前向传播。另一种情况是一个神经元一直在发放脉冲(如图4c),这意味着一些神经元的输出对预激活的变化不敏感,会导致计算量的增加。 综上所述,为了平衡突触前输入和阈值以维持发放率,我们利用尺度因子来控制膜电势和预激活的方差,从而减轻其对阈值的依赖。因此,我们将预激活归一化为 N ( 0 , V t h 2 ) N(0,V_{th}^2) N(0,Vth2?)。 Deep Spiking Residual Network当网络变得越来越深时,ResNet是解决退化问题的最流行的架构之一。通过使用shortcut connection,He5等人于2016年在不同层之间增加了恒等映射(identity mapping),使得能够训练深层的神经网络。受到残差学习的启发,本文提出了深度脉冲残差网络(deep spiking residual network),使用tdBN代替了BN层并且修改了shortcut connection以达到更好的性能。 Basic Block:ANN中的ResNet是由一些basic block(基本块)构建的。图5(a)显示了ResNet-ANN中传统的基本块的形式。 传统的基本块是在相对比较shallow的残差网络中实现的,它包含有两层的 3 × 3 3 \times 3 3×3卷积、BN层和ReLU激活层。在此基础上,我们提出了我们的深度脉冲残差网络的基本块。如图5(b)所示,使用LIF模型替换掉ReLU激活并使用tdBN替换掉BN层。除此之外,还在最终的相加之前修改了shortcut connection并增加了一个tdBN层。然后将最终激活层或shortcut connection中的超参数 α \alpha α设为 1 2 \frac {1}{\sqrt{2}} 2?1?,其它tdBN层的超参数 α \alpha α设为1,这能保证每个激活的输入分布在训练开始时满足 N ( 0 , V t h 2 ) N(0,V_{th}^2) N(0,Vth2?)。 网络架构(Network architecture):使用基本块来构建深度脉冲残差网络。最初的编码层接受输入并直接使用一个stride=2的卷积核进行下采样(downsampling),然后脉冲活动通过基本块传播。和ResNet-ANN类似,当特征图(feature map)减半时我们也将channel数量增加一倍。在平均池化或者全连接层后,最后的解码层使用全连接层和softmax函数。 Experiment本文将深度残差SNN在静态非脉冲数据集(static non-spiking datasets,如CIFAR-10和ImageNet)和神经形态数据集(neuromorphic dataset,如DVS-gesture和DVS-CIFAR10)上都进行了测试,并将结果与别的SNN模型进行比较,验证了该方法在精度和时间步长上的优势。补充材料C中对数据集的介绍、预处理、参数配置、训练细节和结果分析进行了总结。 静态数据集上的实验:静态数据集上的实验包括CIFAR-10和ImageNet,它们都是标准的图像识别基准(benchmark)。我们用不同的时间步长、尺寸(size)和深度测试ResNet-SNN。由于脉冲的稀疏性,我们的模型与具有相同架构的ANN相比,在非常少的时间步长的情况下显著减少了计算量。与别的SNN模型相比,ResNet-SNN的速度更快、效果更好!实验结果如下表1所示,详细的分析在补充材料D中。 神经形态数据集上的实验:与非脉冲的静态数据集相比,神经形态数据集包含更多的时间信息,这更适合于SNN来体现其优势。这里采用了两个具有挑战性的神经形态数据集:DVS-Gesture和DVS-CIFAR10。在DVS-Gesture上面达到了直接训练的SNN(directly-trained SNN)的SOTA(state-of-the-art)结果,实验结果如下表1和表2。 Conclusion在本文中,我们提出了一种归一化(normalization)方法,使得能够直接训练高性能的深层SNN。我们结合梯度规范理论(gradient norm theory),证明该方法在训练过程中能够有效地平衡输入刺激和神经元阈值,从而促进学习收敛。在此基础上,通过进一步引入shortcut connection,我们将直接训练的SNN从一个常见的浅层结构(不到十层)大大扩展到一个非常深的结构(五十层)。最后,在大规模静态图像数据集和神经形态数据集上对模型进行了评价。与其他SNN模型相比,我们在CIFAR-10和ImageNet上实现了较高的准确率并具有显著更小的推理延迟。据我们所知,这是第一个在ImageNet上报道的一个直接训练的和非常深的SNN的工作。在神经形态数据集上,我们的模型可以有效地处理时空信息,并取得最先进的(state-of-the-art)性能。 Supplementary Material(待补充)A Codes for Algorithms(算法代码)B Proofs of Theorems(定理证明)C Details of Experiments(实验细节)D Analysis of Computation Reduction(计算量降低分析)部分参考文献
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:53:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |