張笑銘,,
(1.中國(guó)科學(xué)院大學(xué) 電子電氣與通信工程學(xué)院,北京 100049; 2.中國(guó)科學(xué)院微電子研究所,北京 100029)
隨著深度學(xué)習(xí)技術(shù)的發(fā)展,分類問(wèn)題開(kāi)始采用深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其中卷積神經(jīng)網(wǎng)絡(luò)作為一個(gè)重要組成成份,已經(jīng)應(yīng)用于計(jì)算機(jī)視覺(jué)等領(lǐng)域。目前,在卷積神經(jīng)網(wǎng)絡(luò)的研究領(lǐng)域,有多種網(wǎng)絡(luò)結(jié)構(gòu)被提出,如LeNet[1]、AlexNet[2]、VGG[3]、GoogLeNet[4]、NIN[5]和ResNet[6]等,雖然其效果相比傳統(tǒng)分類算法具有明顯的提升,但在對(duì)分類準(zhǔn)確率有較高要求的場(chǎng)合中,該單一網(wǎng)絡(luò)結(jié)構(gòu)只有通過(guò)加深層數(shù)才能實(shí)現(xiàn)精度的提升,而加深網(wǎng)絡(luò)的層數(shù)會(huì)導(dǎo)致訓(xùn)練過(guò)程難以收斂,并產(chǎn)生梯度消失的現(xiàn)象。
為了在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)下繼續(xù)提升精度,學(xué)者考慮將多種結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行結(jié)合,使用Stacking算法[7]將卷積神經(jīng)網(wǎng)絡(luò)當(dāng)作基分類器,然后選擇合適的元分類器,最終實(shí)現(xiàn)更高的精度。但是,由于卷積神經(jīng)網(wǎng)絡(luò)最終的分類類別較多,其中大型數(shù)據(jù)集有100多個(gè)類別,此時(shí)結(jié)合N個(gè)卷積神經(jīng)網(wǎng)絡(luò)的Stacking算法,其輸入元分類器的向量維度為N×K(K為類別個(gè)數(shù)),該向量維度導(dǎo)致元分類器難以訓(xùn)練以及其泛化能力的降低。文獻(xiàn)[8]提出基于概率的Stacking算法,將所有基分類器的概率輸出取平均后作為元分類器的輸入。文獻(xiàn)[9]提出基于投票的Stacking算法,選擇基分類器概率最大的輸出作為分類結(jié)果,將所有結(jié)果相加后輸入元分類器。上述算法都基于單個(gè)樣本的特性,沒(méi)有考慮整體訓(xùn)練樣本的統(tǒng)計(jì)特性,因而提升效果有限,甚至在某些數(shù)據(jù)集下出現(xiàn)效果下降的現(xiàn)象。
針對(duì)由基分類器輸出的維度過(guò)高所導(dǎo)致的元分類器泛化能力下降問(wèn)題,本文提出適用于卷積神經(jīng)網(wǎng)絡(luò)的改進(jìn)Stacking算法,在類別數(shù)較多的分類任務(wù)中利用訓(xùn)練樣本的統(tǒng)計(jì)特性完成中間數(shù)據(jù)的降維,以實(shí)現(xiàn)精度的提升。
設(shè)由訓(xùn)練樣本組成的數(shù)據(jù)集D上有N種學(xué)習(xí)算法,該N種學(xué)習(xí)算法得到N個(gè)分類器,稱為基分類器。數(shù)據(jù)集D中的每個(gè)樣本經(jīng)過(guò)該N個(gè)分類器會(huì)輸出N個(gè)結(jié)果,把該N個(gè)結(jié)果當(dāng)作一個(gè)新的樣本,樣本標(biāo)簽為數(shù)據(jù)集D中對(duì)應(yīng)的樣本標(biāo)簽,使用新的樣本訓(xùn)練一個(gè)分類器,該分類器稱為元分類器。圖1所示為Stacking算法結(jié)構(gòu)框架。使用Stacking算法時(shí)通過(guò)N個(gè)基分類器將數(shù)據(jù)進(jìn)行分類,將得到的N個(gè)結(jié)果組成新的向量再經(jīng)過(guò)元分類器分類后得到最終結(jié)果。
圖1 Stacking算法結(jié)構(gòu)框架
基于平均后驗(yàn)概率的Stacking算法,其目的是解決由于基分類器個(gè)數(shù)或任務(wù)類別數(shù)過(guò)多導(dǎo)致的輸入元分類器數(shù)據(jù)維度過(guò)高的問(wèn)題。設(shè)有N個(gè)基分類器,K個(gè)分類類別,x為輸入數(shù)據(jù),其中第i個(gè)基分類器對(duì)應(yīng)的分類結(jié)果為Ci(x)=[Pi1,Pi2,…,PiK,],向量中的元素表示每個(gè)類別的概率。對(duì)所有分類概率求平均,將其作為元分類器的輸入,即
[(P11+P21+…+PN1)/N,(P12+P22+…+PN2)/N,…,
(P1K+P2K+…+PNK)/N]
通過(guò)該操作,數(shù)據(jù)從N×K維降為K維,但是,該方法掩蓋了每個(gè)基分類器的預(yù)測(cè)結(jié)果,因此,在類別數(shù)較少的數(shù)據(jù)集中,該方法的精度往往低于基于分類器輸出的Stacking算法。
基于類投票的Stacking算法將每個(gè)基分類器中輸出概率最大的類設(shè)為1,其他設(shè)為0,將所有基分類器的結(jié)果相加,用其訓(xùn)練元分類器,此時(shí)元分類器的輸入同樣只有K個(gè)維度。相比基于平均后驗(yàn)概率的Stacking算法,該算法保留了每個(gè)基分類器的預(yù)測(cè)結(jié)果,但是忽略了每個(gè)基分類器對(duì)其他類的預(yù)測(cè)情況,因此,該算法對(duì)基分類器的選擇和數(shù)據(jù)集的變化較敏感。
卷積神經(jīng)網(wǎng)絡(luò)通過(guò)不同的卷積核提取圖像的局部特征,將該局部特征組合成更高層的全局特征,從而完成圖像從局部到整體的映射過(guò)程。卷積核特征的提取利用了圖像的局部相關(guān)性,局部相關(guān)性指某像素點(diǎn)的周圍點(diǎn)像素值有很大概率是與該點(diǎn)的像素值相同,其中包含了很多冗余信息,而卷積的作用就是過(guò)濾掉這些冗余從而得到真正有用的信息。圖2所示為卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其層類型主要有卷積層、池化層、全連接層等。
圖2 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)的初始層用來(lái)提取底層特征。隨著層數(shù)的加深,底層特征組合成具有更高視野的特征,即越深的層其感受野范圍越大,直至倒數(shù)第2層,該層獲得圖片的整體抽象特征。倒數(shù)第1層是分類器,該層根據(jù)前面各層所提取的特征判別圖片的類別。
卷積層的作用是提取特征,池化層的作用是擴(kuò)大局部感受野和減少參數(shù),全連接層的作用是獲得整體抽象特征。目前研究中已經(jīng)提出多種卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),這些網(wǎng)絡(luò)結(jié)構(gòu)的不同之處主要在于層的類型以及層與層之間的連接關(guān)系。
主成分分析[10-12](Principal Component Analysis,PCA)是一種常用的降維技術(shù),其將數(shù)據(jù)的坐標(biāo)軸進(jìn)行旋轉(zhuǎn),選擇數(shù)據(jù)方差最大的方向作為第1個(gè)新坐標(biāo)軸,因?yàn)榉讲钤酱笳f(shuō)明信息量越大;選擇與第1個(gè)坐標(biāo)軸正交的方向作為第2個(gè)坐標(biāo)軸,該方向的剩余信息量最大;選擇和前2個(gè)坐標(biāo)軸都相交的方向作為第3個(gè)坐標(biāo)軸。然后,按照上述方法依次選擇其余坐標(biāo)軸。選擇所需數(shù)量的坐標(biāo)軸后,即完成了數(shù)據(jù)從原始空間到降維后空間的變換。其中,數(shù)據(jù)方差最大的方向可以通過(guò)計(jì)算數(shù)據(jù)的協(xié)方差矩陣來(lái)獲得。對(duì)協(xié)方差矩陣進(jìn)行特征值分解,選擇最大特征值對(duì)應(yīng)的特征向量作為第1個(gè)新坐標(biāo)軸的方向,選擇次大的特征值對(duì)應(yīng)的特征向量作為第2個(gè)新坐標(biāo)軸的方向,……,依此類推,直至完成最后一個(gè)坐標(biāo)軸的選擇。
本文將卷積神經(jīng)網(wǎng)絡(luò)作為基分類器,結(jié)合主成份分析方法,提出一種改進(jìn)的Stacking算法:PCA-Stacking算法。根據(jù)基分類器具體類型的不同,采用2種組合方式:一種是網(wǎng)絡(luò)結(jié)構(gòu)相同但構(gòu)成基分類器的卷積神經(jīng)網(wǎng)絡(luò)層數(shù)不同,如圖3所示;另一種是構(gòu)成基分類器的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)完全不同,如圖4所示。
圖3 同類型網(wǎng)絡(luò)結(jié)構(gòu)的PCA-Stacking算法結(jié)構(gòu)框架
圖4 不同類型網(wǎng)絡(luò)結(jié)構(gòu)的PCA-Stacking算法結(jié)構(gòu)框架
多個(gè)卷積神經(jīng)網(wǎng)絡(luò)對(duì)每個(gè)類別的分類概率之間相互關(guān)聯(lián),而PCA通過(guò)消除數(shù)據(jù)之間的相關(guān)性來(lái)達(dá)到降維的目的。假設(shè)數(shù)據(jù)集中一共有K個(gè)類別,對(duì)于基分類器的輸出也只有K個(gè)維度是不相關(guān)的,因此,PCA保留的特征向量個(gè)數(shù)為K。
元分類器選擇邏輯回歸[13]算法,同時(shí)為了滿足多分類任務(wù)的要求,其訓(xùn)練多個(gè)邏輯回歸模型,每個(gè)模型只對(duì)一個(gè)類別進(jìn)行分類,元分類器訓(xùn)練過(guò)程中參數(shù)的更新選擇隨機(jī)梯度下降法[14-15]。深度學(xué)習(xí)的樣本數(shù)目較大,為了加快訓(xùn)練的收斂速度,并且要逼近全局最優(yōu),每次只使用一個(gè)樣本進(jìn)行參數(shù)的更新。
元分類器的訓(xùn)練過(guò)程如下:
步驟1使用數(shù)據(jù)集D訓(xùn)練多個(gè)卷積神經(jīng)網(wǎng)絡(luò),得到在數(shù)據(jù)集D上的N個(gè)模型,該N個(gè)模型對(duì)數(shù)據(jù)集D進(jìn)行分類,并將分類結(jié)果組成新的樣本集M。表達(dá)式如下: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的每一行為一個(gè)樣本向量,列數(shù)等于樣本個(gè)數(shù)。按式(1)計(jì)算樣本集M的協(xié)方差矩陣C。
(1)
步驟3計(jì)算協(xié)方差矩陣C的特征值和特征向量,將特征值從大到小進(jìn)行排序,保留前K(K為數(shù)據(jù)集類別個(gè)數(shù))個(gè)特征值和其對(duì)應(yīng)的特征向量。該K個(gè)特征向量組合成轉(zhuǎn)換矩陣T。
步驟4對(duì)樣本集M中的每個(gè)樣本使用轉(zhuǎn)換矩陣T進(jìn)行降維,得到降維后的樣本集S,表達(dá)式如下:
S={((Si1,Si2,…,SiK),yi),i=1,2,…,m}
(2)
步驟5用樣本集S訓(xùn)練元分類器,其中通過(guò)交叉驗(yàn)證法選擇合適的元分類器參數(shù)。
數(shù)據(jù)經(jīng)過(guò)基分類器的分類后,測(cè)試過(guò)程將該分類結(jié)果組合成新的樣本集,訓(xùn)練過(guò)程的轉(zhuǎn)換矩陣T對(duì)該樣本集進(jìn)行降維,降維數(shù)據(jù)經(jīng)過(guò)元分類器的分類后,得到最終測(cè)試結(jié)果。
PCA對(duì)數(shù)據(jù)進(jìn)行降維時(shí)會(huì)伴有信息量的損失,用保留特征值占所有特征值的比例(方差保留百分比)衡量該損失的大小,表達(dá)式如下:
(3)
r越大表示保留的信息量越大,即損失越小。
本文在CIFAR-10和CIFAR-100 2個(gè)數(shù)據(jù)集上進(jìn)行驗(yàn)證實(shí)驗(yàn)。CIFAR-10數(shù)據(jù)集共有10個(gè)類別,分為訓(xùn)練集和測(cè)試集,訓(xùn)練集中每個(gè)類別有5 000張圖片,測(cè)試集中每個(gè)類別有1 000張圖片。CIFAR-100數(shù)據(jù)集共有100個(gè)類別,訓(xùn)練集中每個(gè)類別有500張圖片,測(cè)試集中每個(gè)類別有100張圖片。記錄方差保留百分比r隨特征值保留個(gè)數(shù)的變化情況,實(shí)驗(yàn)結(jié)果如圖5所示。從圖5中可以看出,在同類型網(wǎng)絡(luò)結(jié)構(gòu)中,當(dāng)特征值保留個(gè)數(shù)與數(shù)據(jù)集類別數(shù)相同時(shí),在CIFAR-10數(shù)據(jù)集上保留了99.9%的方差,在CIFAR-100數(shù)據(jù)集上保留了97.6%的方差;在不同類型的網(wǎng)絡(luò)結(jié)構(gòu)中,當(dāng)特征值保留個(gè)數(shù)與數(shù)據(jù)集類別數(shù)相同時(shí),在CIFAR-10數(shù)據(jù)集上保留了99.8%的方差,在CIFAR-100數(shù)據(jù)集上保留了96.8%的方差。通過(guò)圖5還可以看出,繼續(xù)增加特征值保留個(gè)數(shù)時(shí),方差保留百分比的增加有限,因此,當(dāng)特征值的保留個(gè)數(shù)等于類別數(shù)時(shí),可以在實(shí)現(xiàn)數(shù)據(jù)壓縮的同時(shí)保留足夠的信息量。
圖5 方差保留百分比與特征值保留個(gè)數(shù)的關(guān)系
使用Caffe深度學(xué)習(xí)框架測(cè)試結(jié)構(gòu)為ResNet、VGG和NIN的卷積神經(jīng)網(wǎng)絡(luò),在CIFAR-10和CIFAR-100數(shù)據(jù)集上進(jìn)行分類精度實(shí)驗(yàn)。然后,將所得到的模型作為基分類器,實(shí)現(xiàn)基于分類器輸出(Stacking)、基于平均后驗(yàn)概率(Astacking)和基于類投票(Vstacking)的對(duì)比算法,并與本文算法(PCA-Stacking)進(jìn)行比較。
3.2.1 同類型網(wǎng)絡(luò)
本文實(shí)驗(yàn)中同類型網(wǎng)絡(luò)選擇ResNet結(jié)構(gòu),訓(xùn)練層數(shù)分別為20、32、44、56及110的模型,精度測(cè)試結(jié)果如表1所示。
表1 不同層數(shù)結(jié)構(gòu)分類精度結(jié)果 %
從表1中可以看出,隨著網(wǎng)絡(luò)層數(shù)的加深,分類精度逐漸提高,但精度提升的難度越來(lái)越大。在CIFAR-10數(shù)據(jù)集中,110層的ResNet比56層的ResNet分類精度提升了0.36%。在CIFAR-100數(shù)據(jù)集中,110層的ResNet比56層的ResNet分類精度提升了1.77%。
結(jié)合多個(gè)網(wǎng)絡(luò)時(shí)不同算法的分類精度對(duì)比結(jié)果如表2所示。
表2 同類型網(wǎng)絡(luò)不同算法分類精度對(duì)比 %
從表2可以看出,在CIFAR-10和CIFAR-100數(shù)據(jù)集上,所有算法的分類精度都高于單一網(wǎng)絡(luò)結(jié)構(gòu),其中,本文算法在CIFAR-10數(shù)據(jù)集上比單一網(wǎng)絡(luò)結(jié)構(gòu)最高精度提升了1.46%,在CIFAR-100數(shù)據(jù)集上比單一網(wǎng)絡(luò)結(jié)構(gòu)最高精度提升了4.92%,同時(shí),該算法的分類精度也高于其他對(duì)比算法。
3.2.2 不同類型網(wǎng)絡(luò)
不同類型網(wǎng)絡(luò)選擇20層的ResNet、16層的VGG和3層的NIN進(jìn)行實(shí)驗(yàn),精度測(cè)試結(jié)果如表3所示。
表3 不同網(wǎng)絡(luò)結(jié)構(gòu)分類精度對(duì)比結(jié)果 %
從表3可以看出,不同網(wǎng)絡(luò)結(jié)構(gòu)的分類精度比較接近,該設(shè)計(jì)消除了單個(gè)網(wǎng)絡(luò)精度過(guò)低或過(guò)高對(duì)算法效果造成的影響,結(jié)合多個(gè)不同結(jié)構(gòu)的不同算法分類精度對(duì)比結(jié)果如表4所示。
表4 結(jié)合不同結(jié)構(gòu)的不同算法分類精度對(duì)比 %
從表4可以看出,在不同網(wǎng)絡(luò)結(jié)構(gòu)下,Stacking算法分類精度低于單一網(wǎng)絡(luò)結(jié)構(gòu),原因在于不同網(wǎng)絡(luò)結(jié)構(gòu)下,各個(gè)網(wǎng)絡(luò)之間的相關(guān)性較弱,造成元分類器泛化能力下降,因此,其分類精度低于單一網(wǎng)絡(luò)結(jié)構(gòu)。本文PCA-Stacking算法使用了樣本的統(tǒng)計(jì)特性,因此,其分類精度比較穩(wěn)定,在CIFAR-10數(shù)據(jù)集上比單一網(wǎng)絡(luò)結(jié)構(gòu)最高精度提升了1.54%,在CIFAR-100數(shù)據(jù)集上比單一網(wǎng)絡(luò)結(jié)構(gòu)最高精度提升了4.72%。
本文提出一種適用于卷積神經(jīng)網(wǎng)絡(luò)的改進(jìn)Stacking算法,該算法使用PCA對(duì)多個(gè)卷積神經(jīng)網(wǎng)絡(luò)的分類結(jié)果進(jìn)行降維,將降維后的數(shù)據(jù)輸入元分類器。實(shí)驗(yàn)結(jié)果表明,與其他Stacking算法相比,該算法利用了樣本的統(tǒng)計(jì)特性,提升了分類精度,且在不同數(shù)據(jù)集下精度的提升較穩(wěn)定。下一步將研究分類精度與卷積神經(jīng)網(wǎng)絡(luò)組合方式的關(guān)系,以及元分類器的類型對(duì)該算法的影響。
[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].計(jì)算機(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] 劉麗敏,樊曉平,廖志芳.基于跡范數(shù)的L1-PCA算法[J].計(jì)算機(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.