张军军
(西安工程大学计算机科学学院 西安 710048)
了解大脑如何有效地处理信息是现代神经科学研究的关键问题之一。由于组成大脑的神经元数目庞大,连接方式多样,其生理机制复杂。近年来,随着信息科学的飞速发展,计算机模拟大脑信息处理机制研究逐渐成为可能。如何有效地认知大脑处理信息的机理是神经科学与信息科学交叉研究的一个重要方向,也是类脑计算领域研究的关键问题之一。
脉冲神经网络(Spiking Neural Network,SNN)是目前最具有神经形态的网络[1],被称为第三代神经网络[2]。受神经科学的启发,SNN具有接近生物神经系统的神经元模型,其特点是通过脉冲序列放电时间来进行信息传递[3],SNN提供了稀疏且强大的计算能力[4~5],并实现了超低功耗事件驱动处理的神经形态硬件[6]。目前,最常用的脉冲神经元模型主要是漏积分点火神经元模型(Leaky Intergrate and Fire Model,LIF)[7],它简化了霍奇金赫胥黎模型(Hodgkin Huxley Model,HH)[8],LIF通过对细胞膜电位随时间和外部电流输入的变化进行建模来描述神经元的复杂动态变化,LIF模型简单但不够精确仿真神经元的特性。HH模型具有高度仿生性,但模型复杂。2003年,Izhikevich提出了Izhikevich模型[9],它简化了HH模型,同时又具有较高的仿生性。常用的SNN的学习算法主要有基于梯度下降的监督学习算法和基于突触可塑性的无监督学习算法。基于梯度下降的学习算法主要以SpikeProp[10]为主,它首次将反向传播推广到SNN,但只能训练单层网络,随后,众多学者对SpikeProp[10]进行改进,如Xin[11]提出了带动量的梯度下降方 法。Kennoch[12]提出了RProp和Quick-Prop算法,旨在加速网络学习算法收敛速度。Booij[13]提出了Muitl-SpikeProp在网络学习性能方面也得到了提升。基于突触可塑性的无监督学习算法主要有脉冲时序依赖可塑性(Spike-Timing-Dependent Plasticity,STDP)[14]和Ponulak等[15]提出的远程监督学习算法(Remote supervised method,ReSuMe)。这两种算法都是基于Hebb学习规则[16]对网络权值进行调节。
近年来,随着深度学习的进一步发展,在网络结构中加入一些重要的模块进一步提升网络的学习性能逐渐引起了学者们的关注。其中,注意力机制(Attention Mechanism)作为一个模块,加入网络模型构建过程中已成为关注的焦点。2016年,Liu等[17]提出了一种基于强化学习的全卷积注意定位网络,用于自适应选择多任务驱动的视觉注意区域。Wang等[18]提出了(Ranking Attention Network,RANet)网络,将注意力机制引入了残差网络中。Hu等[19]提出了(Squeeze-and-Excitation Networks,SENet)网络,获得了ImageNet 2017竞赛图像分类任务的冠军。随后,Woo等[20]提出了卷积块注意力模 块(Convolutional Block Attention Module,CBAM),设计了一种学习通道和空间位置重要性的方法。
为了克服传统人工神经网络学习效率低,网络训练耗时长等问题,本文融合了脉冲神经网络和卷积注意力模块构建了一种基于注意力机制的卷积脉冲神经网络(AMCSNN)用于目标识别。本文贡献总结如下:
1)将注意力机制应用于脉冲神经网络。结合脉冲神经网络和卷积注意力设计新的AMCSNN,在MNIST和Caltech数据集上取得了较好的识别效果。
2)设计了高斯差分时序编码方法。所提出的方法能够对高斯差分滤波器提取的视觉特征进行脉冲时序编码,从而在AMCSNN中实现快速准确的信息传递。
3)采用无监督的生物可塑性算法加监督学习方法来进行网络的学习和分类,在MNIST和Caltech数据集上的仿真实验表明,提出AMCSNN网络具有较强的生物合理性优势,在保证识别率的同时,具有较高的学习效率和较短的网络训练耗时。
脉冲神经元的状态主要受膜电位和阈值电位的控制,而膜电位主要由来自上一层神经元的突触后电位决定,突触后电位分为兴奋性电位和抑制性电位,分别使神经元的膜电位升高或降低[21]。本文主要采用LIF神经元模型。
LIF神经元模型是一个线性微分方程,如式(1)所示。
其中,Vm(t)表示神经元的膜电位,Vrest是静息电位,时间常数τm是膜电阻Rm和膜电容Cm的乘积,I(t)是突触后神经元的输入电流。
在LIF模型中,当突触后神经元接收到突触前神经元的脉冲信号时,其膜电位会不断的累积,当膜电位达到阈值电位时,则会发出一个脉冲信号,之后神经元进入不应期,膜电位会被重置为静息电位。
本文使用无监督的STDP学习算法来进行权重的更新,学习是逐层完成的。STDP是基于突触前和突触后的脉冲发放时间顺序来进行的,它是一种无监督的学习规则。STDP的规则是:如果突触前神经元比突触后神经元先受到刺激,则会引起突触的长时程增强,即两个神经元突触之间的连接权值将增大,否则会引起突触的长时程抑制,即两个神经元突触之间的连接权值将减小。我们使用的STDP如式(2)所示。
其中,i和j分别表示突触后和突触前神经元下标,ti和tj是相应的脉冲发放时间,ΔWij是连接两个神经元的突触权重变化量,a+和a-是突触缩放权重变化的大小,即学习率,乘法项(Wij-WLB)(WUP-Wij)是一个稳定项,当突触权重接近于较低的权重下限WLB和较高的权重上限WUP时,它会减慢权重变化的速度。
AMCSNN网络结构如图1所示,从上到下依次为高斯差分时序编码层、卷积层1(C1)、CBAM层1、STDP层1、池化层1(S1)、卷积层2(C2)、CBAM层2、STDP层2、池化层2(S2),最后通过支持向量机(Support Vector Machine,SVM)来完成目标分类。编码层主要进行简单的图像预处理和像素编码,卷积层主要进行特征提取,CBAM层从通道和空间两个维度实现卷积层的特征输出,得到更高维度的特征。STDP层根据神经元输入的脉冲时序自适应调整连接权重,通过自适应学习方式获得网络的共享权值。池化层主要用来降维,以减少信息的冗余。
图1 AMCSNN网络结构
提出的AMCSNN中设计了高斯差分时序编码层,旨在将目标的视觉特征编码为脉冲序列。
本文采用时间步长来模拟神经元的首个脉冲时间,因为每次刺激神经元最多发出一个脉冲,按时间步长足以记录神经元的首个脉冲时间。
为了方便描述,本文假设一个刺激由特征图F表示,包含H×W个神经元网格,设Tmax是总的时间步长,Tf,r,c表示特征图f在(r,c)位置的脉冲时间,其中,0≤f<F,0≤r<H,0≤c<W,Tf,r,c∈{0,1,2,…,Tmax-1}U{∞},∞表示没有脉冲发射。最后产生大小为Tmax×F×H×W的脉冲波张量为S,表示Tmax个时间步长产生的脉冲序列,如式(3)所示。
高斯差分时序编码步骤如下:
步骤1首先判断图像是否为灰度图像,是转步骤3,否转步骤2。
步骤2将输入图像转为灰度图像。
步骤3将图像转换为张量格式,方便数据处理。
步骤4增加时间维度,得到四维张量。
步骤5构造高斯差分函数,两个二维高斯核函数的核大小和标准差分别为(7,1,2)和(7,2,1),填充为3,将步骤4得到的四维张量与高斯差分核函数卷积,结果记为out,同时设定阈值为50,将out中小于阈值50的像素值设为0,并输出out。
步骤6将out执行归一化操作。归一化半径r设为8,采用二维卷积计算每个区域(大小为2r+1)的图像强度均值,并使用该区域中每个像素点的灰度值除以区域均值完成out的局部归一化。
步骤7将归一化后的四维张量转化为脉冲波张量。首先统计图像强度不为0的像素点的个数记为cnt,输入的总的时间步长记为Tmax,用cnt除以Tmax得到每个时间步长的神经元网格,然后降序排序每个时间步长的神经元网格,分割排序后的神经元网格,得到每个网格的像素值和其索引,返回每个时间步长的网格值,取其符号值(正的为1,负的为0)作为脉冲,得到最后的脉冲波张量即脉冲序列。
脉冲卷积层的输入对象为高斯差分时序编码层得到的脉冲波张量即神经元的放电时间脉冲序列。一个脉冲卷积运算由式(4)表示。
其中,Ti表示神经元i的放电时间序列集合,wij表示突触前神经元j和突触后神经元i的突触权重,uij表示神经元i的突触后膜电位,tf j表示神经元j在f时刻的放电时间,ν为阈值电位,本文设置静息电位为0。整个公式表示的是对突触后电位的加权和,当突触后电位的加权和超过阈值电位时,就会在时间t产生一个脉冲,之后回到静息电位。
脉冲卷积采用突触后膜电位函数uij来进行脉冲放电激活,由式(5)表示。
其中,H(*)是赫维赛德阶跃函数,q是注入突触后神经元i的总电荷,tjf表示神经元j在f时刻的放电时间,τs是突触电流时间延迟常数。
本文加入的注意力模型CBAM如图2所示,是一种结合了空间和通道的注意力机制模块,它常被加入到一些传统网络结构中来提高网络模型的分类效果。
图2 CBAM模块的整体计算过程
对来自于卷积层的特征图F应用CBAM,计算如式(6)所示。
其中,MC表示在一维通道上的注意力提取操作,MS表示在二维空间上的注意力提取操作,⊗表示卷积操作,F′表示通道注意力的输出,F′表示最终的注意力输出。
对于通道和空间注意力的计算如式(7)所示。
其中,σ表示Sigmoid函数,AνgPool和MaxPool分别表示平均池化和最大池化。MLP表示多层感知器。
本文实验运行平台的配置以及Python和Pytorch的版本如下:运行平台处理器为Intel(R)Xeon(R)CPU E5-2630 v4@2.20GHz,系统为Ubuntu 16.04.6 LTS(64位),内核版本为4.4.0,Python版本为3.6.5,Pytorch版本为1.2。为了保证在短时间内完成模型训练,模型加速器采用了GPU。为了模拟我们的AMCSNN,使用了SpykeTorch模拟器[22]。
为了验证AMCSNN网络的有效性,在两个公开数据集MNIST数据集和Caltech数据集上进行了实验。此外,进一步在ETH-80面向图像集的数据集上验证了AMCSNN分类任务的有效性。
MNIST数据集是验证SNN网络有效性的首选数据集。本文选取数据集的60000张图片作为训练集,10000张图片作为测试集。
Caltech101数据集是常用的计算机视觉数据集,其中包含101个类别图片,每类不超过80张图片。本文选取Caltech(FACE/MOTORBIKE)两类物体进行实验,首先对Caltech(FACE/MOTORBIKE)数据集随机划分,其中每类训练集含随机选择的200张图片,其余构成测试集。
在整个网络的训练中,只有两个卷积层需要通过学习来更新权重,特征的提取和分类是完全分开的,网络各层的具体参数如表1所示。本文对两个卷积层均做了500次的权重更新。
表1 网络各层的参数
说明:表1中没有STDP层,是因为STDP主要作用于卷积层,故其参数学习率在卷积层给出。脉冲发放的总时间步长为15,在MNIST数据集上SVM的输出为10,在Caltech数据集上SVM的输出为2,在Caltech数据集上SVM的输出为8,SVM的惩罚参数为2.4。
为定量分析和评估AMCSNN网络的分类效果,本文将AMCSNN与卷积脉冲神经网络(Convolutional Spiking Neural Network,CSNN)和卷积神经网络(Convolutional Neural Network,CNN)在MNIST和Caltech数据集上分别进行了实验。本文采用分类准确率来评价网络的分类效果,其计算如式(8)所示。
其中,TP(True Positive)即正例识别正确的个数,FP(False Negative)即非正例被错误识别为正例的个数,TN(True Negative)即非正例识别正确的个数,FN(False Positive)即正例被错误识别为非正例的个数。
此外,采用网络训练耗时来评价网络的计算效率,综合考虑网络分类准确率和网络训练耗时来评判网络有效性。即分类准确率高且耗时少的网络越有效。
本文提出的AMCSNN网络与CSNN以及CNN在MNIST和Caltech数据集上的网络识别准确率如表2所示。
表2 不同网络在MNIST和Caltech(2类)以及ETH-80数据集上的分类准确率
从表2可以看出,在MNIST和Caltech数据集上,AMCSNN网络的识别准确率分别为98.42%和99.3%,与使用相同训练方式和学习规则的CSNN相比,AMCSNN的识别率更高,与基于反向传播训练的CNN网络相比,针对MNIST数据集,提出的AMCSNN识别准确率仅相差0.24%,针对Caltech数据集仅相差0.22%。
此外,图3可视化了AMCSNN在MNIST数据集上的混淆矩阵,可以看到,AMSCNN除了对类别“3”和“8”的分类准确率在97%以外,其他8种类别的分类准确率均在98%以上,特别是对类别“1”和“4”以及“6”的分类准确率均达到了99%以上,这充分表明了AMSCNN网络具有良好的分类效果。
图3 AMCSNN在MNIST上的混淆矩阵
图4采用ROC曲线对使用同样训练方式和学习规则的AMCSNN和CSNN在Caltech数据集上进行了比较。根据ROC曲线,由图4可以看到,AMCSNN在Caltech上的网络分类效果要优于CSNN。
图4 AMCSNN与CSNN在Caltech(2类)上的ROC曲线
图5比较了3种网络的训练耗时。可以看到,AMCSNN相比于CSNN和CNN网络耗时较少,一方面得益于SNN的稀疏性和强大的计算能力[4~5],使得网络功耗比较低,另一方面是因为轻量级的CBAM模块对平均池化和最大池化的综合应用,有助于计算性能的提升[20]。因此,CBAM模块的加入看似增加了网络的计算量,实则对网络计算性能的提升裨益良多。通过上述实验结果,综合考虑网络分类准确率和平均训练耗时,可以看到AMCSNN不仅具有较强的生物合理性优势,而且在保证准确率的同时,具有较高的学习效率和较短的网络耗时,充分证明了AMCSNN网络的有效性。
图5 MNIST和Caltech(2类)上的网络训练耗时比较
本文提出了一种基于注意力机制的卷积脉冲神经网络(AMCSNN)用于目标识别。该网络加入了轻量级的CBAM模块,融合了脉冲神经网络和卷积神经网络的优势,有效解决了传统人工神经网络因采用反向传播导致学习效率低、网络训练耗时长等问题。本文采用无监督的STDP学习算法分层训练网络权重,最后使用支持向量机分类。实验表明,该网络具有较强的生物合理性优势,在保证识别率的同时,具有较高的学习效率和较短的网络训练耗时。今后将考虑设计合理的脉冲编码方式,继续优化网络。