張笑銘,,
(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.