SNN系列|学习算法篇(3)ReSuMe

ReSuMe

原文传送

适用于单层网络或液体状态机,采用精确时间编码,结合了STDP与anti-STDP机制,对多种神经元模型和突触类型均适用,因为权重的调整仅取决于脉冲输出与目标输出序列有关。核心的更新公式如下:
ddtωoi(t)=[Sd(t)So(t)][ad+0adi(s)Si(ts)ds] \frac{d}{d t} \omega_{o i}(t)=\left[S_{d}(t)-S_{o}(t)\right]\left[a_{d}+\int_{0}^{\infty} a_{d i}(s) S_{i}(t-s) d s\right]

Anti-Hebbian

Hebb定律提到"fire together, wire together",Hebb本人也提到突触前后神经元的协同活动会提高突触前神经元的传递效率,这对兴奋性突触时没有问题的,但是对抑制性神经元来说,相关性活动却会造成突触传递效率的降低。与Hebb学习法则一样,anti-Hebb只是多了一个负号
dωdt=ηxy \frac{d\omega}{dt}=-\eta xy
anti-Hebb通常与Hebb一起使用,比如可以用于侧向神经元的相互抑制。Hebbian学习通常与LTP相关,anti-Hebbian通常与LTD相关,STDP一般也认为与anti-hebb有关。
SNN系列|学习算法篇(3)ReSuMe

A phenomenological model for STDP

该模型认为,除了突触延迟以外,所有的突触权重变化都可以由突触前后神经元脉冲来描述。突触前、突触后、目标脉冲序列分别表示为Si(t),So(t),Sd(t)S_i(t),S_o(t),S_d(t),每个序列都是单个脉冲的叠加S(t)=fδ(ttf)S(t) = \sum _f \delta(t-t_f)

突触权重的改变包括三部分:当不考虑aa和Non-Hebbian时,同经典STDP。

  • 无脉冲时的自衰减aa
  • 突触前脉冲带来的影响
    • Non-Hebbian:无突触后脉冲时的自影响
    • 突触前后脉冲时序的影响
  • 突触后脉冲带来的影响
    • Non-Hebbian:无突触前脉冲时的自影响
    • 突触前后脉冲时序的影响

突触权重的更新如下:
dω(t)dt=a+Si(t)[ai+0aid(s)Sd(ts)ds]+Sd(t)[ad+0adi(s)Si(ts)ds] \frac{d \omega(t)}{d t}=a+S_{i}(t)\left[a_{i}+\int_{0}^{\infty} a_{i d}(s) S_{d}(t-s) d s\right]+S_{d}(t)\left[a_{d}+\int_{0}^{\infty} a_{d i}(s) S_{i}(t-s) d s\right]
SNN系列|学习算法篇(3)ReSuMe

注意积分时从0开始的,也就是说当突触前脉冲到来的时候,只看在此之前的突触后脉冲,按照经典STDP,此时应该是抑制作用;反之为增强作用。对于突触前后脉冲时序s=tiftdfs=t_i^f -t_d^f的影响,aid,adia_{id},a_{di}定义窗口函数如下:
W(s)={A+exp[s/τ+]for s<0Aexp[s/τ]for s>0 W(s)=\left\{\begin{array}{cl}A_{+} \exp \left[s / \tau_{+}\right] & \text {for } s<0 \\A_{-} \exp \left[-s / \tau_{-}\right] & \text {for } s>0\end{array}\right.
aid(s)a_{id}(s)对应s>0s>0adi(s)a_{di}(s)对应s<0s<0

SNN系列|学习算法篇(3)ReSuMe

ReSuMe

该算法在上述基础上,将STDP与Anti-STDP相结合,即突触权重的更新满足
dωoi(t)dt=Xdi(t)+Xoi(t) \frac{d \omega_{o i}(t)}{d t} =X_{d i}(t)+X_{o i}(t)
其中,Xdi(t),Xoi(t)X_{di}(t),X_{oi}(t)分别表示突触前脉冲序列与目标序列的STDP过程以及突触前脉冲序列与实际序列的anti-STDP过程,根据上一节的描述,二者可形式化给出
Xdi(t)=a+Si(t)[ai+0aid(s)Sd(ts)ds]+Sd(t)[ad+0adi(s)Si(ts)ds]Xoi(t)=b+Si(t)[bi+0bio(s)So(ts)ds]+So(t)[bo+0boi(s)Si(ts)ds] X_{d i}(t)=a+S_{i}(t)\left[a_{i}+\int_{0}^{\infty} a_{i d}(s) S_{d}(t-s) d s\right]+S_{d}(t)\left[a_{d}+\int_{0}^{\infty} a_{d i}(s) S_{i}(t-s) d s\right]\\X_{o i}(t)=b+S_{i}(t)\left[b_{i}+\int_{0}^{\infty} b_{i o}(s) S_{o}(t-s) d s\right]+S_{o}(t)\left[b_{o}+\int_{0}^{\infty} b_{o i}(s) S_{i}(t-s) d s\right]
当输出脉冲序列与目标脉冲序列完全一致时,应满足如下条件
Xdi(t)+Xoi(t)=0So(t)=Sd(t)    {b=a,bi=ai,bo=adAoi=Adi,Aio=Aidτoi=τdi,τio=τid X_{d i}(t)+X_{o i}(t)=0 \Leftrightarrow S_{o}(t)=S_{d}(t)\\\implies \left\{\begin{array}{l}-b=a,-b_{i}=a_{i},-b_{o}=a_{d} \\A_{o i}=A_{d i}, A_{i o}=A_{i d} \\\tau_{o i}=\tau_{d i}, \tau_{i o}=\tau_{i d}\end{array}\right.
使用上述条件化简公式
ddtωoi(t)=Si(t)0aid(s)[Sd(ts)So(ts)]ds+[Sd(t)So(t)][ad+0adi(s)Si(ts)ds] \begin{aligned}\frac{d}{d t} \omega_{o i}(t)&= S_{i}(t) \int_{0}^{\infty} a_{i d}(s)\left[S_{d}(t-s)-S_{o}(t-s)\right] d s \\&+\left[S_{d}(t)-S_{o}(t)\right]\left[a_{d}+\int_{0}^{\infty} a_{d i}(s) S_{i}(t-s) d s\right]\end{aligned}
实验发现,aid(s)=0a_{id}(s)=0能获得更好的收敛性和学习效果,因此,ReSuMe的学习规则如下:
ddtωoi(t)=[Sd(t)So(t)][ad+0adi(s)Si(ts)ds] \frac{d}{d t} \omega_{o i}(t)=\left[S_{d}(t)-S_{o}(t)\right]\left[a_{d}+\int_{0}^{\infty} a_{d i}(s) S_{i}(t-s) d s\right]
SNN系列|学习算法篇(3)ReSuMe

代码

参考

[1] Spike-timing dependent synaptic plasticity: a phenomenological framework

[2] Encyclopedia of Computianal Neuroscience

[3] Supervised Learning in Spiking Neural Networks with ReSuMe: Sequence Learning, Classification, and Spike Shifting