脉冲神经网络及有监督学习算法Tempotron

接下来一段时间开启脉冲神经网络模型的探索之旅。脉冲神经网络有更强的生物学基础,尽可能地模拟生物神经元之间的连接和通信方式。其潜在能力较强,值得踏进一步探索。

构建脉冲神经网络模型,至少需要考虑三点:
1. 外界刺激编码
2. 构建神经元模型
3. 制定学习规则

外界刺激的编码方式主要有Rate Coding和Temporal Coding等,这里不在细述。而Hodgkin和Huxley两位研究员早在1952年就提出了第一个神经元模型:HH[1]。随后陆续有各种神经元模型被提出,其中具有代表性的为Izhikevich模型[2]和LIF(Leaky-Integrate-and-Fire)模型[3]。

以LIF神经元模型为例,其数学表达形式如下:

\[\tau \frac{{dV}}{{dt}} = - (V - {V_r}) + RI\]

其中,\(\tau = RC\)为膜时间常数,\(R\)为膜电阻,\(C\)为膜电导,\(V\)为膜电位,\(V_r\)为复位电位,\(I\)为注入电流。当膜电位超过一个固定的阈值时,神经元发放一个脉冲,并很快地降至复位电位并维持一小段时间,然后接受前段突触的输入脉冲重新升高膜电位。各种神经元模型均类似于此过程。

学习规则又分为无监督和有监督,其中无监督学习方法以STDP(Spike-Timing-Dependent Plasticity)[4,5]为代表,而有监督学习包括Tempotron[6],ReSuMe(Remote Supervised Method)[7]和SpikeProp[8]等。

以Tempotron为例,阈值下的后突触膜电位(PSPs, Postsynaptic Potentials)为所有输入脉冲的加权和:
\[V(t) = \sum\limits_i {{\omega _i}\sum\limits_{{t_i}} {K(t - {t_i}) + } } {V_{rest}}\]

其中,\({t_i}\)表示第\(i\)个输入神经元的脉冲发放时刻(注:输入神经元在一个时间窗口内可能发放多个脉冲,也可能没有脉冲发放)。\(K(t – {t_i})\)为输入神经元的第\(i\)个发放脉冲对后突触膜电位的贡献,具体为:
\[K(t - {t_i}) = {V_0}(exp[ - (t - {t_i})/\tau ] – exp[ - (t - {t_i})/{\tau _s}])\]
其中,\({\tau}\)和\({\tau _s}\)为时间常数。为使得\(K(t – {t_i})\)的幅值为1,先设定\({V_0} = 1\),然后求导得到最大膜电位时间代入\(K({t_{\max }} – 0)\),求其倒数得到归一化因子\({V_0}\)为:

\[{V_0} = 1/K(((\tau {\tau _s}\log (\tau /{\tau _s}))/(\tau - {\tau _s})) - 0)\]
绘制\(K(t)\)随时间变化的曲线如下:

有监督学习的重点是如何更新突触连接权重\({\omega _i}\),获得期望输出脉冲。而Tempotron算法的核心如下:
\[\Delta {\omega _i} = \lambda \sum\limits_{{t_i} < {t_{\max }}} {K({t_{\max }} - {t_i})} \] 以二分类问题为例,如上更新规则为:首先分别求取类别1和类别2的最大膜电位时刻\({t_{\max }}\)。假定样本为类别1时,输出神经元发放脉冲,而当样本为类别2时输出神经元不发放脉冲。那么只需要判断最大膜电位\(V({t_{\max }})\)与阈值电位\({V_{thr}}\)的关系即可进行权重更新:

(1)如当样本的真实类别为类别1,输入脉冲神经网络之后,输出神经元在当前窗口时间范围内的最大膜电位大于阈值电位,则发放一个脉冲且无需更新突触连接权重。而当最大膜电位小于阈值电位时,需要根据如上公式更新连接权重,且\(\lambda > 0\)以增强贡献比较大的连接权重。
(2)反之,如当样本的真实类别为类别2,输入脉冲神经网络之后,输出神经元在当前窗口时间范围内的最大膜电位小于阈值电位,则不发放脉冲且无需更新突触连接权重。而当最大膜电位大于阈值电位时,需要根据如上公式更新连接权重,且\(\lambda < 0\)以削弱贡献比较大的连接权重。

Github上有两个基于Python的Tempotron实现代码
其中一个为Ajay Karpur提供的:https://github.com/ajaykarpur/tempotron-classifier,利用Tempotron进行MNIST分类,但是该代码的Tempotron部分没有写完整,存在比较大的问题,不建议参考。
另外一个代码是由目前在荷兰阿姆斯特丹大学,逻辑、语言和计算研究所的美女博士Dieuwke Hupkes提供,代码写的非常优雅:https://github.com/dieuwkehupkes/Tempotron,细节解释的也很清楚。

利用Tempotron学习规则进行简单的二分类训练,通过下图可以看到输出膜电位的变化。其中,raw为训练前的膜电位曲线,trained为训练后的膜电位曲线。可见,训练后的Positive类别仍然发放脉冲,而训练后的Negative类别样本被抑制发放脉冲。


该学习算法较为简单,其目前的主要缺点均为输出单个脉冲所致,如:
(1)无法直接做为下一层神经元的输入,因而不易扩展为深层脉冲神经网络;
(2)输出的单个脉冲不便于做序列预测。
因而,考虑学习一下其他的有监督学习算法,如ReSuMe[7]和SpikeProp[8]等。

本文出自:http://jacoxu.com/tempotron/

[1] Hodgkin A L, Huxley A F. A quantitative description of membrane current and its application to conduction and excitation in nerve[J]. The Journal of physiology, 1952, 117(4): 500.
[2] Izhikevich E M. Simple model of spiking neurons[J]. IEEE Transactions on neural networks, 2003, 14(6): 1569-1572.
[3] Gerstner W, Kistler W M. Spiking neuron models: Single neurons, populations, plasticity[M]. Cambridge university press, 2002.
[4]. Markram H, Lübke J, Frotscher M, et al. Regulation of synaptic efficacy by coincidence of postsynaptic APs and EPSPs[J]. Science, 1997, 275(5297): 213-215.
[5]. Bi G, Poo M. Synaptic modifications in cultured hippocampal neurons: dependence on spike timing, synaptic strength, and postsynaptic cell type[J]. Journal of neuroscience, 1998, 18(24): 10464-10472.
[6]. Gütig R, Sompolinsky H. The tempotron: a neuron that learns spike timing–based decisions[J]. Nature neuroscience, 2006, 9(3): 420-428.
[7]. Ponulak F. ReSuMe-new supervised learning method for Spiking Neural Networks[J]. Institute of Control and Information Engineering, Poznan University of Technology.(Available online at: http://d1. cie. put. poznan. pl/~ fp/research. html), 2005.
[8]. Bohte S M, Kok J N, La Poutre H. Error-backpropagation in temporally encoded networks of spiking neurons[J]. Neurocomputing, 2002, 48(1): 17-37.

脉冲神经网络及有监督学习算法Tempotron》上有 7 条评论

  1. Pingback 引用通告: 基于BP的有监督脉冲学习算法:SpikeProp | 刻骨铭心

        • 可以請教你關於tempotron的問題嗎? 我是名研究生,畢業題目打算做SNN方面的研究,但在模擬時對tempotron理論的部份感到不解。

          1. output neuron也只會fire一次。這部份和Dieuwke Hupkes的model不同,她的模型輸出會fire數次,是我理解錯誤嗎?)

          2.output neuron的membrane potential在fire之後會關閉此時間之後的所有afferent使potential smoothly decreased to resting potential,此時fire的時間點定為tmax, 因此在我的理解中一個output neuron的tmax應該也只有一個值才對?

          3. 在output neuron達到threshold後會遞減至resting potential. 此後計算V的公式不變,但在此time window中,只考慮firing time < tmax的那些input afferent。這樣對嗎? 我以這樣的公式來代入,模擬的結果V卻不會保持遞減,而是在下降一陣子之後又上升至超過threshold… 目前我樣本的所有輸出必定會超過threshold,以至分類結果出現錯誤,我還找不到問題的原因。

          不好意思突然問你這麼多問題,只是我身邊很難得找到做這個的同好可以討論。謝謝!

          • 不好意思,刚看到你的回复,好像叠层回复没有提醒==b
            1)Tempotron只关心tmax的膜电位情况,没有限制一定只发放一个脉冲;
            2)tmax是只有一个值;
            3)膜电位V下降一阵之后是会重新超越阈值的。分类只看tmax的膜电位是否超过阈值,不应该导致分类错误。
            关于如上问题,可以看一下代码会更清楚。https://github.com/dieuwkehupkes/Tempotron
            祝好!

三五营销软件 进行回复 取消回复

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>