基于STDP规则的脉冲神经网络研究
2020-09-18庄祖江雷建超刘栋博王海滨
庄祖江,房 玉,雷建超,刘栋博,王海滨
(西华大学 电气与电子信息学院,成都 610039)
0 概述
脉冲神经网络(Spiking Neural Network,SNN)[1]被称为第三代神经网络[2],是目前最具有仿生性的人工神经网络。脑科学的研究结果表明,在生物系统中,信息是以突触直接的动作电位来进行处理和传递的。受这一研究的启发,脉冲神经网络将信息编码成脉冲序列进行处理,其结构更接近于生物神经元,而且网络的计算能力强于传统人工神经网络[3]。由于其优秀的性能,引发了诸多学者的关注,如英国帝国理工大学的GOODMAN研发了脉冲神经网络的仿真平台Brian[4-5],奥地利的MAASS对脉冲神经元模型、网络拓扑结构和相关应用进行了研究[6-7],日本东京大学KUBOTA等人将SNN应用到助力机器人以及行走机器人上[8],瑞士联邦学院GERSTNER等人对脉冲神经元模型和脉冲时间独立可塑性学习规则等理论进行了研究[9]。国内也有学者对此进行了研究,如文献[10]对基于脉冲时间网络的图像分割应用进行了研究,而且提出了累加和累积合成核机制进行网络的训练[11],文献[12]将自组织网络与STDP相结合对算法进行研究,也有学者提出了基于脉冲神经网络的片上网络路由器动态优先级仲裁策略[13]。
研究人员对脉冲神经元模型进行深入研究,目前学界比较公认的学习算法有脉冲时间依赖可塑性(Spike-Timing-Dependent-Plasticity,STDP)[14]、Tempotron[15]、ReSuMe(Remote Supervised Method)[16]和SpikeProp[17]等,STDP算法由Hebb规则[18]延伸而得到,是目前比较流行的无监督算法[19],能够较好地解释神经网络的依赖性。
本文研究基于无监督的脉冲神经网络,采用STDP学习算法进行基于脉冲数目的无监督训练,通过改进传统的分类方法,提出一种投票竞争机制提高网络的分类准确率,并在MNIST数据集上进行实验验证。
1 脉冲神经网络结构
1.1 脉冲神经元模型
脉冲神经元是构成脉冲神经网络的基本单元,其状态主要由膜电势以及阈值所决定,膜电势主要由来自上一层所有连接的突触后电势决定,其中EPSP(Excitatory Post-Synaptic Potential)能够提高神经元的膜电势,IPSP(Inhibitory Post-Synaptic Potential)能够降低神经元的模电势[20]。本文网络的脉冲神经元模型采用LIF模型进行研究[21],其模型描述如下:
(1)
其中,v(t)表示在t时刻神经元的模电压,Vr表示静息膜电位,Ve和ge表示兴奋性突触的平衡电压和电导,Vi和gi表示抑制性突触的平衡电压和电导,τm表示神经元的膜电位时间常数由τ=RC所决定,R表示膜电阻,C表示膜电容,τge和τgi分别表示激励性神经元和抑制性神经元的膜电位时间常数。
当突触后神经元接收到突触前神经元传输的电流I时,膜电势会升高,当其逐渐升高超过阈值时,就会释放脉冲,随后电势会低于之前的静息电位,在复位后的几毫秒内,神经元处于不应期,不能再次出现脉冲。其电位变化方式如图1所示。
图1 神经元输入电流膜电压变化过程
上述过程被称为神经元的动作电位,也就是神经元产生了一个脉冲。从图1可以看出,第1次输入电流较小时,膜电压Vm升高,但是没有超过阈值VT,因此又恢复到静息电压VR,第2次输入电流时,Vm超过了VT,因此产生了一次完整的动作电位,向突触后神经元释放了脉冲。
1.2 STDP算法
脉冲时间依赖可塑性(STDP)是调节大脑中神经元之间的连接强度的生物学过程,该过程根据特定神经元输入脉冲的相对时序调整连接强度[22]。其学习机制可以表达为:
(2)
其中,tpost表示突触后神经元产生脉冲的时间,tpre表示突触前神经元产生脉冲的时间,表明了突触权重的变化由所有突触前神经元的脉冲发放时间和突触后的脉冲发放时间所影响,常规的STDP时间函数如下:
(3)
其中,Δt表示突触后神经元产生脉冲的时间tpost和突触前神经元产生脉冲时间tpre之差,A+和A-代表权重调整的范围,τ+和τ-表示不同神经元模型的常量。由式(3)还可以看出,当突触后神经元在突触前神经元之前产生脉冲时,则减少两者之间的权重,反之如果突触后神经元在突触前神经元之后产生脉冲,则增加两者之间的权重。
1.3 网络结构
脉冲神经网络结构如图2所示,脉冲神经元网络结构的主体是输入层和STDP层,转换层的作用是简单地进行图像样本的处理,抑制层是抑制STDP层不活跃的神经元释放脉冲,而分类层是将STDP层所产生的信号根据算法进行分类。
图2 脉冲神经网络结构
图像的像素先经过转换层转换为脉冲频率,脉冲频率与图像的像素强度成正比,比例系数为β,将对应的频率传输到输入层。由于本文将采用基于STDP学习规则,Poisson序列的编码可以更好地提高效率[23],因此输入层采用m个Poisson神经元构成,作用是可以将脉冲频率转换为Poisson序列,其神经元激发概率公式为:
(4)
其中,PT[n]表示神经元产生脉冲的概率,n表示神经元数目,r表示样本数据,即脉冲频率,T表示一次训练的周期。
输入层的神经元与STDP层以及抑制层的神经元是一一连接的,区别在于,与STDP层连接的权重wmn是由STDP学习规则进行更新的,而与抑制层的神经元的连接是固定权重,这样方便调整抑制层的抑制程度。
由于网络结构采用的是无监督学习规则进行学习,因此引入抑制层进行竞争,这样可以使获胜神经元的权重增加,而其他神经元的权重减少,有效降低了训练过程中的噪声,得到了更好的训练效果。
对于网络的STDP层以及抑制层在训练过程中都是无监督的,在训练结束之后会收敛,这样的网络并没有表现出任何特定的功能。在这里需要添加分类层去识别STDP层在训练过程中所发送的信息,以达到分类的目的。
2 投票竞争机制
分类层的算法对于网络最后的表现至关重要,具有生物意义的常规方法是将STDP层在训练时产生的脉冲表现转换为每一个神经元表现的分类,然后通过加权的方式进行分类。这类方式准确率相对较低,本文针对此方法进行了改进,提出一种符合生物竞争的策略,增加了投票竞争机制,增加了分类的准确率。由于会使用到数据的标签,但是数据不会再向前传输也不会改变训练好的权重,因此本文算法为半监督类型的算法。
对于一个训练样本数量为a的m个像素的k分类问题,输入神经元个数为m个,STDP神经元数目为n个,抑制层神经元数目为l个,且定义:
a1+a2+…+ak=a
(5)
1)当ak类输入时,求出所有神经元的输出脉冲之和并进行标准处理,可以得到平均输入一次样本时神经元的脉冲产生情况:
(6)
2)对于得到的k个行向量rk,定义rkn表示输入类别为ak时,第n个神经元产生的脉冲数,可以拼接成如下的矩阵:
(7)
3)对Rkn的每一列取其最大值的行标号,作为此神经元的表现类别,可以得到:
assb=(s1,s2,…,sn)
(8)
其中,s1,s2,…,sn表示对应神经元表现的类别。
4)将前面得到的ass通过投票竞争机制进行筛选,即:
ass*=f(ass1,ass2,…,assb)
(9)
for i =1 to n :
for j =1 to b :
If 在b次训练中无法重复值:
end
end
投票竞争策略如图3所示,s1由s1,s2,…,sn投票得出,为其中出现次数最多的类别,即对于最后的神经元表现,由前面b次训练过程中得到的神经元表示进行投票,若神经元表示类别为k的次数最多则最终结果定为k,这样得到的表现类别优于之前得到的单一表现,可以使得此算法收敛到一个更优的值。
图3 投票竞争策略示意图
3 实验结果与分析
为验证投票竞争机制的可靠性与有效性,本文以配有16 GB内存、处理器为Intel®CoreTMi7-4720HQ,并装有Ubuntu16.0的操作系统的笔记本电脑为测试平台,以python3.6为编程环境,使用BRIAN2作为仿真库使用,在MNIST数据集上进行了验证实验。
为表明网络结构的生物意义的合理性,本文模拟时采用的参数均为在生物学的合理范围之内,包括膜的时间常数、突触模型和训练周期等[24],除了提高激励性神经元的时间常数到100 ms,相较与生物神经元中的时间常数10 ms~20 ms,该网络结构可以降低噪声的影响。例如,如果输入脉冲在126 Hz的最大速率下持续输入20 ms,则神经元平均产生2.52个脉冲,这意味着单个噪声尖峰会产生很大的影响,而增加到100 ms时,神经元平均可以积累12.6个脉冲,从而减少了噪声的影响。
在算法设计上,为保证算法的有效性不会因为随机的参数起点不一致而导致误差,本文在同等网络结构下均采用相同初始条件。
MNIST手写数字数据库,其训练集包含了60 000张28×28的图片,测试集包含了10 000张28×28的图片,因此网络的输入层神经元个数为28×28=784个。对于STDP层和抑制层的神经元数目在实验中发现两者相等时表现最佳,因此本次实验过程中均选取一致的数目,测试的准确率为测试集的准确率。
为研究不同投票次数对准确率的影响,设置了一组在STDP层神经元数量不变时,训练次数为2次~9次的验证性实验,实验结果如图4所示。
图4 训练次数对准确率的影响
从图4可以看出,随着训练次数的增加,准确率的提升逐渐收敛,当训练次数为4次时,测试集准确率已经稳定,这是由于本文算法的机制所表现,因为逐步增加投票的样本,并不会很大程度地改变主神经元组的表现,因此可以看出,本文方法是有效的。为进一步验证算法的有效性,本文设计了4次不同神经元数量下的对比实验,实验结果如图5所示。其中,在不同神经元数量中,最右的深色为本文采用的投票竞争机制算法,其余为进行投票的样本。
图5 不同神经元数目下MNIST的准确率对比
当神经元数目为200时,未采用投票竞争机制的平均准确率只有85.55%,当采用本文方法后提升至92.23%,提高了6.68%,在其他神经元规模下,本文方法准确率均有较大提升,说明了本文方法可以提高脉冲神经网络结构的分类表现。
为进一步研究准确率的提升,在神经元数目为400时,2种不同方法STDP测试集表现的混淆矩阵如图6所示。
图6 两种方法标准化的混淆矩阵
从图6可以看出,图6(b)相对于图6(a)提高了数字4和9的误分类情况,数字9的识别率提高了6.0%,整体准确率提升了3.69%,说明本文方法是有效的。
同时为了更加严谨地分析算法性能,对于算法的运行时间进行了实验分析。本文算法增加时间复杂度主要有2个因素:1)增加了竞争投票算法,由算法描述可知,此算法的时间复杂度为O(nb),受到神经元个数以及训练次数的影响,将神经元的类别ass采用矩阵形式的存储方式,运算效率高,时间复杂度可以降低为O(b),因此该因素对于整体的影响不大;2)增加了训练次数,不可避免地会增加脉冲训练时间。脉冲训练时间影响主要来源为:不同数目的神经元网络构建时间不同,即网络结构创建耗时;超过指定的脉冲响应周期(接受脉冲时间和不应期时间)的额外仿真耗时。实验结果如图7所示。
图7 脉冲时间网络创建与训练耗时分析
由实验结果可以看出,网络创建时间和单次额外仿真耗时(取训练同样的前1 000个样本时间然后取均值)均随神经元数目的增加而增加,此处的神经元数目均指STDP层神经元数目,其余神经元数目保持不变。观察图中的网络创建时间对于算法的效率影响不是很大,主要的时间影响因素来自单次额外仿真时间。对于本文算法来说,训练4次左右提升效果最为明显,以200个神经元训练时长为例,单次训练需要25.60 ms,采用本文算法则相当于需要102.4 ms,单次仿真时间比700个神经元所需的单次额外仿真时间要低1.33 ms,而两者准确率仅相差0.34%。这说明本文算法在不增加训练时间的情况下,可以取得与更加复杂的网络结构一样的训练结果,表明本文算法对于性能有限的机器有很大的帮助。将本文算法与其他脉冲神经网络算法在MNIST测试集上的分类效果进行对比,如表1所示。
表1 脉冲神经网络在MNIST测试集上的比较
从表1对比结果可以看出,本文算法网络结构的效果更好。
4 结束语
本文提出一种投票竞争机制,该机制优化了基于无监督学习的脉冲神经网络机构在图像分类问题的表现。采用脉冲神经网络模型,并基于STDP学习规则进行数据训练,对输出的脉冲表现采用投票竞争的学习机制,提高了神经元的表现。实验结果表明,在网络结构一致的情况下,本文方法在训练次数较少时即可以达到收敛,与传统的网络结构相比准确率提升明显。下一步将考虑输入网络数据来增加预处理的过程,以降低网络的复杂度。