LTMD: Learning Improvement of Spiking Neural Networks with Learnable Thresholding Neurons and Moderate Dropout
【论文地址】 paper
【代码链接】 code
Introduction
- 现如今的大多数研究是基于在整个网络中使用相同的神经元模型的情况下,调整突触连接以最小化模型的输出和目标值之间的误差。然而从神经科学的观察中发现,生物神经元的动力学随着它们在大脑中的相对位置而变化。因此从SNN的角度来说,在整个SNN上使用相同的神经元模型可能会限制SNN的表达能力
- Dropout是训练网络过程中常用的正则化技术,由于丢弃的神经元是随机选择的,每次网络运行都会导致输入与不同的子模型交互(sub-model指的是在dropout中随机丢弃一些神经元后,得到的每个不同的神经网络模型,也可以被称为子模型或子网络。每个子模型具有不同的结构和参数设置,这些子模型共同工作来解决给定的学习问题。),这将导致不同运行中的结果出现不可预测的偏差。因此,需要正则化技术来最小化训练阶段输出概率分布之间的不一致性,以提高性能。
文章贡献点
- 可训练阈值机制:神经元参数可以在训练过程中动态改变并自我优化。
- 中度丢弃技术:最大限度地减少不同运行中生成的网络子模型之间的不一致性
Methods
Leaky Integrate-and-Fire Model with Learnable Thresholding
膜动力学方程:
τ
d
u
(
t
)
d
t
=
−
u
(
t
)
+
I
(
t
)
\begin{align} \tau \frac{du(t)}{dt}=-u(t)+I(t) \end{align}
τdtdu(t)=−u(t)+I(t)
- τ \tau τ:时间常数,表示神经元膜电位随时间衰减的速度
- u ( t ) u(t) u(t):t时刻的神经元膜电位
- I ( t ) I(t) I(t):t时刻的突触前神经元的输入电流
根据时间域上离散化后的LIF模型:
u
i
t
,
n
=
κ
u
i
t
−
1
,
n
(
1
−
o
i
t
−
1
,
n
)
+
∑
j
∈
l
(
n
−
1
)
W
i
j
o
j
t
,
n
−
1
\begin{align} u^{t,n}_{i} = \kappa u^{t−1,n}_{i} (1 − o^{t−1,n}_{i} )+ \sum_{j∈l(n−1)} W_{ij} o^{t,n−1}_{j} \end{align}
uit,n=κuit−1,n(1−oit−1,n)+j∈l(n−1)∑Wijojt,n−1
o i t , n = f ( u i t , n ) \begin{align} o^{t,n}_{i} = f (u^{t,n}_{i} ) \end{align} oit,n=f(uit,n)
- u i t , n u^{t,n}_{i} uit,n:位于n层的突触后神经元i在时间t的膜电位
- κ \kappa κ:衰减因子
- o j t , n − 1 o^{t,n−1}_{j} ojt,n−1:突触前神经元j的输出脉冲
- l ( n − 1 ) l(n−1) l(n−1):目标神经元i的所有突触前神经元
- f ( n ) f(n) f(n):决定神经元在时刻t是否要发放脉冲的阶跃激活函数,超过阈值发放脉冲,否则不发放
公式(2)表示神经元膜电位的更新方程,公式(3)表示神经元如何发放脉冲,其中:
f
(
n
)
=
{
1
,
if
u
>
V
t
h
0
,
o
t
h
e
r
w
i
s
e
\begin{align} f(n)=\begin{cases} 1, & \text{if }\quad u > V_{th}\\ \nonumber 0, & \quad otherwise \end{cases} \end{align}
f(n)={1,0,if u>Vthotherwise
为了避免脉冲激活函数不可微的问题,需要设置一个伪导数(伪导数是指在函数不可导的点处,通过定义一个辅助函数的方式,将其近似为一个可导点的导数),并指定一个辅助矩形函数作为近似梯度:
f
′
(
n
)
=
{
1
,
∣
u
−
V
t
h
∣
<
0.5
0
,
o
t
h
e
r
w
i
s
e
\begin{align} f'(n)=\begin{cases} 1, \quad |u - V_{th}| < 0.5\\ 0, & \quad otherwise \end{cases} \end{align}
f′(n)={1,∣u−Vth∣<0.50,otherwise
研究不同阈值大小对于神经元敏感程度的影响
实验得出:随着阈值变高,输出脉冲数减少和系统对外部刺激的敏感性降低的趋势
- 高敏感度有利于捕捉小而即时的信息
- 低敏感度能够过滤掉一些噪声并在输入波动的情况下保持稳定性
可学习阈值机制可以使用以下修改的神经元响应函数来实现最佳灵敏度:
o
i
t
,
n
=
g
(
u
i
t
,
n
,
M
n
)
\begin{align} o^{t,n}_i = g(u^{t,n}_i , M^n) \end{align}
oit,n=g(uit,n,Mn)
- M n M^n Mn是第n层中的神经元的阈值。
- g ( u , m ) = f ( u − m ) g(u, m) = f (u − m) g(u,m)=f(u−m)
- f ( x ) f(x) f(x)是和公式(4)相同的阶跃函数
根据输出和阈值的关系,可以求出网络损失关于权重和阈值的梯度:
Δ
L
(
W
,
M
)
=
[
∂
L
∂
W
,
∂
L
∂
M
]
\Delta L(W, M ) = [ \frac{\partial L}{\partial W} , \frac{\partial L}{\partial M} ]
ΔL(W,M)=[∂W∂L,∂M∂L]根据公式(2)(4)(5)可以分别得出权重和阈值对于损失的梯度:
∂
L
∂
W
n
=
∑
t
=
1
T
∂
L
∂
o
t
,
n
∂
o
t
,
n
∂
u
t
,
n
∂
u
t
,
n
∂
W
n
\begin{align} \frac{\partial L}{\partial W^n} = \sum_{t=1}^{T} \frac{\partial L}{\partial o^{t,n}} \frac{\partial o^{t,n}}{\partial u^{t,n}} \frac{\partial u^{t,n}}{\partial W^{n}} \end{align}
∂Wn∂L=t=1∑T∂ot,n∂L∂ut,n∂ot,n∂Wn∂ut,n
∂
L
∂
M
n
=
∑
t
=
1
T
∂
L
∂
o
t
,
n
∂
o
t
,
n
∂
M
n
\begin{align} \frac{\partial L}{\partial M^n} = \sum_{t=1}^{T} \frac{\partial L}{\partial o^{t,n}} \frac{\partial o^{t,n}}{\partial M^{n}} \end{align}
∂Mn∂L=t=1∑T∂ot,n∂L∂Mn∂ot,n
∂
o
t
,
n
∂
M
n
\frac{\partial o^{t,n}}{\partial M^{n}}
∂Mn∂ot,n表示网络输出相对于神经元阈值的导数,可以进一步表示为:
∂
o
t
,
n
∂
M
n
=
∂
f
(
u
t
,
n
−
M
n
)
∂
M
n
=
−
f
′
(
u
t
,
n
−
M
n
)
\frac{\partial o^{t,n}}{\partial M^n} = \frac{\partial f (u^{t,n}−M^n)}{\partial M^n} = −f ′(u^{t,n} − M^n)
∂Mn∂ot,n=∂Mn∂f(ut,n−Mn)=−f′(ut,n−Mn)
其值由公式(4)定义的辅助函数的梯度决定,同时为了保证阈值的大小不至于过低或过高,引入一个超参数
k
k
k和双曲正切函数使得神经元阈值
M
M
M稳定在一个合适的区间
M
=
t
a
n
h
(
k
)
M=tanh(k)
M=tanh(k)因此结合公式(7),重新得到阈值的梯度:
∂
L
∂
k
n
=
∑
t
=
1
T
∂
L
∂
o
t
,
n
∂
o
t
,
n
∂
M
n
∂
M
n
∂
k
n
=
−
∑
t
=
1
T
∂
L
∂
o
t
,
n
f
′
(
u
t
,
n
−
t
a
n
h
(
k
n
)
)
s
e
c
h
2
(
k
n
)
\begin{align} \frac{\partial L}{\partial k^n} = \sum_{t=1}^{T} \frac{\partial L}{\partial o^{t,n}} \frac{\partial o^{t,n}}{\partial M^{n}} \frac{\partial M^{n}}{\partial k^{n}} = -\sum_{t=1}^{T}\frac{\partial L}{\partial o^{t,n}} f ′(u^{t,n} − tanh(k^n))sech^2(k^n) \end{align}
∂kn∂L=t=1∑T∂ot,n∂L∂Mn∂ot,n∂kn∂Mn=−t=1∑T∂ot,n∂Lf′(ut,n−tanh(kn))sech2(kn)
这样就使得
V
t
h
V_{th}
Vth保持在[-1,1]的范围内。选择合适的神经元阈值有以下好处:
- 潜在衰减曲线不会被拉伸。潜在衰减是指神经元的响应随着时间的推移而减弱的现象。如果阈值设置得太高,神经元需要更强的输入才能发射脉冲,这可能导致潜在衰减曲线被拉伸,因为更多的输入脉冲需要在更长的时间内到达。相反,如果阈值设置得太低,神经元容易被激活,这可能导致响应过于频繁,从而使潜在衰减曲线变得陡峭。
- SNN 不会过度依赖于突触的子集来进行优化。如果突触权重设置得过高,神经元可能只需要少量的输入脉冲就能够发射输出脉冲,从而使其他突触的贡献被忽略。适当的阈值设置可以确保所有突触都能够发挥其应有的作用,从而使 SNN 的优化更加全面和准确。
文中对所有的神经元使用可训练阈值机制,并且同一层的神经元共享相同的阈值,以减少产生的可学习参数
Input Encoding and Network Architecture
第一层作为编码层,直接接收输入数据,然后在传输到第二层之前将数据转换为尖峰信号。这就使得数据集中的数据可以直接输入到网络中,即使它不具备脉冲形式,以此可以减少模拟时间窗口的大小
网络架构: 采用DenseNet架构,其中网络层是密集连接的,使得来自先前层的数据可以通过神经元之间的密集连接直接传输到后续层。DenseNet采用和ResNet(卷积、批量规范化和激活)不同的由批量规范化、激活和卷积组成的稠密块
总体来说,本文在网络中的全部神经元应用可训练阈值机制,并将全连接层中的Dropout机制替换成所提出的中度Dropout
Output Decoding and Lateral Interaction(输出解码和横向交互)
在多数研究中,网络被设计为输出层的第一个发放脉冲的神经元被认为是预测的类别,但是由于时间离散化,可能会出现多个神经元在同一时刻发放脉冲的情况。为了避免这种情况,本文选择 使用神经元的电位值而不是激发状态进行预测,因此,即使网络中有多个神经元同时达到激活状态,网络也会选择其内部状态最高(膜电位最高)的神经元作为预测结果。横向交互作用只针对与全连接神经网络中的神经元
神经元的内部状态由环境刺激和相邻神经元的局部效应决定,感受野内的兴奋性和抑制性相互作用被称为神经元的 横向相互作用特性。横向交互可以通过抑制来自某些神经元的输入和增强来自其他神经元的输入来避免信息过载。
本文中,神经元的状态受两个组成部分影响:
- 由先前状态或先前神经元触发的潜在更新
- 以及与同一层中相邻神经元的相互作用。
因此,全连接神经网络中神经元的膜电位更新方程由公式(2)(3)变换成:
u i t , n = κ u i t − 1 , n ( 1 − f ( u i t − 1 , n ) ) + ∑ j ∈ l ( n − 1 ) W i j o j t , n − 1 + W r f o r f t − 1 , n \begin{align} u^{t,n}_{i} &= \kappa u^{t−1,n}_{i} (1 − f(u^{t−1,n}_{i}) )+ \sum_{j∈l(n−1)} W_{ij} o^{t,n−1}_{j} + W_{rf}o^{t-1,n}_{rf}\\ \end{align} uit,n=κuit−1,n(1−f(uit−1,n))+j∈l(n−1)∑Wijojt,n−1+Wrforft−1,n
o i t , n = { u i t , n , n ∈ l f c f ( u i t , n ) , o t h e r w i s e \begin{align} o^{t,n}_{i} = \begin{cases} u^{t,n}_{i}, &\qquad n\in l_{fc} \\ f (u^{t,n}_{i} ), &\qquad otherwise \end{cases} \end{align} oit,n={uit,n,f(uit,n),n∈lfcotherwise
- W r f o r f t − 1 , n W_{rf}o^{t-1,n}_{rf} Wrforft−1,n:目标神经元与其周围神经元之间的横向相互作用
- l f c ( n − 1 ) l_{fc}(n-1) lfc(n−1):在全连接层(n-1)中连接到目标神经元i的一组神经元
- W r f W_{rf} Wrf:横向相互作用可学习权重的矩阵,其大小定义了感受野的宽度。
通过集成横向交互机制,网络的鲁棒性将得到改善,因为当考虑更大区域的神经元交互时,噪声效应消失,特别是对于遭受更大噪声干扰的神经形态数据集。
Moderate Dropout
使用dropout技术虽然可以减少网络过拟合,提高泛化性能,但是dropout技术会随机生成高度不稳定的子模型,这种随机性也会导致不同的子模型表现出较大的差异,集成这些子模型可能会使整个模型的性能下降。Moderate Dropout可以最小化不同子模型输出概率分布之间的不一致性。
Kullback-Leibler(KL)散度得分,也称为相对熵,是衡量两个概率分布相互之间差异程度的一种方法。给定两个概率分布P和Q,KL散度得分衡量在用Q来近似P时失去的信息量。它的定义如下:
D
K
L
(
P
∣
∣
Q
)
=
∑
i
P
(
i
)
log
(
P
(
i
)
Q
(
i
)
)
\begin{align} D_{KL}(P || Q)= \sum_i P(i)\log(\frac{P(i)}{Q(i)} ) \end{align}
DKL(P∣∣Q)=i∑P(i)log(Q(i)P(i))
本文通过比较模型在不同的dropout率下的输出分布,把模型输出分布的差异性(即KL散度)加入到模型的总损失函数中,从而最小化模型输出分布之间的不一致性。因此,总损失函数由两部分组成:
- 实际输出分布与目标标签的损失。
- 同一模型在中等dropout率下输出的不同分布之间的KL散度损失。
由于
K
L
KL
KL散度具有不对称性质,即当计算
D
K
L
(
P
∣
∣
Q
)
D_{KL}(P||Q)
DKL(P∣∣Q) 和
D
K
L
(
Q
∣
∣
P
)
D_{KL}(Q||P)
DKL(Q∣∣P) 时,两者的值一般是不相等的,因此,
K
L
KL
KL散度是一个度量模型和真实分布之间差异的非对称性指标。因此在计算网络损失时,同时引入这两种散度,并使用一个额外的参数γ(中度Dropout影响因子)来控制总体损失函数中中度损失的影响:
L
o
v
e
r
a
l
l
=
1
2
(
L
P
+
L
Q
)
+
γ
D
K
L
(
P
∥
Q
)
+
D
K
L
(
Q
∥
P
)
\begin{align} L_{overall} = \frac{1}{2}(L_P + L_Q) + \gamma D_{KL}(P \parallel Q) + D_{KL}(Q \parallel P) \end{align}
Loverall=21(LP+LQ)+γDKL(P∥Q)+DKL(Q∥P)
- P和Q是两个概率分布,分别是在整个模拟周期T上的两个平均子模型输出分布。
- DKL(P ∥ Q)表示P相对于Q的KL散度,DKL(Q ∥ P )表示Q相对于P的KL散度。
dropout技术在训练时通过随机舍弃一部分神经元来避免过拟合,即将一些神经元的输出置为0。在该句话中,p代表了从全连接层中舍弃神经元的概率,其值在训练前已经被指定且在训练过程中不会发生改变。但是,这种方法并没有考虑神经元的膜电位(即神经元的输出值)在决定舍弃时的影响,可能会导致某些具有重要作用的神经元暂时被从网络中舍弃掉。
考虑到神经元膜电位值,神经元的下降概率应具有一定的灵活性。使用中度dropout技术,可以处理较大膜电位值的神经元可以具有较小的下降概率
如果一个全连接层中的某个神经元
i
i
i的膜电位值(
u
i
n
u^n_i
uin)落在一个分布中,该分布的范围是(
u
m
i
n
n
,
u
m
a
x
n
u^n_{min},u^n_{max}
uminn,umaxn),其中
u
m
i
n
n
u^n_{min}
uminn 和
u
m
a
x
n
u^n_{max}
umaxn 分别对应该层神经元的最小和最大电位值。作者提出了一个公式,可以将膜电位值
u
i
n
u^n_i
uin进行转换和缩放,用来计算相应的舍弃概率
p
i
n
p^n_i
pin。这个公式的目的是确保膜电位值较高的神经元不会被过早地舍弃。
p
i
n
=
p
drop
⋅
u
max
n
−
u
i
n
u
max
n
−
u
mean
n
\begin{align} p^n_i = p_{\text{drop}} \cdot \frac{u^n_{\text{max}} - u^n_i}{u^n_{\text{max}} - u^n_{\text{mean}}} \end{align}
pin=pdrop⋅umaxn−umeannumaxn−uin
以此来确保神经元的转换后的Dropout概率与其膜电位成反比,并且同一层中所有神经元的平均下降概率等于下降率
p
d
r
o
p
p_{drop}
pdrop,因此,神经元Dropout的概率可以在整个训练阶段改变,较大的电位表示较小的概率,而不是常规的在训练之前预先设定
根据公式(12),将子模型运行的不同输出分布之间的KL差异被纳入损失函数中,总体目标是最小化损失,从而增加网络不同运行之间的一致性。
Experiments
LTMD方法在MNIST、N-MNIST、CIFAR10和DVS-CIFAR10数据集上的结果为:
Model | Time steps | Best | Mean | Std |
---|---|---|---|---|
MNIST | 4 | 99.60% | 99.584% | 0.012% |
CIFAR10 | 4 | 94.19% | 94.154% | 0.0403% |
N-MNIST | 15 | 99.65% | 99.614% | 0.0206% |
DVS-CIFAR10 | 7 | 73.30% | 72.92% | 0.319% |
本文进行的消融研究,评估提出的方法的效果。
Model | Time steps | LIF (plain) | LT (Learnable thresholding) | LTMD (Learnable threshodling&Moderate dropout) |
---|---|---|---|---|
MNIST | 4 | 99.53% | 99.57% | 99.60% |
CIFAR10 | 2 | 92.88% | 93.51% | 93.75% |
N-MNIST | 15 | 99.55% | 99.58% | 99.65% |
DVS-CIFAR10 | 7 | 71.30% | 72.30% | 73.30% |
将LTMD方法使用在ResNet和VGG网络结构后的效果:
SNN architecture | LIF | LT | LTMD |
---|---|---|---|
ResNet19 | 91.97% | 93.59% | 93.78% |
VGG16 | 91.68% | 92.10% | 92.35% |
SNN的计算负荷和可学习参数。基于静态阈值化的增加百分比显示在括号中:
Computational load | Static threshold | LT | LTMD | ANN |
---|---|---|---|---|
Training time | 5762.92min | 5955.76min (+3.35%) | 6086.49min (+5.61%) | |
Learnable parameters | 6.82M | 6.82M (+0.0015%) | 6.82M (+0.0015%) | |
#Additions | 196.83M | 214.81M (+9.14%) | 212.55M (+7.99%) | 648.46M |
#Multiplications | 28.85M | 28.85M (0%) | 28.86M (+0.035%) | 648.46M |
不同噪声等级下SNN的性能:
Model | Noise=0 | Noise=0.1 | Noise=0.2 | Noise=0.3 | Noise=0.4 | Noise=0.5 |
---|---|---|---|---|---|---|
SNN | 99.53% | 90.60% | 82.33% | 75.76% | 54.16% | 31.56% |
SNN&LI | 99.60% | 96.54% | 92.10% | 83.61% | 69.05% | 35.79% |