Supervised Learning Based on Temporal Coding in Spiking Neural Networks
ABSTRACT
梯度下降在训练ANN时已经很成功,但是SNN的非线性和离散性,不容易进行移植。
该论文证明证明了,在该论文前馈尖峰网络中使用的时间编码方案下,网络输入-输出关系几乎在任何地方都是可微的。
该论文的提出了一种控制峰值网络行为的新方法,展现了使用这些网络处理具有复杂时间信息的峰值模式的潜力。
关键词:反向传播,脉冲网络,监督学习
1.INTRODUCTION
在该论文中,开发了一种直接训练方法,不试图将spike网络减少到传统的ann。相反,将所有峰值的时间与所有对其产生影响的峰值的时间联系起来。然后,就可以在网络的峰值时间上施加任何可微的代价函数,并直接通过梯度下降来最小化这个代价函数。
与基于比率的脉冲网络不同,所提出的网络可以直接使用梯度下降方法进行训练,因为时间是主要的编码维度,而不是离散的脉冲计数。
与之前的时间学习方法不同,该方法自然地扩展到多层网络,并依赖于确定性神经和突触动力学来优化峰值时间,而不是网络中的显式延迟元素。
2.NETWORK MODEL
采用IF模型
其中
V
m
e
m
j
V^j_{mem}
Vmemj是第j个神经元的膜电位,
w
j
i
w_{ji}
wji是i->j的连接权重,
κ
\kappa
κ是突触电流核即单位冲激输入对膜电位的影响
假设一个神经元在
t
=
{
t
1
,
t
2
,
.
.
,
t
N
}
t=\{t_1,t_2,..,t_N\}
t={t1,t2,..,tN}收到N个权重为
w
i
=
{
w
1
,
w
2
,
.
.
.
,
w
N
}
w_i=\{w_1,w_2,...,w_N\}
wi={w1,w2,...,wN}的脉冲,由公式(1)(2),当
t
<
t
o
u
t
t<t_{out}
t<tout时可以得到:
我们假设激发脉冲阈值电位为
V
t
h
=
1
V_{th}=1
Vth=1,记
C
=
{
i
:
t
i
<
t
o
u
t
}
C=\{i:t_i<t_{out}\}
C={i:ti<tout},当
t
=
t
o
u
t
t=t_{out}
t=tout时有
V
m
e
m
=
V
t
h
V_{mem}=V_{th}
Vmem=Vth于是有:
移项得:
我们记
z
x
z_x
zx为
e
x
p
(
t
x
)
exp(t_x)
exp(tx),将其从时间域转换到z域,有:
因为
z
o
u
t
z_{out}
zout始终是正数值,我们必须保证
∑
i
∈
C
w
i
>
1
\sum_{i\in C}w_i>1
∑i∈Cwi>1
且对于任意
i
∈
C
i\in C
i∈C有
t
o
u
t
>
t
i
t_{out}>t_i
tout>ti,因为输出必须在所有集合里的输入完成之后产生,否则若有
t
o
u
t
<
t
i
t_{out}<t_i
tout<ti则C中不应该包含
i
i
i
同理对于第Q个脉冲有:
在这篇文章的后文中,我们仅仅考虑第一次 产生脉冲的时间,即我们允许每个神经元在每个输入表示中最多出现一次尖峰,以使尖峰活动稀疏,并迫使训练算法对每个尖峰进行最佳利用。
在训练过程中,我们使用权重成本项,以确保神经元接收到足够的输入以达到下一节所描述的峰值。
如图1描述了膜电位和突出电流随与时间相关的输入脉冲的变化,电压不断累积直到达到阈值,而后减少到0保持不变,即只产生一次脉冲。
从公式(6)可以看出,
z
p
z_p
zp产生的有效权重为
w
p
∑
i
∈
C
w
i
−
1
\frac{w_p}{\sum_{i\in C}w_i-1}
∑i∈Cwi−1wp,有效权重还动态地决定于已经输入脉冲的集合C,该集合会随着时间的变化而变化。
假设当前脉冲时间为
z
o
u
t
z_{out}
zout,接下来证明这种神经元产生脉冲时间相对于输入在大部分情况下都是连续的:
1)若在
z
o
u
t
z_{out}
zout之前的输入脉冲
z
x
z_x
zx产生了一个小的扰动,这样的扰动不会改变集合C,所以式子(6)的分母保持不变,分子同
z
x
z_x
zx产生一个小小的扰动,不会影响连续性。
2)若在
z
o
u
t
z_{out}
zout之后的输入脉冲
z
x
z_x
zx产生了一个小的扰动,若这样的扰动并没有使得
z
x
z_x
zx提前到
z
o
u
t
z_{out}
zout之前则不会改变
z
o
u
t
z_{out}
zout的值
3)若在
z
o
u
t
z_{out}
zout之后的输入脉冲
z
x
z_x
zx产生了一个小的扰动,若这样的扰动使得
z
x
z_x
zx提前到了
z
o
u
t
z_{out}
zout之前,变为
z
x
=
z
o
u
t
−
ε
z_x=z_{out}-\varepsilon
zx=zout−ε,此时
z
o
u
t
p
e
r
t
u
r
b
=
∑
i
∈
C
w
i
z
i
+
w
x
z
x
∑
i
∈
C
w
i
+
w
x
−
1
z_{out}^{perturb}=\frac{\sum_{i\in C}w_iz_i+w_xz_x}{\sum_{i\in C}w_i+w_x-1}
zoutperturb=∑i∈Cwi+wx−1∑i∈Cwizi+wxzx,
z
o
u
t
p
e
r
t
u
r
b
−
z
o
u
t
=
−
ε
w
x
∑
i
∈
C
w
i
+
w
x
−
1
z_{out}^{perturb}-z_{out}=\frac{-\varepsilon w_x}{\sum_{i\in C}w_i+w_x-1}
zoutperturb−zout=∑i∈Cwi+wx−1−εwx,当
∑
i
∈
C
w
i
+
w
x
>
1
\sum_{i\in C}w_i+w_x>1
∑i∈Cwi+wx>1的时候变不会有较大影响,否则若
w
x
w_x
wx是一个负权值使其不成立,会使脉冲消失,产生较大影响。
总而言之,除了会影响到神经元是否有脉冲输出的时候,其余输入到输出的转换都是连续的。
3.TRAINING
我们视一个神经元的输出为第一次产生输出的时间。一旦一个神经元产生了脉冲,它就不会继续产生脉冲,除非将这个网络重置并提供新的输入。
首先我们通过已有权值计算每个神经元脉冲时间,算法如下:
如图算法1 为前向网络计算
z
r
[
i
]
\bm z^r[i]
zr[i](即第r层第i个神经元的脉冲时间)的过程
对于每个神经元,我们首先通过算法2得到有效的脉冲的集合C,通过集合C带入公式(6)得到新的
z
r
[
i
]
\bm z^r[i]
zr[i]
如图算法2 为计算有效脉冲的集合C的过程。首先将每个脉冲按照时间排序,不断实验前i个脉冲叠加作用是否符合条件(分母大于0,且能在下一个输入脉冲到来前激发该神经元的脉冲)
接着,我们分析输出关于权值和输入脉冲的导数,
y
该一阶导数并不连续,不过并不会影响应用于训练的效率。
除了以上算法,为了支持神经网络的训练,我们还需要以下两个技术:
a)Constrains on synaptic weights
为了防止神经元不产生脉冲,对于
∑
w
i
<
1
\sum w_i<1
∑wi<1的项我们要添加一个惩罚项:
K是一个超参数,一般被选则大于1的数加大约束力
b) Gradient normalization:
在训练的过程中梯度会变得非常大,这是由于公式(6)(8)(9),如果分母接近0,梯度就变得非常大,这样会影响学习的效率。所以,我们对其进行梯度归一化:如果权重矩阵的梯度的F范数高于阈值,我们就缩放梯度矩阵,使其F范数等于阈值,然后再进行梯度下降步骤。为了减少这种梯度归一化方案对权重矩阵大小的依赖,我们用源神经元的数量来归一化权重梯度矩阵的F范数。
4.RESULTS
我们训练网络来解决两个分类任务:XOR task(为了证明可以解决非线性问题)和 permutation invariant MNIST task(为了检查网络的泛化能力)
我们假设其输出为向量
z
\bm z
z,目标为类别为序号g,定义损失函数为:
A.XOR Task
如图2.a是网络结构以及四种不同的输入方式。
该论文的作者进行了1000次的实验,每次都随机初始化一个权重矩阵进行训练。在1000次实验中,最大需要迭代61次,平均需要迭代3.48次得到结果。
如图2.b显示了神经网络对于四种输入的工作过程。底部箭头表示该层的输入峰值,顶部箭头表示该层的输出峰值。
B.MNIST Classification Task
灰度图转换为输入的方法:比如高强度的点就在0时刻发出脉冲,而低强度的点则在时刻ln(6)发出脉冲,对应z=6
如图3显示了两种神经网络的
(a)和(b)为隐藏层中峰值时间的直方图。
这两个网络首先使用噪声输入进行训练。
对于784-800-10拓扑结构,仅在3.0%的隐藏神经元出现峰值后,输出神经元就会出现峰值即选中了一个类,而对于784-400-400-10拓扑结构,这个数字是9.4%。
因此,该网络能够在刺激开始后大约1-3个突触时间常数后,仅基于隐藏神经元的一小部分的峰值,非常快速地做出决定。
(c )为768-400-400-10网络第二隐层中十个神经元的膜电位响应的图像的演化。
(d)是采用与(c)中相同的输入,同一网络中的最后一层十个输出神经元的膜电位的演化。
图(c)的这十个神经元不会对最终结果造成影响,因为他们比图(d)中最早出现的脉冲来的晚
该论文对每种网络都进行了两次训练,分别使用无噪声输入和有噪声输入,噪音只在训练的时候使用,结果准确率如表1
图4显示了在784-800-10网络中随机选择的30个隐藏层神经元的调谐(tuning)特性。
如果一个隐藏神经元在某个类的输出层峰值之前出现峰值,则其视为被调优到该特定的输入类,即它有助于分类这个类
如图4所示,神经元通常是广泛调谐(tune)的,并有助于许多类的分类。
5.DISCUSSION
该论文提出了一种可以使用梯度下降技术有效训练的尖峰神经网络形式。
其采用使用时间尖峰编码的方案,对时间变量进行变换后,网络的输入输出关系分段线性化。
据我们所知,这是脉冲神经网络第一次被证明可以有效地实现从输入到输出脉冲时间的分段线性转换。
该论文提出的网络能够非常快速地对输入模式进行分类。如图3所示,网络在大多数隐层神经元发出脉冲峰值之前选择了一个类。这是我们预期的,因为网络可以实现非线性转换(在z域)的唯一方法是通过改变每个神经元的输入峰值的因果集,即在其输入神经元的子集发出新的脉冲之前,使该神经元发出脉冲。这种独特的非线性形式不仅导致了快速处理,而且它能够在神经形态硬件上有效地实现这些网络,因为一旦产生输出峰值,处理就会停止。