张笑铭,,
(1.中国科学院大学 电子电气与通信工程学院,北京 100049; 2.中国科学院微电子研究所,北京 100029)
随着深度学习技术的发展,分类问题开始采用深度神经网络结构,其中卷积神经网络作为一个重要组成成份,已经应用于计算机视觉等领域。目前,在卷积神经网络的研究领域,有多种网络结构被提出,如LeNet[1]、AlexNet[2]、VGG[3]、GoogLeNet[4]、NIN[5]和ResNet[6]等,虽然其效果相比传统分类算法具有明显的提升,但在对分类准确率有较高要求的场合中,该单一网络结构只有通过加深层数才能实现精度的提升,而加深网络的层数会导致训练过程难以收敛,并产生梯度消失的现象。
为了在现有网络结构下继续提升精度,学者考虑将多种结构的卷积神经网络进行结合,使用Stacking算法[7]将卷积神经网络当作基分类器,然后选择合适的元分类器,最终实现更高的精度。但是,由于卷积神经网络最终的分类类别较多,其中大型数据集有100多个类别,此时结合N个卷积神经网络的Stacking算法,其输入元分类器的向量维度为N×K(K为类别个数),该向量维度导致元分类器难以训练以及其泛化能力的降低。文献[8]提出基于概率的Stacking算法,将所有基分类器的概率输出取平均后作为元分类器的输入。文献[9]提出基于投票的Stacking算法,选择基分类器概率最大的输出作为分类结果,将所有结果相加后输入元分类器。上述算法都基于单个样本的特性,没有考虑整体训练样本的统计特性,因而提升效果有限,甚至在某些数据集下出现效果下降的现象。
针对由基分类器输出的维度过高所导致的元分类器泛化能力下降问题,本文提出适用于卷积神经网络的改进Stacking算法,在类别数较多的分类任务中利用训练样本的统计特性完成中间数据的降维,以实现精度的提升。
设由训练样本组成的数据集D上有N种学习算法,该N种学习算法得到N个分类器,称为基分类器。数据集D中的每个样本经过该N个分类器会输出N个结果,把该N个结果当作一个新的样本,样本标签为数据集D中对应的样本标签,使用新的样本训练一个分类器,该分类器称为元分类器。图1所示为Stacking算法结构框架。使用Stacking算法时通过N个基分类器将数据进行分类,将得到的N个结果组成新的向量再经过元分类器分类后得到最终结果。
图1 Stacking算法结构框架
基于平均后验概率的Stacking算法,其目的是解决由于基分类器个数或任务类别数过多导致的输入元分类器数据维度过高的问题。设有N个基分类器,K个分类类别,x为输入数据,其中第i个基分类器对应的分类结果为Ci(x)=[Pi1,Pi2,…,PiK,],向量中的元素表示每个类别的概率。对所有分类概率求平均,将其作为元分类器的输入,即
[(P11+P21+…+PN1)/N,(P12+P22+…+PN2)/N,…,
(P1K+P2K+…+PNK)/N]
通过该操作,数据从N×K维降为K维,但是,该方法掩盖了每个基分类器的预测结果,因此,在类别数较少的数据集中,该方法的精度往往低于基于分类器输出的Stacking算法。
基于类投票的Stacking算法将每个基分类器中输出概率最大的类设为1,其他设为0,将所有基分类器的结果相加,用其训练元分类器,此时元分类器的输入同样只有K个维度。相比基于平均后验概率的Stacking算法,该算法保留了每个基分类器的预测结果,但是忽略了每个基分类器对其他类的预测情况,因此,该算法对基分类器的选择和数据集的变化较敏感。
卷积神经网络通过不同的卷积核提取图像的局部特征,将该局部特征组合成更高层的全局特征,从而完成图像从局部到整体的映射过程。卷积核特征的提取利用了图像的局部相关性,局部相关性指某像素点的周围点像素值有很大概率是与该点的像素值相同,其中包含了很多冗余信息,而卷积的作用就是过滤掉这些冗余从而得到真正有用的信息。图2所示为卷积神经网络结构,其层类型主要有卷积层、池化层、全连接层等。
图2 卷积神经网络结构
卷积神经网络的初始层用来提取底层特征。随着层数的加深,底层特征组合成具有更高视野的特征,即越深的层其感受野范围越大,直至倒数第2层,该层获得图片的整体抽象特征。倒数第1层是分类器,该层根据前面各层所提取的特征判别图片的类别。
卷积层的作用是提取特征,池化层的作用是扩大局部感受野和减少参数,全连接层的作用是获得整体抽象特征。目前研究中已经提出多种卷积神经网络结构,这些网络结构的不同之处主要在于层的类型以及层与层之间的连接关系。
主成分分析[10-12](Principal Component Analysis,PCA)是一种常用的降维技术,其将数据的坐标轴进行旋转,选择数据方差最大的方向作为第1个新坐标轴,因为方差越大说明信息量越大;选择与第1个坐标轴正交的方向作为第2个坐标轴,该方向的剩余信息量最大;选择和前2个坐标轴都相交的方向作为第3个坐标轴。然后,按照上述方法依次选择其余坐标轴。选择所需数量的坐标轴后,即完成了数据从原始空间到降维后空间的变换。其中,数据方差最大的方向可以通过计算数据的协方差矩阵来获得。对协方差矩阵进行特征值分解,选择最大特征值对应的特征向量作为第1个新坐标轴的方向,选择次大的特征值对应的特征向量作为第2个新坐标轴的方向,……,依此类推,直至完成最后一个坐标轴的选择。
本文将卷积神经网络作为基分类器,结合主成份分析方法,提出一种改进的Stacking算法:PCA-Stacking算法。根据基分类器具体类型的不同,采用2种组合方式:一种是网络结构相同但构成基分类器的卷积神经网络层数不同,如图3所示;另一种是构成基分类器的卷积神经网络结构完全不同,如图4所示。
图3 同类型网络结构的PCA-Stacking算法结构框架
图4 不同类型网络结构的PCA-Stacking算法结构框架
多个卷积神经网络对每个类别的分类概率之间相互关联,而PCA通过消除数据之间的相关性来达到降维的目的。假设数据集中一共有K个类别,对于基分类器的输出也只有K个维度是不相关的,因此,PCA保留的特征向量个数为K。
元分类器选择逻辑回归[13]算法,同时为了满足多分类任务的要求,其训练多个逻辑回归模型,每个模型只对一个类别进行分类,元分类器训练过程中参数的更新选择随机梯度下降法[14-15]。深度学习的样本数目较大,为了加快训练的收敛速度,并且要逼近全局最优,每次只使用一个样本进行参数的更新。
元分类器的训练过程如下:
步骤1使用数据集D训练多个卷积神经网络,得到在数据集D上的N个模型,该N个模型对数据集D进行分类,并将分类结果组成新的样本集M。表达式如下:D={(xi,yi),i=1,2,…,m}
model={fj(x),j=1,2,…,N}
M={((f1(xi),f2(xi),…,fN(xi)),yi},i=1,2,…,m
步骤2将样本集M组合成矩阵X的形式,X的每一行为一个样本向量,列数等于样本个数。按式(1)计算样本集M的协方差矩阵C。
(1)
步骤3计算协方差矩阵C的特征值和特征向量,将特征值从大到小进行排序,保留前K(K为数据集类别个数)个特征值和其对应的特征向量。该K个特征向量组合成转换矩阵T。
步骤4对样本集M中的每个样本使用转换矩阵T进行降维,得到降维后的样本集S,表达式如下:
S={((Si1,Si2,…,SiK),yi),i=1,2,…,m}
(2)
步骤5用样本集S训练元分类器,其中通过交叉验证法选择合适的元分类器参数。
数据经过基分类器的分类后,测试过程将该分类结果组合成新的样本集,训练过程的转换矩阵T对该样本集进行降维,降维数据经过元分类器的分类后,得到最终测试结果。
PCA对数据进行降维时会伴有信息量的损失,用保留特征值占所有特征值的比例(方差保留百分比)衡量该损失的大小,表达式如下:
(3)
r越大表示保留的信息量越大,即损失越小。
本文在CIFAR-10和CIFAR-100 2个数据集上进行验证实验。CIFAR-10数据集共有10个类别,分为训练集和测试集,训练集中每个类别有5 000张图片,测试集中每个类别有1 000张图片。CIFAR-100数据集共有100个类别,训练集中每个类别有500张图片,测试集中每个类别有100张图片。记录方差保留百分比r随特征值保留个数的变化情况,实验结果如图5所示。从图5中可以看出,在同类型网络结构中,当特征值保留个数与数据集类别数相同时,在CIFAR-10数据集上保留了99.9%的方差,在CIFAR-100数据集上保留了97.6%的方差;在不同类型的网络结构中,当特征值保留个数与数据集类别数相同时,在CIFAR-10数据集上保留了99.8%的方差,在CIFAR-100数据集上保留了96.8%的方差。通过图5还可以看出,继续增加特征值保留个数时,方差保留百分比的增加有限,因此,当特征值的保留个数等于类别数时,可以在实现数据压缩的同时保留足够的信息量。
图5 方差保留百分比与特征值保留个数的关系
使用Caffe深度学习框架测试结构为ResNet、VGG和NIN的卷积神经网络,在CIFAR-10和CIFAR-100数据集上进行分类精度实验。然后,将所得到的模型作为基分类器,实现基于分类器输出(Stacking)、基于平均后验概率(Astacking)和基于类投票(Vstacking)的对比算法,并与本文算法(PCA-Stacking)进行比较。
3.2.1 同类型网络
本文实验中同类型网络选择ResNet结构,训练层数分别为20、32、44、56及110的模型,精度测试结果如表1所示。
表1 不同层数结构分类精度结果 %
从表1中可以看出,随着网络层数的加深,分类精度逐渐提高,但精度提升的难度越来越大。在CIFAR-10数据集中,110层的ResNet比56层的ResNet分类精度提升了0.36%。在CIFAR-100数据集中,110层的ResNet比56层的ResNet分类精度提升了1.77%。
结合多个网络时不同算法的分类精度对比结果如表2所示。
表2 同类型网络不同算法分类精度对比 %
从表2可以看出,在CIFAR-10和CIFAR-100数据集上,所有算法的分类精度都高于单一网络结构,其中,本文算法在CIFAR-10数据集上比单一网络结构最高精度提升了1.46%,在CIFAR-100数据集上比单一网络结构最高精度提升了4.92%,同时,该算法的分类精度也高于其他对比算法。
3.2.2 不同类型网络
不同类型网络选择20层的ResNet、16层的VGG和3层的NIN进行实验,精度测试结果如表3所示。
表3 不同网络结构分类精度对比结果 %
从表3可以看出,不同网络结构的分类精度比较接近,该设计消除了单个网络精度过低或过高对算法效果造成的影响,结合多个不同结构的不同算法分类精度对比结果如表4所示。
表4 结合不同结构的不同算法分类精度对比 %
从表4可以看出,在不同网络结构下,Stacking算法分类精度低于单一网络结构,原因在于不同网络结构下,各个网络之间的相关性较弱,造成元分类器泛化能力下降,因此,其分类精度低于单一网络结构。本文PCA-Stacking算法使用了样本的统计特性,因此,其分类精度比较稳定,在CIFAR-10数据集上比单一网络结构最高精度提升了1.54%,在CIFAR-100数据集上比单一网络结构最高精度提升了4.72%。
本文提出一种适用于卷积神经网络的改进Stacking算法,该算法使用PCA对多个卷积神经网络的分类结果进行降维,将降维后的数据输入元分类器。实验结果表明,与其他Stacking算法相比,该算法利用了样本的统计特性,提升了分类精度,且在不同数据集下精度的提升较稳定。下一步将研究分类精度与卷积神经网络组合方式的关系,以及元分类器的类型对该算法的影响。
[1] LECUN Y,BOSER B E,DENKER J S.Backpropagation applied to handwritten zip code recognition[J].Neural Computation,1989,1(4):541-551.
[2] KRIZHEVSKY A,SUTSKEVER I,HINTON G E.ImageNet classification with deep convolutional neural networks[C]//Proceedings of the 25th International Conference on Neural Information Processing Systems.[S.l.]:Curran Associates,Inc.,2012:1097-1105.
[3] SIMONYAN K,ZISSERMAN A.Very deep convolutional networks for large-scale image recognition[EB/OL].[2017-03-05].http://www.robots.ox.ac.uk:5000/~vgg/publications/2015/Simonyan15/simonyan15.pdf.
[4] SZEGEDY C,LIU W,JIA Y.Going deeper with convolu-tions[C]//Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition.Washington D.C.,USA:IEEE Press,2015:1-9.
[5] LIN M,CHEN Q,YAN S.Network in network[EB/OL].[2017-03-15].https://arxiv.org/pdf/1312.4400.pdf.
[6] HE K,ZHANG X,REN S.Deep residual learning for image recognition[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition.Washington D.C.,USA:IEEE Press,2016:770-778.
[7] WOLPERT D.Stacked generalization[J].Neural Networks,1992,5(2):241-260.
[8] TSOUMAKAS G,VLAHAVAS I.Distributed data mining of large classifier ensembles[C]//Proceedings of Companion Volume of the 2nd Hellenic Conference on Artificial Intelligence.Berlin,Germany:Springer,2002:249-256.
[9] 韦艳艳,李陶深.一种基于投票的Stacking方法[J].计算机工程,2006,32(7):199-201.
[10] MACKIEWICZ A,RATAJCZAK W.Principal components analysis(PCA)[J].Computers and Geosciences,1993,19(3):303-342.
[11] 刘丽敏,樊晓平,廖志芳.基于迹范数的L1-PCA算法[J].计算机工程,2013,39(4):199-202.
[12] ZOU H,HASTIE T,TIBSHIRANI R.Sparse principal component analysis[J].Journal of Computational and Graphical Statistics,2006,15(2):265-286.
[13] KING G,ZENG L.Logistic regression in rare events data[J].Political Analysis,2001,9(2):137-163.
[14] ZHANG T.Solving large scale linear prediction problems using stochastic gradient descent algorithms[C]//Proceedings of the 21st International Conference on Machine Learning.New York,USA:ACM Press,2004:919-926.
[15] RECHT B,RE C,WRIGHT S,et al.Hogwild:a lock-free approach to parallelizing stochastic gradient descent[C]//Proceedings of the 24th International Conference on Neural Information Processing Systems.New York,USA:ACM Press,2011:693-701.