仿生型脉冲神经网络学习算法和网络模型

2020-05-22 12:33尚瑛杰董丽亚
计算机工程与设计 2020年5期
关键词:中间层膜电位网络结构

尚瑛杰,何 虎,杨 旭,董丽亚

(清华大学 微电子与纳电子学系,北京 100084)

0 引 言

随着智能化需求的推进,传统的神经网络逐渐暴露出计算量大、功耗高和智能化程度低等问题,而脉冲神经网络(spiking neuron networks,SNN)由于工作模式更加接近人脑,具有计算量低、功耗低和仿生性高等特点,经常被誉为“第三代人工神经网络”,是实现强人工智能的重要方式,因此受到越来越多的关注。

然而,目前脉冲神经网络研究还处在初步阶段,缺乏有效的学习算法,这既是脉冲神经网络训练困难的主要瓶颈,也是众多科研人员努力解决的问题。人工智能的重大突破通常受到生物脑神经网络的启发[1],感知器模型、卷积神经网络,乃至深度学习都是如此[2,3],而脉冲神经网络的产生也是如此[4],所以,仿生型算法是解决脉冲神经网络训练困难的重要手段之一。

本文对脉冲神经网络的权值和结构两个方面进行了研究,提出了脉冲神经网络的权值学习算法和结构学习算法,尝试性地解决脉冲神经网络训练困难的问题。同时设计了一种脉冲神经网络结构,用于算法的仿真验证实验。

1 脉冲神经网络简介

1.1 神经元模型

神经元是神经网络最基础的组成部分,神经元模型的选择与网络性能有着直接的关系。本文采用的神经元模型为LIF(leaky integrate and fire)模型,即泄露积分放电模型,这是一种基于生物神经元特性抽象出来的积分器模型。LIF神经元模型既对生物神经元主要特性进行充分保留,又兼顾了模型的简洁性和仿真效率。LIF模型在电路方面可以等效为带电压偏置的电阻-电容并联模型,如图1所示,其中I(t)为神经元的输入电流,uret为神经元复位膜电位,u(t)为膜电位[5]。

图1 LIF神经元模型的等效电路

当神经元处于静息状态,即输入电流I(t)=0时,可知u(t)=uret。 当输入电流I(t)>0时,电容C会进行充电,进而导致膜电位u(t)的升高;另一方面,若电容C上存在电荷积累,则电荷会随着时间而泄漏,膜电位u(t)也会因此降低,直至回落到静息状态。如果电容C的电荷积累速度高于泄漏速度,膜电位u(t)会持续升高到激发阈值,此时神经元会向外发射一个电脉冲,膜电位u(t)迅速降低至复位膜电位。本文中采用的LIF模型参数借鉴了目前成熟的研究成果[6-8],具体参数详见表1。

表1 LIF神经元模型参数

1.2 网络结构与工作模式

脉冲神经网络被誉为“第三代神经网络”,是受到脑神经工作方式的启发而产生。因此,脉冲神经网络具有很高的生物相似性,甚至会被用于生物神经网络的模拟。另外,由于脉冲神经网络具有时间维度信息,相比于第二代神经网络其信息处理能力更强,尤其是在具有强关联性的上下文信息处理方面独具优势。目前,由于缺乏有效的训练算法,脉冲神经网络的潜力不能充分发挥。

在网络结构方面,脉冲神经网络的种类众多,主要有多层前馈网络、循环网络和进化网络等。图2展示了一个多层前馈网络模型,本文以此为例介绍脉冲神经网络的工作原理。

图2 脉冲神经网络模型

在脉冲神经网络中,输入、输出和中间层的信息传递与处理都是基于脉冲编码信号,输入层的脉冲信号通过神经元之间的连接传递到下一层神经元。当神经元接收到脉冲信号后,该神经元的膜电位便会升高,在LIF的电路模型中,这一过程等效为电容充电。当神经元膜电位达到阈值后,该神经元会向后神经元发射一个脉冲信号,并将自身膜电位复位,称神经元的这一事件为一次激活[9]。

2 脉冲神经网络学习算法

2.1 权值学习算法

2.1.1 STDP规则介绍

STDP(spike-timing-dependent plasticity)规则,称为突触可塑性规则,是生物学中对大脑神经元连接强度变化规律的总结。在生物神经网络中,神经元之间的连接称为突触,突触的强度会根据前后神经元激活状态的因果关系发生改变,这种现象也称为突触可塑性。STDP规则的原理如图3所示。

图3 STDP规则

图3中,Npre和Npost表示两个脉冲神经元,两者之间存在一条有向连接;Npre位于连接的起点,称之为前神经元;Npost位于连接的终点,称之为后神经元;神经元发射脉冲的动作称作激活,发射脉冲的时间称为激活时间。当前神经元激活时间早于后神经元激活时间,则加强两个神经元之间的连接;反之,减弱连接。

从数学模型角度分析,连接的强度与前后神经元激活时间差,可以近似为某种函数关系[10,11]。STDP规则的函数实现方式如式(1)~式(5)所示

Δt=t2-t1

(1)

K(Δt)=exp(-|Δt|/τ)

(2)

f_(w)=αwμ

(3)

f+(w)=(1-w)μ

(4)

(5)

其中,t2为后神经元激活时间;t1为前神经元激活时间;τ为控制指数衰减速率的时间常数,取值大于0;α为对称度调整参数,取值大于0,用于调整f-(w)函数和f+(w)函数对称度;μ为曲率因子;w为归一化后的连接权值,取值区间为[0,1];λ为权值学习率,取值大于0;K(Δt)为时间滤波函数;f-(w)和f+(w)称为更新函数;Δw为权值调整量。

通过分析易得:当Δt小于或等于0时,权值减小;当Δt大于0时,权值增大;这与理论相符合。

2.1.2 基于STDP规则的监督式学习算法

监督式学习算法一直都是脉冲神经网络的难点,由于脉冲序列为离散数据,无法进行微分求导运算,因此第二代神经网络的BP算法并不适合脉冲神经网络。本文基于STDP规则,设计了一种监督式的学习方法[12]。监督式学习算法的基本结构如图4所示。

图4 监督式学习算法

网络中提供监督式学习信号的神经元,称为“引导”神经元;而Npre和Npost分别代指前神经元和后神经元,并且把神经元发射脉冲的动作称作激活,发射脉冲的时间称为激活时间。另外,学习算法设定:神经元Npre与神经元Npost之间的连接权值为W1,该权值受STDP规则调整;“引导”神经元与神经元Npost之间的连接权值为W2,该权值为常数值,仿真过程中保持不变。

在初始网络之中,权值W1设定相对较小,因此神经元Npre对神经元Npost的影响较小;而权值W2设定相对较大,因此“引导”神经元对神经元Npost的影响较大。并且,考虑到LIF神经元模型的积分放电行为,激活时间t2会非常接近t3。具体关系可以表示如式(6)~式(7)所示

W1≪W2

(6)

t3=t2+Δt

(7)

其中,Δt≈0。 在这种情况下,只需要通过设置“引导”神经元的激活时间t3,就可以调整神经元Npost的激活时间t2,则:

当t1

当t1≥t2时,根据STDP规则,连接权值为W1减弱;

综上所述,对于连接前后两个神经元,在合理地设置“引导”神经元激活时间的情况下,可以实现对前后神经元之间连接的增强或者减弱。

2.2 基于Hebb的结构学习算法

目前结构学习算法方面研究成果相对较少,神经网络的学习算法主要以权值学习为主。然而,网络结构关系到网络性能,网络结构的分布方式、复杂度和连接方式都会对网络功能产生重要影响。当前主流的神经网络结构都是人为设计的,不同的网络结构面向不同的功能,网络结构的设计也依赖于研究人员的经验。因此,设计一种能够产生自适应网络结构的算法,既可以提高网络结构设计效率,又可以提供定制化的设计方案。

结构学习算法基于生物学Hebb规则,能够自动生成新连接,为网络结构自动构建方法提供思路,弥补目前神经网络结构固定的缺陷,同时也为本文的脉冲神经网络赋予更强的生物相似性。其中,Hebb学习规则是唐纳德·赫布在1949年提出的神经心理学理论,该理论认为不同的神经元在同一时间段内激活,则两者存在相关性,两者之间的连接应当被加强。本文借鉴Hebb规则的相关性学习思想,规定同一时间段内激活的神经元,若两者没有连接,则建立一条连接,结构学习算法如图5所示。

图5 基于Hebb的结构学习算法

图5中,N1和N2表示两个脉冲神经元,两者之间不存在连接;input1和input2分别表示N1和N2的输入信号;t1和t2分别表示N1和N2的激活时间;Threshold表示时间阈值。当t1和t2差的绝对值小于时间阈值时,在N1和N2建立一条新的连接。

同时为了防止网络连接的无限制增长,算法考虑了神经元的位置因素,在神经元相对距离超出阈值时,不建立连接。将神经元发射脉冲这一事件称为激活,具体算法如下:

基于Hebb的结构学习算法:

步骤1 开始仿真并检测该仿真周期内两个神经元N1,N2的状态,若N1,N2两个神经元之间不存在连接,则转步骤2;否则,结束;

步骤2 若两个神经元都处于激活状态,则将激活时间分别记为t1,t2,转步骤3;否则结束;

步骤3 若两个神经元距离小于阈值,则转步骤4;否则,结束;

步骤4 若abs(t1-t2)

若abs(t1-t2)t2),建立从N2到N1的连接,结束;

若abs(t1-t2)≥Threshold,结束。

3 网络模型与仿真平台

为了验证算法的可行性,本文设计了一种仿生型的网络模型,并搭建了适合脉冲神经网络的仿真平台。

3.1 脉冲神经网络模型

在生物视觉系统中,也存在类似卷积层和池化层的结构,而卷积神经网络(CNN)就是借鉴猫的视觉神经网络而提出的。但生物视觉网络的卷积层和池化层只是起到了图像预处理的作用,真正具备识别功能的不是卷积层和池化层,而是更深层次的识别网络。本文提出的仿生型脉冲神经,将识别任务放在了SNN网络层,卷积层仅对数据进行预处理,卷积层在学习过程中不会发生变化[13,14],网络模型如图6所示。

网络模型中的每一层的功能如下所示:

输入层:读取数据并进行格式转化。

卷积层:提取图像特征。卷积层的卷积核由4个固定的卷积核组成,分别对图像数据横、竖、左斜和右斜4个方向的特征进行提取。

图6 脉冲神经网络模型

池化层:主要起到了降低数据量和锐化特征的目的。

转换函数:将数据转换为脉冲序列信号,作为脉冲神经网络的输入。

SNN网络:脉冲神经网络层,具体结构可由使用者定义,承担主要的信息处理任务。

输出层:统计分析脉冲信息,将SNN网络的输出转化为标准的数据输出格式。

3.2 脉冲神经网络仿真平台

鉴于第三代神经网络与第二代神经网络工作模式的不同,脉冲神经网络无法在传统的仿真平台上进行仿真。最常见的仿真方法是通过数学建模,但神经元模型和网络结构的建模过程繁琐,需要耗费大量的研究时间,也不适合大规模网络的仿真。

本文通过Python编程,结合开源脉冲神经网络模拟器NEST,搭建了一款适合脉冲神经网络的仿真平台。NEST是一个面向脉冲神经网络的模拟器,它关注的是神经系统的动态、大小和结构,为用户提供了大量的仿生型神经元模型和突触模型。除了NEST模拟器外,该仿真平台还有配置文件、脉冲转换器、脉冲神经网络仿真器和显示界面构成,如图7所示。

图7 脉冲神经网络仿真平台

配置文件主要为用户提供配置接口,包括网络、算法和系统等配置信息;而脉冲转换器则负责读取数据集,并结合脉冲转换函数转换为脉冲信号;NEST模拟器则提供神经元模型和网络连接模型,减少用户的数学建模压力;脉冲神经网络仿真器为核心部分,负责算法和仿真的实现;显示界面主要显示网络仿真结果,例如提供网络输出信息、绘制神经元膜电位曲线等。

4 权值学习算法验证实验

4.1 网络结构与参数说明

本实验中的网络结构基于图6的网络模型搭建,其中SNN网络部分采用了三层脉冲神经网络结构。第一层为576脉冲发射神经元,根据转换函数的输出数据产生脉冲序列;第二层为576个LIF模型神经元;最后一层为10个LIF模型神经元,用于表征网络的分类结果。第一层到第二层采用“一对一”连接,第二层到第三层采用全连接方式进行连接,并为第三层神经元添加“引导”神经元。

权值设置和优化方面,第一层到第二层所有连接的权值设为统一的值,记为weight0。实验过程中发现,weight0太小,会导致第二层神经元无法激活;weight0太大,会导致神经元参数饱和,影响仿真精度;因此,weight0的值必须设置在合适的区间范围内。本文使用二分查找法,以第二层神经元激活状态和神经元参数饱和状态为参考,设置weight0的上下边界,结合实验数据选取合适的weight0。另外,由于前文中监督式学习算法的要求,第二层到第三层连接的权值应当远小于“引导”神经元到第三层神经元的连接的权值。因此,本文将第二层到第三层的初始权值设为1,而将“引导”神经元到第三层神经元的连接的权值设为1500。在巨大的权值差距下,输出层神经元的激活时间会高度趋近于“引导”神经元,根据STDP规则,进而对第二层到第三层的连接权值进行定向增强或者减弱,从而实现权值训练的目的。

4.2 权值学习有效性分析

实验采用了MNIST手写体数字对网络性能进行了测试,MNIST训练集图片共计60 000张,测试集图片共计10 000,图片类别共 10类,分别用10个标签值进行表示。在网络输出层,每个神经元代表一种分类结果,与10个标签值一一对应,激活时间最早的神经元所对应的分类结果即为网络最终输出结果。

实验中,每张图片的仿真时间为500 ms,通过实验观察,第二层神经元活跃时间为50 ms左右。在每一张图片的仿真过程中,根据输入图片的标签值,对于代表正确输出的神经元,其连接的“引导”神经元激活时间设为 75 ms;对于代表错误输出的神经元,其连接的“引导”神经元激活时间设为35 ms;那么,根据权值学习算法,“引导”神经元就能够对正确输出进行强化,对于错误输出进行抑制,从而实现了算法的学习功能。

为了更加直观地表现监督式学习算法的有效性,通过10次重复实验,每次实验中采用500张训练集图片对网络进行训练,然后在训练集和测试集上分别进行网络功能验证,将测试结果记录见表2。

表2 网络对MNIST数据集识别准确率/%

通过表2可以看出,在监督式学习算法的训练下,脉冲神经网络能够对MNIST测试集进行有效识别。多次重复性实验后发现,训练后的神经网络对MNIST训练集的识别率均值能够达到91.20%,测试集的识别率均值能够达到84.12%,虽然这一准确率无法与第二代神经网络相比,但足以验证了本文脉冲神经网络训练算法和网络结构的可行性。

4.3 快速收敛能力分析

为了验证脉冲神经网络快速收敛能力,本实验通过与第二代神经网络的对比实验,验证脉冲神经网络在快速收敛方面的优势。

首先,实验使用TensorFlow搭建了两个第二代神经网络用于对比实验:一个是仅有两层全连接结构的网络,一个是具有两层卷积和一层全连接的卷积神经网络。这两个网络在充分训练的情况下,对MNIST数据集具有良好的识别率,分别能够达到98.4%和99.24%。然而在网络收敛速度方面,这两种网络则较为缓慢。本实验将脉冲神经网络、全连接网络和卷积神经网络训练过程中,第一轮迭代的前500图片训练收敛情况绘制如图8所示。

图8 3种网络收敛速度对比

从结果上可以看出,本文设计的脉冲神经网络(SNN)具有快速收敛的能力。而卷积神经网络(CNN)虽然具有极好识别准确率,但其收敛速度也较慢。

4.4 低功耗特性分析

为了分析脉冲神经网络低功耗特性,本文对网络识别单张图片的能耗进行了估算。在前文中,LIF神经元模型的等效电路已经在图1中给出,从该神经模型中可以看出模型的能耗可根据电容充放电过程进行计算。单个神经元激活一次消耗的能量计算方式如式(8)~式(10)所示

(8)

U2(t1)=Vth

(9)

U2(t2)=Vreset

(10)

其中,Vth为神经元的激发阈值,Vreset为神经元的复位膜电位,本文中LIF神经元模型的参数在表1中已经给出,此处不再赘述。通过统计脉冲神经网络在训练和识别过程中,每张图片激活神经元平均数,可以计算出训练或识别一张图片所消耗的能量,结果见表3。

表3 训练、识别单张MNIST数据集图片能耗

从结果可以看出,该网络学习和识别一张图片的能耗大约为65 pJ。虽然最终的功耗需要根据网络的工作频率进行计算,但单张图片的处理能耗在pJ量级已经完全符合低功耗特性了。

5 结构学习算法验证实验

5.1 网络结构与参数说明

结构学习算法验证实验仍然基于本文提出的网络模型,其中SNN网络部分主要包括输入层、中间层和输出层,其中中间层是实现结构学习的核心层,网络结构如图9所示。

图9 结构学习网络模型SNN部分

输入层:为整个脉冲神经网络提供脉冲信号,输入层神经元数量为576个,采用一对一的方式连接到中间层,该部分连接为固定连接,既不参与权值训练,也不参与结构训练。

中间层:为12×12×4的三维神经元阵列,神经元模型为LIF模型,神经元之间距离的最小单位记为1。在中间层内部无初始连接,只有在开启仿真后,经过输入信号和结构学习算法的共同作用,中间层内部才会不断生长出新的连接。

输出层:共计10个神经元,与图片的10个类别相对应,神经元模型为LIF模型。中间层与输出层之间也无初始连接,在每次仿真中,中间层中激活的神经元会被标记。仿真结束后,将中间层中激活的神经元连接到与输入图片类别对应的输出神经元上。

网络权值方面,输入层到中间层的连接权值与权值学习算法验证实验中相同,运用二分查找法对权值进行初始化;中间层的连接会让同时激活的神经元产生相互刺激,使得这部分神经元更容易激发,因此,这部分连接的权值需要根据实验中神经元的激发状态设计。而中间层到输出层之间权值是一个动态变化的过程,对于连向同一个输出神经元的所有连接,它们权值的总和为一个常数,当连接数量越多时,每条连接的权值就越小;反之,每条连接的权值就越大,权值会在每张图片仿真结束后进行更新。

5.2 结构学习有效性分析

由于结构学习算法处于探索阶段,大规模数据集会增加算法研究过程中的不确定性,因此,本实验仅从MNIST数据集中选取了10张数字图片,其标签值分别为0到9,设计的学习算法流程如下:

结构学习算法流程:

步骤1 加载数据并完成预处理,转换为脉冲信号传入输入层,转步骤2;

步骤2 开启仿真,并记录网络中神经元状态,转步骤3;

步骤3 调用结构学习算法生成中间层的层内连接,并将激活神经元连接至输出神经元,转步骤4;

步骤4 若网络已经收敛,则结束;否则,转步骤5;

步骤5 是否达到最大迭代次数,是,则结束;否,则转步骤1;

在结构学习算法的控制下,中间层中网络连接数量会不断变化,通过对连接数量的记录,可以得到如图10所示的结果。

图10 中间层中网络连接数量统计

从图10中可以看出,随着仿真的进行,中间层网络连接数量不断增长,并在算法的控制下逐渐趋于平缓。这一过程验证了结构学习算法的有效性和合理性,也模拟了生物神经网络在外界刺激下不断生成新连接的机制。当然,目前的算法并不能完全客观完整地反映出生物神经网络的真实生长规律,本文的算法仅仅对此做探索性研究,网络模型和算法也需要后续不断的优化。

5.3 网络性能分析

为了验证结构学习算法生成的网络是否具备自适应特性,本文对已经训练好的网络进行了测试,验证该网络对已经学习过的内容是否能够有效区分。将数字图片再次输入网络,观察输出层神经元的激活情况,结果汇总见表4。

其中,输出层激活神经元列表中,元素值代表输出层神经元标号,与10个手写体数字图片的标签值一一对应。输出层激活神经元列表顺序,表示了输出层神经元的激活顺序,重复出现的元素表示对应的神经元被多次激活。输出层激活神经元列表中,元素出现次数最多的,即为网络最终输出。从识别结果上看出,结构学习算法生成的网络能够对10张图片进行有效区分,验证了结构学习算法的合理性。

表4 结构学习网络功能测试

5.4 输出层神经元膜电分析

结构学习算法具有较强的生物仿生性,本实验对于输出层神经元的膜电位变化情况进行了记录。当输入数字“1”的图片时,网络输出层各个神经元膜电位变化曲线如图11所示。

图11 输出层神经元膜电位响应情况

图11中output-0,output-1……output-9分别表示输出层的10个神经元,从膜电位曲线上看,中间网络的output-1输出神经元有着明显的响应,并且很快达到了激发阈值(-55 mv),但是其余输出神经元在此过程中,并非处于完全静默状态,其膜电位曲线也表现出了相对较低的活跃性。而在生物脑神经网络中,由于神经元之间复杂的连接,某一神经元团的激活往往会通过突触传导到附近的神经元团中,引起附近的神经元团的活跃,这一现象也从侧面反映了本实验中的网络具有更强的生物可解释性。

6 结束语

本文提出的脉冲神经网络权值学习算法能够对脉冲神经网络实现有效的监督式训练,权值学习算法训练出来的脉冲神经网络具备良好的图像识别能力,与传统的神经网络相比,在快速收敛能力和低功耗特性方面具有一定优势。结构学习算法打破了神经网络结构固定的缺陷,能够生成自适应的网络结构,提高了网络结构设计的效率,并且具有更高的生物可解释性。两种脉冲神经网络学习算法,分别从不同方面进行了尝试,各有优缺点。但两种算法都属于脉冲神经网络方面的探索性研究,仍然需要进一步地研究与完善。

猜你喜欢
中间层膜电位网络结构
Zn-15Al-xLa中间层对镁/钢接触反应钎焊接头性能影响
参芪复方对GK大鼠骨骼肌线粒体膜电位及相关促凋亡蛋白的影响研究
pH玻璃电极膜电位的形成及其应用
如何利用合作教学激发“中间层”的活跃
浅谈通信综合营帐数据中间层设计原则与处理流程
基于广义混合图的弱节点对等覆盖网络结构
体系作战信息流转超网络结构优化
基于互信息的贝叶斯网络结构学习
复杂网络结构比对算法研究进展
鱼藤酮诱导PC12细胞凋亡及线粒体膜电位变化