前言
事不宜迟,看完的文献总是浅尝辄止,没有总结吸收,还不是自己的东西。积土成山,风雨兴焉!
脉冲
神经元之间通过神经冲动传递信号,脉冲是神经冲动的数学模型。在时域上一连串脉冲组成的冲激函数串称为脉冲序列 或者脉冲串spike train [1 ]。
脉冲序列
通常以冲激函数串表示脉冲序列,则在不同时间处的脉冲组成的脉冲串记为A = ∑ i = 0 ∞ δ ( t − t i ) A=\sum\limits_{i=0}^{\infty}\delta(t-t_i) A = i = 0 ∑ ∞ δ ( t − t i ) 。
脉冲序列的描述
表征脉冲序列的物理量是活动频率firing rate ,缩写为FR,其原始定义为单位时间内的脉冲数目,即:
F R ( t ) = lim Δ t → 0 N ( t , t + Δ t ) Δ t \mathrm{FR}(t)=\lim\limits_{\Delta t\rightarrow 0}\frac{N(t,t+\Delta t)}{\Delta t}
FR ( t ) = Δ t → 0 lim Δ t N ( t , t + Δ t )
这一定义式仅具有理论意义,不具有工程实践的价值,因此常用单位时间内的脉冲频率表示FR,在大量样本数据情况下,脉冲频率近似等于脉冲概率,即:
F R ( t ) = lim Δ t → 0 P { s p i k e = 1 ∣ t ≤ t ˜ ≤ t + Δ t } Δ t \mathrm{FR}(t)=\lim\limits_{\Delta t\rightarrow 0}\frac{P\{\mathrm{spike}=1|t\le \~t\le t+\Delta t\}}{\Delta t}
FR ( t ) = Δ t → 0 lim Δ t P { spike = 1∣ t ≤ t ˜ ≤ t + Δ t }
可见FR是关于脉冲频率的单点随机过程,改写为以下形式:
F R ( t ) = { 1 if spike 0 if not spike \mathrm{FR}(t)=\begin{cases}
1 & \text{if spike} \\
0 & \text{if not spike}
\end{cases}
FR ( t ) = { 1 0 if spike if not spike
FR测度
FR算是分析整个脉冲神经元的核心问题,因此处理好它是SNN的基础。为了比较不同脉冲序列之间的相似性,引入了脉冲序列的距离 定义,主要有两种定义方式:
内嵌形定义
脉冲序列不是欧氏空间向量,采用脉冲映射和向量范数,可以得到一种脉冲序列之间的距离定义方式,即:
d i s t ( A , B ) = ∣ ∣ f ( A ) − f ( B ) ∣ ∣ \mathrm{dist}(A,B)=||f(A)-f(B)||
dist ( A , B ) = ∣∣ f ( A ) − f ( B ) ∣∣
式中的A , B A,B A , B 表示两个脉冲序列,f ( ∙ ) f(\bullet) f ( ∙ ) 表示脉冲映射,∣ ∣ ∙ ∣ ∣ ||\bullet|| ∣∣ ∙ ∣∣ 表示向量范数,常用二范数即欧氏距离度量。关于脉冲映射,主要使用核函数卷积法:
f ( A ; t ) = ∫ − ∞ + ∞ K ( t − τ ) ∑ i = 0 ∞ δ ( τ − t i ) d τ f(A;t)=\int\limits_{-\infty}^{+\infty}K(t-\tau)\sum\limits_{i=0}^{\infty}\delta(\tau-t_i)\mathrm{d}\tau
f ( A ; t ) = − ∞ ∫ + ∞ K ( t − τ ) i = 0 ∑ ∞ δ ( τ − t i ) d τ
式中,K ( ∙ ) K(\bullet) K ( ∙ ) 表示核函数,常用高斯核函数。卷积结果为一个L 2 L^2 L 2 空间的向量(即一个函数),使用L 2 L^2 L 2 空间的二范数即可得到距离。以上是单个脉冲神经元,如果有n n n 个神经元,则将每一个神经元打上标签labeled ,即将脉冲序列向神经元的标签向量上投影,即:
f ( A ; t , i ) = ∑ i = 1 n ∫ − ∞ + ∞ K ( t − τ ) ∑ j = 0 ∞ v ⃗ i j δ ( τ − t j ) d τ f(A;t,i)=\sum\limits_{i=1}^n\int\limits_{-\infty}^{+\infty}K(t-\tau)\sum\limits_{j=0}^{\infty}\vec{v}_{ij}\delta(\tau-t_j)\mathrm{d}\tau
f ( A ; t , i ) = i = 1 ∑ n − ∞ ∫ + ∞ K ( t − τ ) j = 0 ∑ ∞ v ij δ ( τ − t j ) d τ
式中,v ⃗ j \vec{v}_j v j 表示第i i i 个神经元在时刻j j j 的标签值,v ⃗ \vec{v} v 也是一个向量(即实数空间的一个函数)。
欧氏空间定义范数的另一个好处是,相似性除了可以使用距离表征以外,还可以使用夹角,该形式类似于余弦相似度,即:
cos ( A , B ) = < f ( A ) , f ( B ) > ∣ ∣ f ( A ) ∣ ∣ ⋅ ∣ ∣ f ( B ) ∣ ∣ \cos(A,B)=\frac{<f(A), f(B)>}{||f(A)||\cdot||f(B)||}
cos ( A , B ) = ∣∣ f ( A ) ∣∣ ⋅ ∣∣ f ( B ) ∣∣ < f ( A ) , f ( B ) >
代价形定义
另一种定义手段直接量化了相似 这一概念,即A A A 与B B B 的距离定义为将脉冲序列A A A 通过增减脉冲、平移脉冲得到变成与B B B 完全一样的操作代价。即:
d i s t ( A , B ) = inf c , K ∑ i = 0 K c ( X k , X k + 1 ) \mathrm{dist}(A,B)=\inf\limits_{c,K}\sum\limits_{i=0}^{K}c(X_k,X_{k+1})
dist ( A , B ) = c , K inf i = 0 ∑ K c ( X k , X k + 1 )
式中,X 0 = A , X K = B X_0=A,X_K=B X 0 = A , X K = B ,X 1 , X 2 , ⋯ , X K − 1 X_1,X_2,\cdots,X_{K-1} X 1 , X 2 , ⋯ , X K − 1 是对A A A 操作的中间结果,为保证结果存在,使用下确界而不是最小值;函数c ( ∙ , ∙ ) c(\bullet,\bullet) c ( ∙ , ∙ ) 是变换操作代价函数,对于以上三种操作,共有以下三种代价:
c ( X k , X k + 1 ) = { 1 if X k 增加一个脉冲得到 X k + 1 1 if X k 减少一个脉冲得到 X k + 1 q ∣ Δ t ∣ if X k 平移一个脉冲得到 X k + 1 c(X_k,X_{k+1})=\begin{cases}
1 & \text{if }X_k\text{增加一个脉冲得到}X_{k+1}\\
1 & \text{if }X_k\text{减少一个脉冲得到}X_{k+1}\\
q|\Delta t| & \text{if }X_k\text{平移一个脉冲得到}X_{k+1}
\end{cases}
c ( X k , X k + 1 ) = ⎩ ⎨ ⎧ 1 1 q ∣Δ t ∣ if X k 增加一个脉冲得到 X k + 1 if X k 减少一个脉冲得到 X k + 1 if X k 平移一个脉冲得到 X k + 1
式中,q q q 是平移脉冲的代价系数,Δ t \Delta t Δ t 是平移的时间差,q q q 值的大小代表了对脉冲时间差异的关心程度,q q q 值越小则脉冲序列的时间差越不重要,特别地,当q = 0 q=0 q = 0 时,脉冲序列的距离是时不变的,即仅与脉冲的数量有关(又称为脉冲计数距离 )。
说明
以上两种脉冲序列距离定义方式,都具有较高的时间复杂度o ( N 6 ) o(N^6) o ( N 6 ) ,这也是SNN在GPU等常规串行(多核串行,本质上与CPU无异)计算设备上难以实现的原因之一。
自适应性
脉冲序列是脉冲神经元在时域上的性质体现,而频域上,脉冲神经元最主要的特性体现为脉冲频率适应性spike-frequency adaptation 。
左图是某个恒定激励作用(左图绿实线)下的神经元响应函数,右图是f-I图,即频率-电流图,反应了神经元在频率响应上的特性,脚标∞ \infty ∞ 表示经过足够长时间。则可知经过足够长的适应时间后,神经元输出结果与输入电流具有线性关系,这与模拟神经网络的线性加权 是一致的。
适应性来自于神经元细胞膜上的钾离子电流,直观上认为释放的钾离子高于抽运的钾离子导致浓度减少,因此电流下降,直到两个过程相平衡。这一过程的数学模型为:
τ a ( V ) d a d t = − a + a ∞ ( V ) \tau_a(V)\frac{\mathrm{d}a}{\mathrm{d}t}=-a+a_\infty(V)
τ a ( V ) d t d a = − a + a ∞ ( V )
式中,a a a 代表钾离子通道电流的阈值,( V ) (V) ( V ) 表示对应的物理量是膜电位的函数,经验上可认为a ∞ ( V ) a_\infty(V) a ∞ ( V ) 是S形函数。
从直观上来看,自适应电流模型的引入,相当于神经元的传递函数增加了一个高通滤波器,如下图:
图中红线是稳态情况,绿线是初始值,蓝线对应高通滤波器,其决定了输入值的直流量不影响输出结果。
自适应机理会导致脉冲神经网络的自振荡现象 。
LF模型
LF模型(Leaky Integrating and Firing )是基于导体的自适应神经元模型,其在自适应公式的基础上增加了对输出神经冲动的建模。最简单的LF模型是简单LF,即:
τ d A d t = − A + Δ A ∑ i = − ∞ + ∞ δ ( t − t i ) \tau\frac{\mathrm{d}A}{\mathrm{d}t}=-A+\Delta A\sum\limits_{i=-\infty}^{+\infty}\delta(t-t_i)
τ d t d A = − A + Δ A i = − ∞ ∑ + ∞ δ ( t − t i )
式中,A A A 代表自适应电流,与上式的a a a 仅差一个比例系数,无限和式是输入脉冲序列,每一个输入(兴奋型)脉冲将膜电位提高Δ A \Delta A Δ A 。
FR模型
FR模型(Firing Rate )使用基尔霍夫定理,神经元膜上电流之和为0,得到:
f = f 0 ( I − A ) τ a d A d t = − A + A ∞ ( f ) \begin{aligned}
f&=f_0(I-A)\\
\tau_a\frac{\mathrm{d}A}{\mathrm{d}t}&=-A+A_\infty(f)
\end{aligned}
f τ a d t d A = f 0 ( I − A ) = − A + A ∞ ( f )
式中,f 0 f_0 f 0 代表初值,I I I 表示输入电流,A ∞ ( f ) A_\infty(f) A ∞ ( f ) 代表稳态自适应电流,作者认为,稳态时自适应电流与频率呈正比,这与模拟神经网络权重反映连接强度的关系相符合。
STDP及其模型
狭义上讲,STDP是随固定时长的前后突触动作电位所引发的突触长度变化。
STDP模型
根据STDP的现象成因,主要分为三类,分别是三元组模型、拓展三元组模型和生物STDP模型,主要介绍第一类。
三元组模型
三元组模型是最基本的STDP模型,输出LTP与权重的变化量成正比,前突触信号与前后两步后突触信号共同乘积得到LTP。
图中的E E E 表示资格迹 ,实际上在文中使用的是脉冲序列的映射函数f ( ∙ ) f(\bullet) f ( ∙ ) ,选核函数为指数衰减函数e − t / τ ( t ≥ 0 ) e^{-t/\tau}(t\ge 0) e − t / τ ( t ≥ 0 ) ,在这里具有以下形式:
E X ( t ) = ∫ − ∞ t X ( t ˜ ) e − t − t ˜ τ d t ˜ E_X(t)=\int\limits_{-\infty}^tX(\~t)e^{-\frac{t-\~t}{\tau}}\mathrm{d}\~t
E X ( t ) = − ∞ ∫ t X ( t ˜ ) e − τ t − t ˜ d t ˜
式中X X X 表示输入信号,可以是脉冲序列也可以是连续值,τ \tau τ 是当前过程的时间常数,因此本式相当于对输入信号进行一次LF计算 。
拓展三元组模型
拓展三元组将LTP计算修改为以后突触电压时程 即Postsynaptic Voltage Time Course 和前突触信号的乘积。
基于梯度的STDP学习准则
神经元释放神经冲动的频数是膜电位的增函数,而膜电位由上一层神经元所传脉冲所引起的动作电位经加权求和所得。整个学习过程的目标是在脉冲序列空间距离的意义下逼近脉冲逃逸率Escape Rate ,这里使用FR量ρ ( t ) \rho(t) ρ ( t ) 来代表。
监督学习
监督学习的目标是最大化重现 脉冲序列簇 的对数似然函数,根据上图 ,本例中权重的改变量可以写作:
w ˙ ( t ) = η ρ ′ ρ [ S p o s t c l ( t ) − ρ ( u ( t ) ) ] E p r e ( t ) \dot{w}(t)=\eta\frac{\rho'}{\rho}[S^\mathrm{cl}_\mathrm{post}(t)-\rho(u(t))]E_\mathrm{pre}(t)
w ˙ ( t ) = η ρ ρ ′ [ S post cl ( t ) − ρ ( u ( t ))] E pre ( t )
式中,η \eta η 是学习率,S p o s t c l ( t ) S^\mathrm{cl}_\mathrm{post}(t) S post cl ( t ) 是预期的后突触脉冲序列,ρ ( u ( t ) ) \rho(u(t)) ρ ( u ( t )) 是当前神经元的FR,E p r e ( t ) E_\mathrm{pre}(t) E pre ( t ) 是前突触脉冲序列的资格迹。对上式解释:神经元体电位信号 相当于教师信号,突触电位 相当于学生信号,在对应电压情况下,二者的差就是监督学习的误差。体电位信号可由反向传播 的后突触脉冲序列采样得到。
无监督学习
这部分没有看太明白,就先不写了。
强化学习
奖励函数选为取值为0或1的函数,将其依概率在时间轴上拓展得到随机奖励过程R ( t ) R(t) R ( t ) ,将其作为整个强化学习训练过程中的奖励手段。
上图是三种不同的神经元奖励手段,仅对第二种作推导,后面几种是相似的,即:
E p o s t ( t ) = ∫ − ∞ t ρ ′ ρ [ S p o s t ( t ˜ ) − ρ ( u ( t ˜ ) ) ] E p r e ( t ˜ ) e − t − t ˜ τ R d t ˜ Δ w ( t ) = η R ( t ) E p o s t ( t ) \begin{aligned}
E_\mathrm{post}(t)&=\int\limits_{-\infty}^t\frac{\rho'}{\rho}[S_\mathrm{post}(\~t)-\rho(u(\~t))]E_\mathrm{pre}(\~t)e^{-\frac{t-\~t}{\tau_R}}\mathrm{d}\~t\\
\Delta w(t)&=\eta R(t)E_\mathrm{post}(t)
\end{aligned}
E post ( t ) Δ w ( t ) = − ∞ ∫ t ρ ρ ′ [ S post ( t ˜ ) − ρ ( u ( t ˜ ))] E pre ( t ˜ ) e − τ R t − t ˜ d t ˜ = η R ( t ) E post ( t )
SNN简介
SNN神经元简介
SNN神经元输出和输入都是脉冲信号,其接受来自上一层脉冲信号簇并在膜 电位 上实现积累与衰减,当电位差达到某个阈值后,在考虑不应期等生理建模现象后,神经元完成一次信号输出并将电位复位至指定值。这里,积累 、衰减 和复位 都有着一定数量的论文方案设计。
IF介绍
以最基本的模型介绍,IF 是Integrate-and-Fire 的缩写,中文翻译为积分放电模型,是最基本的SNN神经元模型,其数学表达式为:
τ d v d t = − ( v − V r e s t ) + R I e x t ( t ) \tau\frac{dv}{dt}=-(v-V_{\mathrm{rest}})+RI_{\mathrm{ext}}(t)
τ d t d v = − ( v − V rest ) + R I ext ( t )
式中,τ \tau τ 表示神经元膜上电位对脉冲积分的时间常数,相当于电容器的时间常数,v v v 代表膜电位,V r e s t V_\mathrm{rest} V rest 代表该神经元静息电位 或者复位电位,R R R 代表神经元膜电位电阻,I e x t ( t ) I_\mathrm{ext}(t) I ext ( t ) 表示受激电流,即向下一个神经元发出的神经冲动。理论上,这一神经冲动是一个尖峰型 的信号。
LIF介绍
STDP原理
一句话原理
STDP全称是spike-timing dependence plasticity,中文翻译为脉冲时相关可塑性,非常抽象。其意义是,某神经元从接受脉冲到发出脉冲的时间差,是训练神经元的重要参数。
该原理出自神经生物学,参见文献:Spike Timing-Dependent Review Plasticity of Neural Circuits。该文献从钙镁离子通道和NMDAR受体的角度分析了STDP的由来:对离子通道的开启与关闭。
详细原理
参见文献STDP enables spiking neurons to detect hidden causes of their inputs
如下图:
单层脉冲神经网络接受上一层或者外界的脉冲输入{ y i } ⊂ { 0 , 1 } \{y_i\}\subset\{0,1\} { y i } ⊂ { 0 , 1 } ,单层各个神经元的权重记为w k i w_{ki} w ki ,与常规神经网络相似,这里的权重仍然是一个矩阵,神经元的输出使用z k ∈ { 0 , 1 } z_k\in\{0,1\} z k ∈ { 0 , 1 } 表示,类似于常规神经网络,可以简单地记为:Z K × 1 ≜ W K × N Y N × 1 Z_{K\times 1}\triangleq W_{K\times N}Y_{N\times 1} Z K × 1 ≜ W K × N Y N × 1 ,这里神经元输出直接就是分类结果,不需要全连接层,即:∑ k = 1 K z k = 1 \sum\limits_{k=1}^Kz_k=1 k = 1 ∑ K z k = 1 。以分类任务作为当前神经元训练的目标,则目标函数为最小化标准条件熵(即交叉熵最小):
max W H ( L ∣ Z ) H ( L , Z ) \displaystyle
\max_{W}\frac{H(L|Z)}{H(L,Z)}
W max H ( L , Z ) H ( L ∣ Z )
式中H ( ∙ ) H(\bullet) H ( ∙ ) 是条件熵。
本文作者认为,优化该目标函数的过程相当于一个EM 算法的收敛过程。
输出层
输出层神经元的概率仍然使用softmax函数表示,即:
p ( z k = 1 ∣ y , W ) = e u k ∑ l = 1 K e u l p(z_k=1|y,W)=\frac{e^{u_k}}{\sum\limits_{l=1}^Ke^{u_l}}
p ( z k = 1∣ y , W ) = l = 1 ∑ K e u l e u k
其中:u k = ∑ i = 1 n w k i y i + w k 0 u_k=\sum\limits_{i=1}^nw_{ki}y_i+w_{k0} u k = i = 1 ∑ n w ki y i + w k 0 。
学习过程
与EM过程相同,本文作者使用了两个步骤,分别是E步骤和M步骤。
E步骤
求解模型输出结果的均值,这里使用对数均值,不影响均值的最大值点,因此有:
max W E p ∗ [ log p ( y ∣ W ) ] \max_W E_{p^*}[\log p(y|W)]
W max E p ∗ [ log p ( y ∣ W )]
本文使用了Heibbian学习准则,该准则对于神经元的权重更新公式为:
Δ w k i { η ( e − w k i − 1 ) if y i = 1 and z k = 1 − η if y i = 0 and z k = 1 0 if z k = 0 \Delta w_{ki}\begin{cases}
\eta(e^{-w_{ki}}-1) & \text{if }y_i=1 \text{and } z_k=1\\
-\eta & \text{if }y_i=0
\text{and } z_k=1\\
0 & \text{if }z_k=0
\end{cases}
Δ w ki ⎩ ⎨ ⎧ η ( e − w ki − 1 ) − η 0 if y i = 1 and z k = 1 if y i = 0 and z k = 1 if z k = 0
第一层权重的修改方法为:
Δ w k 0 = { η ( e − w k 0 − 1 ) if z k = 1 − η if z k = 0 \Delta w_{k0}=\begin{cases}
\eta(e^{-w_{k0}}-1) & \text{if }z_k=1\\
-\eta & \text{if }z_k=0
\end{cases}
Δ w k 0 = { η ( e − w k 0 − 1 ) − η if z k = 1 if z k = 0
使用加性STDP和乘性STDP的SNN训练算法
本文作者介绍了两类常见的STDP方法,即加性和乘性方法,是在原始EM算法STDP基础上的发展。
原文名 Learning with filopodia and spines
filopodia 简介
filopodia是一类原始的神经细胞(简称为FP),其经过分化可形成脊髓等神经组织细胞,spine是脊髓(简称为SP),是一类特化的神经组织,其再学习的能力不如前者。本文在这一条生物学研究成果的基础上,使用平均场mean-field训练方法,设计了一种新的STDP算法,训练脉冲神经网络SNN。
两类STDP
本文提到了两类STDP,分别是加性STDP和乘性STDP,作者指出,前者具有更强的自适应能力,对特征的匹配拟合更具有竞争能力;后面具有弱的竞争力,同时在合作层面上更加显著,这两类STDP的训练方式,类似于FP和SP的学习过程。
加性STDP
修改权重的方法为:
d w i d t = λ z i ( t ) S p o s t ( t ) − α λ z p o s t ( t ) S i ( t ) \frac{\mathrm{d}w_i}{\mathrm{d}t}=\lambda z_i(t)S_{\mathrm{post}}(t)-\alpha\lambda z_\mathrm{post}(t)S_i(t)
d t d w i = λ z i ( t ) S post ( t ) − α λ z post ( t ) S i ( t )
乘性STDP
修改权重的方法为:
d w i d t = λ z i ( t ) S p o s t ( t ) − α w i λ z p o s t ( t ) S i ( t ) \frac{\mathrm{d}w_i}{\mathrm{d}t}=\lambda z_i(t)S_{\mathrm{post}}(t)-\alpha w_i\lambda z_\mathrm{post}(t)S_i(t)
d t d w i = λ z i ( t ) S post ( t ) − α w i λ z post ( t ) S i ( t )
式中,S i ( t ) S_i(t) S i ( t ) 表示神经元i i i 在t t t 时刻的脉冲信号,S p o s t ( t ) S_{\mathrm{post}}(t) S post ( t ) 表示神经元的输出信号,λ \lambda λ 表示学习率,α \alpha α 表示兴奋或者抑制的不平衡因子,w i w_i w i 表示神经元i i i 的权重,z i z_i z i 表示前一个神经元的Trace ,z p o s t z_\mathrm{post} z post 表示后一个神经元的Trace 。Trace的定义如下:
τ S T D P d z x ( t ) d t = − z x ( t ) + S x ( t ) \tau_\mathrm{STDP}\frac{\mathrm{d}z_x(t)}{\mathrm{d}t}=-z_x(t)+S_x(t)
τ STDP d t d z x ( t ) = − z x ( t ) + S x ( t )
式中,下标x x x 可以取为i i i 和p o s t \mathrm{ post} post 表示前一个神经元和后一个神经元。时间常数τ S T D P \tau_\mathrm{STDP} τ STDP 与STDP过程有关。
一个重要的问题,这两个公式是怎么推导来的?哪怕是使用EM算法也罢,怎么推导的?这个问题有必要解决一下。
参考文献
Encyclopedia of Computational Neuroscience (2803-)
The Limit of Learning A Mean-Field Approach to Hebbian Learning for Integrate-and-Fire Neuron Models