基于PSO算法与Dropout的改进CNN算法

2019-04-02 10:07王金哲王泽儒王红梅
长春工业大学学报 2019年1期
关键词:池化层识别率神经元

王金哲, 王泽儒, 王红梅

(长春工业大学 计算机科学与工程学院, 吉林 长春 130012)

0 引 言

近年来,伴随着互联网技术的飞速发展,人工智能已经应用到生活的不同方面,其中自然语言处理、机器人学、人脸识别、人工神经网络、图像理解和智能搜索等是目前人工智能领域的研究热点。由于卷积神经网络(CNN)可以很好地应用于这些领域,因此,针对CNN性能的改进成为许多学者关注的焦点[1]。CNN通过局部感知与参数共享,有效降低网络复杂度。该设计在针对图像识别、变形、扭曲、倾斜等变形形式具有较高的适应性和优越性[2],通过将图像直接输入,避免了特征提取和图像重建等过程。因而CNN在语音识别、图像分析和文本分类等很多问题中表现出色,而且在很多具体的领域得到了普及应用。

CNN结构特点如下:

1)CNN包含卷积层、池化层、全连接层这三层基本网络结构,卷积层运算后,池化层开始进行,两者是交替进行计算的,同时将特征提取和分类过程相互结合在一起,有效地简化了传统算法中特征提取的步骤;

2)CNN使用局部连接,单个的神经元仅仅和一小部分神经元相连,通过权重共享机制,可以有效地减少训练权重的数目,一定程度上防止过拟合问题;

3)多层感知器包括输入层、隐含层和输出层这三个重要层,多层感知器对于图像平移、缩放、扭曲有良好的鲁棒性。

改进CNN算法[3]通过使用GPU来提升运算速度,但在CPU与GPU之间数据切换和进程的调度可能会出现进程中断的情况;文献[4]对于原有CNN训练时间较长和过拟合等问题提出基于免疫系统改进CNN网络,但是,这种改进在数据集测试仅有81.6%识别率;文献[5]对MLP-CNN这一经典模型进行改进,通过使用梯度下降算法和增加神经元特征数等来提高模型性能,但是这种改进会出现误差收敛缓慢的情况;文献[6]提出在CNN中加入波尔兹曼机制,并进行图像分类,该方法提升了图像分类的准确率,但是对系统内存要求比较高;文献[7]对正则化策略进行微调,以侦听卷积的滤波器和非线性激活函数,将会在一定程度上使得训练的时间有所增加;文献[8]在CNN中引入了双线性插值,可以对图像进行预测和分类,不过针对图片集过拟合现象没有提出切实可行的方案。

CNN算法一般存在以下问题[9]:

1) CNN采用梯度下降算法,在反向传播中的调节网络连接权重的过程中,误差将会缓慢下降,网络的收敛速度会受到不小的影响;

2)Sigmoid激活函数使原来在较大范围内变化的输入数据映射到[0,1]内输出,在数据集的规模逐渐增大时,参数不易得到很好的训练,网络权重不能及时更新,从而减缓收敛的速度;

3)CNN中常采用的weight decay方法与提前停止的方式缓解过拟合问题,不过解决过拟合现象的能力会随着学习层数目的增多逐渐下降。针对上述问题,为了可以让误差反传方法具有可靠的的理论意义和重要的实用价值,采用PSO算法进行优化,提高CNN收敛速度,同时基于Dropout的改进CNN算法在很大程度上能够减少过拟合现象的发生。

1 相关理论

1.1 粒子群算法(PSO算法)[10]

PSO是一种比较经典的群体优化算法,它通过模仿鸟群行为来找寻最优值。PSO算法中每个求解问题的解都作为多维搜寻空间的一个粒子,设定适应值函数,根据单个粒子自身获得的最优解,以及整体群簇所找寻到的最优值,通过不停地改变各粒子的位置和速度,最后通过迭代获得最优解。PSO算法具有搜索速度快、算法易实现、精度较高等特点。基本PSO公式如下:

c2·rand()·(pgj-xij) (1)

1.2卷积神经网络(CNN)

CNN一般由输入层、卷积层、激励层、池化层、全连接层和输出层组成。它通过卷积运算和降采样等方法实现对有用信息的提取[11]。

输入层,将所要用到的数据或者图像进行输入,为方便卷积层运算,需要对输入数据做预处理。

卷积层,卷积层的卷积核主要对输入信息进行特征提取。

激励层,激活函数主要对运算的结果进行平滑处理,同时激活函数可以对网络稀疏化,清除冗余数据,保留数据主要特征。

池化层,整理卷积层输出信息,减少网络计算量,另外对特征进行压缩,提取更为重要的特征,防止过拟合现象。

全连接层,通过特征变换,将有用信息进行整合,对提取结果进行分类和预测等处理。

输出层,将前面运算的所得结果进行输出处理。

2 改进着眼点

2.1 PSO算法在反向传播的改进

2.1.1 CNN 算法前向传播

首先CNN 进行前向传播,包含卷积和池化操作,对于卷积层的计算:

(3)

式中:Mj----输入特征图集;

f()----激活函数,使用Sigmoid函数;

卷积层与池化层进行交替计算,卷积层之后是池化层,对于池化层的计算为:

(4)

输出层得到结果前,在n层的卷积神经中,作为输入样本,用fn表示各层池化的激活函数,w(n)表示每个层的连接权重,这个过程的计算可以表示为:

y=fn(…(f2(f1(x·w1)w2))…)wn(5)

计算出前向传播的结果,和已给出的养殖的标签值作误差计算,误差函数表示为:

(6)

式中:N----CNN输入图像训练样本数;

C----网络输出层神经元数;

yji----第i个样本的第j个输出节点的实际输出值。

2.1.2 CNN算法的后向传播

CNN算法的后向传播是为了在计算期望输出和实际输出的误差后,将需要运算的参数作为PSO算法的粒子,利用式(6)获得粒子的局部最优Pbest和全局最优值Gbest,然后使用式(1)和式(2)来更新粒子。迭代运算后,更新后的粒子是CNN权值,再对CNN网络重新进行前向传播,直至误差阈值收敛到最小范围之内,然后停止算法。

算法的实现过程如下:

输入:m(粒子个数),c1(加速常数),c2(加速常数),w(惯性权重),x(粒子的位置),v(粒子的速度)。

输出:cw[](优化后的权值)。

1)对于群体内的每一个粒子,在CNN前向传播中使用式(5)计算,再由式(6)计算误差。

2)如果已经达到误差阈值的小值,停止算法,如果没有收敛,则执行式(1)与式(2)对粒子进行更新:

①将更新的粒子的信息传回CNN中,同时更新需要训练的权值,再次进行前向传播误差计算;

②回到2)。

2.2 CNN算法设计

2.2.1 CNN结构设计

构建的9层CNN模型如图1所示。

图1 神经网络模型设计

图1由输入层、5个由卷积层和池化层构成的隐含层、全连接层、Dropout层和输出层组成。在这个新模型中,为了改善过拟合问题,将Dropout层添加到全连接层的后面,通过概率p摒弃神经元结点。

2.2.2 基于Dropout防止过拟合问题

为了提升网络的范化能力,将会在CNN网络中增加Dropout层,在网络的训练过程中,对于神经网络中任意的一个神经元,它都是使用相同的概率p将其从网络中临时抛弃,从而减小了网络的大小,其公式为:

(7)

式中:pa----样本a生成1的概率;

Ba----第i类神经元中属于样本a的数量。

文中所提出的改进CNN结构,具体算法如下:

输入:训练集,测试集;

输出:识别结果。

1)对神经网络滤波器进行训练,同时初始化滤波器尺寸像素为P1*P2;

2)对图片集进行训练,将训练集中的图片经过处理,转换成尺寸大小一致的图片,同时把图片读入到数据矩阵P中;

4)使用式(4)中所给的公式对第一层卷积特征矩阵P(1)进行计算;

5)通过调用PSO算法,来对权值wi进行更新,从而获得特征矩阵P(2);

6)通过4)与5)进行第二次卷积计算,这样会得到一个新的特征矩阵P(3);

7)将特征矩阵P(3)作为一个列向量神经元,输入到全连接层,而后将这个输入乘以权重矩阵w,然后添加偏置,对其运用激活函数,从而获得特征向量b1;

8)将全连接层得到的结果作为Dropout层的输入,通过式(7)运算获得神经元在Dropout层中的输出概率,得到特征向量b2;

9)将8)得到的特征向量b2作为输出层的输入,通过输出层Softmax分类器进行分类,最后输出识别结果。

3 实验与分析

3.1 测试环境

为了评估所改进算法的性能,在ubuntu16.04的操作系统中采用Python3语言编程来实现文中所提出PD-CNN算法。测试平台为6台相同配置的电脑,配置为:AMD10CPU@2.5 GHz,GPU为AMD Radeon HD 8670M+AMD Radeon HD 8610G,8.00 GB内存。文中使用的测试数据集包括MNIST手写体数据集与HCL200书写汉字数据集。实验次数为10次。

3.2 比较算法

文中改进算法和WCNN算法、MLP-CNN算法及SVM-ELM算法进行比较。其中WCNN算法为最近邻规则的神经网络模型。为了实现对输入的处理,使用了多个卷积层和池化层,并在连接层和输出结果之间建立了映射关系,最后使用聚类算法对特征分类。算法MLP-CNN主要是增加网络特征数和使用梯度下降算法进行优化,来提高网络模型的识别能力。SVM-ELM是基于支持向量机的优化算法,可以减少隐层节点数,通过SVM优化每个结点的线性决策函数。以上3个算法都是比较经典的CNN改进算法,通过与以上3个CNN改进算法进行测试比较,可以有效地说明文中提出的改进算法在性能上有很大的提高。

3.3 测试结果与分析

针对MNIST训练数据集运行10次,在不同数据规模下各算法的识别结果如图2所示。

图2 各算法针对MNIST数据集的识别结果

由图2可知,PD-CNN算法对于不同的数据规模识别率高于SVM-ELM、MLP-CNN与WCNN算法。数据规模的增长,使得MLP-CNN算法对图片的识别率影响较大,识别性能波动幅度增加。当数据集的规模小于等于3.6×104时,随着数据规模的增大,WCNN算法与PD-CNN算法识别率呈上升趋势,但是,当数据规模大于3.6×104时,识别率有下降趋势,随着数据集的增大,WCNN算法与MLP-CNN算法识别率波动大于PD-CNN算法,说明了PD-CNN算法具有较好的鲁棒性。

对每个测试数据集运行10次,在最小识别率RM、最大识别率RX、平均识别率R与运行时间t进行比较算法性能结果统计。

算法性能统计结果见表1。

表1 算法性能统计结果

通过观察表1可知,在数据集MNIST上,相比较于WCNN、MLP-CNN和SVM-ELM算法,PD-CNN算法在最小识别率RM、最大识别率RX与平均识别率R上最高,表明了文中改进算法的可行性以及正确性。使用PSO算法在梯度下降中训练CNN,在识别精度与收敛速度高于常规的训练方法,通过在模型上添加一层Dropout层,防止可能出现的过拟合问题,同时可以使得CNN的正确率得到较大的提升。最后在运行时间上与另外三个CNN改进算法进行比较,可以看到PD-CNN算法时间小于三种算法的时间,说明PSO算法在反向传播中提高了收敛速度。

4 结 语

针对CNN算法的收敛速度较慢、过拟合等问题,将PSO算法中需要训练的参数作为粒子进行优化,将更新的参数用于CNN算法的前向传播,调整网络连接权矩阵迭代,直到误差收敛,停止算法。同时设计新的神经网络模型,将一层Dropout层添加到输出层与全连接层之间,用于缓解过拟合风险,在识别率上得到了不小的提升,同时具有良好的鲁棒性。最后,通过与经典改进CNN算法WCNN、MLPCNN和SVM-ELM算法在数据集MNIST与HCL200进行实验比较,PD-CNN算法在识别率、收敛速度均高于另外三个算法,证明了改进算法的正确性。

猜你喜欢
池化层识别率神经元
卷积神经网络模型研究分析*
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
听力正常青年人的低通滤波言语测试研究*
基于全卷积神经网络的SAR图像目标分类*
提升高速公路MTC二次抓拍车牌识别率方案研究
跃动的神经元——波兰Brain Embassy联合办公
高速公路机电日常维护中车牌识别率分析系统的应用
ERK1/2介导姜黄素抑制STS诱导神经元毒性损伤的作用