本發(fā)明屬于深度學(xué)習(xí)以及大數(shù)據(jù)技術(shù)領(lǐng)域,具體涉及一種改進(jìn)的并行通道卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法。
背景技術(shù):
隨著社會(huì)的發(fā)展,大數(shù)據(jù)時(shí)代的來臨,與之相關(guān)的技術(shù)不斷發(fā)展和創(chuàng)新。深度學(xué)習(xí)因其能利用海量數(shù)據(jù)并通過更深層網(wǎng)絡(luò)的訓(xùn)練提高分類正確率,在近年來取得一些列突破性進(jìn)展。學(xué)者們都試圖通過增加卷積神經(jīng)網(wǎng)絡(luò)的規(guī)模來提升其性能,而增加網(wǎng)絡(luò)規(guī)模最簡(jiǎn)單的方式就是增加“深度”。
然而基于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)搭建的深度網(wǎng)絡(luò),隨著網(wǎng)絡(luò)層數(shù)的增加,精度會(huì)達(dá)到飽和,甚至降低。文獻(xiàn)“romeroa,ballasn,kahouse,etal.fitnets:hintsforthindeepnets[j].arxivpreprintarxiv:1412.6550,2014.”中提出一種多階段訓(xùn)練方法,先分別訓(xùn)練多個(gè)淺層網(wǎng)絡(luò),最后將多個(gè)淺層網(wǎng)絡(luò)進(jìn)行組合,從而實(shí)現(xiàn)一個(gè)深層網(wǎng)絡(luò)。這樣做需要人為地分別對(duì)多個(gè)網(wǎng)絡(luò)參數(shù)進(jìn)行調(diào)節(jié),耗時(shí)耗力,且分別訓(xùn)練多個(gè)淺層網(wǎng)絡(luò)會(huì)丟失網(wǎng)絡(luò)之間的關(guān)聯(lián)信息,將對(duì)網(wǎng)絡(luò)最后的性能產(chǎn)生影響。文獻(xiàn)“l(fā)eecy,xies,gallagherp,etal.deeply-supervisednets[c]//proceedingsoftheeighteenthinternationalconferenceonartificialintelligenceandstatistics.2015:562-570”則在深度卷積神經(jīng)網(wǎng)絡(luò)的隱藏層引入了多個(gè)輔助分類器,該方法雖然可以一定程度地補(bǔ)償深層網(wǎng)絡(luò)誤差反向傳導(dǎo)時(shí)的梯度消失問題,但是引入的輔助分類器也會(huì)對(duì)網(wǎng)絡(luò)最后的精度產(chǎn)生影響。
更深度的網(wǎng)絡(luò)無法訓(xùn)練的問題一直沒有從根本上解決,所提出的網(wǎng)絡(luò)結(jié)構(gòu)仍然是基于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的,只是在訓(xùn)練過程中使用了各種優(yōu)化技巧,如:更好的網(wǎng)絡(luò)初始化參數(shù)、更高效的激勵(lì)函數(shù)等。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明的目的在于提供一種改進(jìn)的并行通道卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法。
為了達(dá)到上述目的,本發(fā)明提供的改進(jìn)的并行通道卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法包括按順序進(jìn)行的下列步驟:
1)分別利用直連和卷積兩個(gè)并行通道對(duì)卷積神經(jīng)網(wǎng)絡(luò)中的數(shù)據(jù)進(jìn)行特征提取,得到直連通道特征矩陣和卷積通道特征矩陣;
2)將步驟1)得到的兩個(gè)特征矩陣進(jìn)行合并,并輸入到最大池化層和均值池化層進(jìn)行數(shù)據(jù)降維;
3)重復(fù)步驟1)、步驟2),得到最終特征矩陣;
4)將上述步驟3)得到的最終特征矩陣進(jìn)行全局平均池化并輸入全連接層變?yōu)橐痪S特征矩陣,并利用softmax分類器對(duì)一維特征矩陣進(jìn)行分類而對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,計(jì)算此次網(wǎng)絡(luò)訓(xùn)練的損失值;
5)利用誤差反向傳播算法進(jìn)行梯度計(jì)算,計(jì)算各層誤差項(xiàng)和權(quán)值梯度;
6)根據(jù)步驟4)中所得損失值判斷網(wǎng)絡(luò)是否收斂,如不收斂,依據(jù)步驟5)中獲得的權(quán)值梯度調(diào)整卷積神經(jīng)網(wǎng)絡(luò)初始化參數(shù)并重新進(jìn)行訓(xùn)練,如已收斂則輸出網(wǎng)絡(luò)訓(xùn)練結(jié)果。
在步驟1)中,所述的分別利用直連和卷積兩個(gè)并行通道對(duì)卷積神經(jīng)網(wǎng)絡(luò)中的數(shù)據(jù)進(jìn)行特征提取,得到直連通道特征矩陣和卷積通道特征矩陣的方法是:首先,將數(shù)據(jù)分別輸入直連通道和卷積通道;然后在直連通道中直接將數(shù)據(jù)映射為直連通道特征矩陣作為輸出,在卷積通道上利用多個(gè)卷積層對(duì)數(shù)據(jù)進(jìn)行卷積操作,每個(gè)卷積層的輸入是上一個(gè)卷積層的輸出,將最后一個(gè)卷積層輸出矩陣作為卷積通道的特征矩陣。
在步驟2)中,所述的將步驟1)得到的兩個(gè)特征矩陣進(jìn)行合并,并輸入到最大池化層和均值池化層進(jìn)行數(shù)據(jù)降維的方法是:首先,將直連通道所得特征矩陣和卷積通道所得特征矩陣進(jìn)行合并,即得到多個(gè)特征矩陣的集合;然后分別將所得特征矩陣輸入最大池化層和均值池化層,在最大池化層,使用濾波器取濾波器內(nèi)值的最大值,在均值池化層使用濾波器取濾波器內(nèi)的平均值。
在步驟4)中,所述的將上述步驟3)得到的最終特征矩陣進(jìn)行全局平均池化并輸入全連接層變?yōu)橐痪S特征矩陣,并利用softmax分類器對(duì)一維特征矩陣進(jìn)行分類而對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,計(jì)算此次網(wǎng)絡(luò)訓(xùn)練的損失值的方法是:首先,對(duì)最終特征矩陣進(jìn)行全局平均池化,使用和最終特征矩陣大小一致的濾波器計(jì)算特征矩陣中數(shù)據(jù)的平均值;然后,輸入全連接層,全連接層中每個(gè)神經(jīng)元分別對(duì)全局平均池化后的特征矩陣中的數(shù)據(jù)進(jìn)行非線性變換得到一維特征矩陣;最后,將一維特征矩陣輸入softmax分類器進(jìn)行分類。
在步驟5)中,所述的利用誤差反向傳播算法進(jìn)行梯度計(jì)算,計(jì)算各層誤差項(xiàng)和權(quán)值梯度的方法是:首先,根據(jù)softmax分類器結(jié)果計(jì)算最后一層損失值并作為最后一層的誤差項(xiàng);然后,利用誤差反向傳播算法的鏈?zhǔn)椒▌t計(jì)算各層誤差項(xiàng),第l個(gè)卷積層的第i個(gè)特征矩陣的誤差項(xiàng)為:
m為l+1層的特征矩陣個(gè)數(shù),
最后,利用公式
在步驟6)中,所述的根據(jù)步驟4)中所得損失值判斷網(wǎng)絡(luò)是否收斂,如不收斂,依據(jù)步驟5)中獲得的權(quán)值梯度調(diào)整卷積神經(jīng)網(wǎng)絡(luò)初始化參數(shù)并重新進(jìn)行訓(xùn)練,如已收斂則輸出網(wǎng)絡(luò)訓(xùn)練結(jié)果的方法是:首先,將分類結(jié)果和實(shí)際值比對(duì)并計(jì)算差值而作為損失值;然后將損失值和實(shí)現(xiàn)設(shè)定的分類閾值做比較,如小于分類閾值則判定網(wǎng)絡(luò)收斂,否則不收斂;最后,如收斂輸出網(wǎng)絡(luò)結(jié)果,否則根據(jù)公式
本發(fā)明提供的改進(jìn)的并行通道卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法的優(yōu)點(diǎn)在于:1)通過直連通道的引入可保證數(shù)據(jù)在網(wǎng)絡(luò)中的流通性,克服了深層卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)梯度不穩(wěn)定的難題,可訓(xùn)練更深層的網(wǎng)絡(luò);2)利用最大池化和均值池化,可使兩次特征提取間的特征矩陣維度保持一致且可結(jié)合兩種池化方法的優(yōu)點(diǎn)。
附圖說明
圖1為本發(fā)明提供的改進(jìn)的并行通道卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法流程圖。
圖2為特征提取部分的并行通道結(jié)構(gòu)圖;
圖3為雙池化層示意圖;
圖4為并行通道卷積神經(jīng)網(wǎng)絡(luò)誤差項(xiàng)計(jì)算示意圖;
圖5為在cifar-10數(shù)據(jù)集上不同池化方式的性能比較;
圖6為本發(fā)明在cifar-10數(shù)據(jù)集上訓(xùn)練正確率隨迭代次數(shù)的變化曲線。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提供的改進(jìn)的并行通道卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法進(jìn)行詳細(xì)說明。
如圖1所示,本發(fā)明提供的改進(jìn)的并行通道卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法包括按順序進(jìn)行的下列步驟:
1)分別利用直連和卷積兩個(gè)并行通道對(duì)卷積神經(jīng)網(wǎng)絡(luò)中的數(shù)據(jù)進(jìn)行特征提取,得到直連通道特征矩陣和卷積通道特征矩陣;
將由數(shù)萬張大小為32×32的彩色圖像組成的數(shù)據(jù)集輸入到卷積神經(jīng)網(wǎng)絡(luò)中,本發(fā)明采用由6萬張大小為32×32的彩色圖像組成的cifar-10數(shù)據(jù)集,然后分別利用直連和卷積兩個(gè)并行通道對(duì)數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行特征提取,并行通道結(jié)構(gòu)詳見圖2。在直連通道中,使用映射函數(shù)y=x提取直連通道特征矩陣;在卷積通道中,所有卷積核尺寸為3×3、步長(zhǎng)為1且都僅僅使用了權(quán)重項(xiàng)來對(duì)上一層輸出特征矩陣進(jìn)行卷積,沒有使用偏置項(xiàng),故第l層的第j幅卷積響應(yīng)特征矩陣
式中,m表示上一層輸出特征矩陣的集合;
對(duì)卷積響應(yīng)特征矩陣上每一個(gè)神經(jīng)元利用relu激活函數(shù)進(jìn)行非線性變換,得到第l層特征矩陣為
2)將步驟1)得到的兩個(gè)特征矩陣進(jìn)行合并,并輸入到最大池化層和均值池化層進(jìn)行數(shù)據(jù)降維;
在進(jìn)行特征矩陣合并時(shí),將每?jī)蓚€(gè)卷積層得到的特征矩陣和直連通道特征矩陣做一次累加,記為一個(gè)累加模塊。為方便描述,將兩個(gè)卷積層記為一個(gè)卷積模塊,每?jī)蓚€(gè)累加模塊記為一個(gè)結(jié)構(gòu)快,并對(duì)卷積模塊所得特征矩陣加入卷積衰減因子,則每個(gè)結(jié)構(gòu)塊所得特征矩陣定義如下:
y=λ1hn1(x,{w(n1)})+λ2hn2[hn1(x,{w(n1)}),{w(n2)}]+x(3)
式中,x和y分別表示結(jié)構(gòu)塊的輸入和輸出數(shù)據(jù);λ1和λ2即為“卷積衰減因子”,是一個(gè)需要提前設(shè)置的常量,這里為每個(gè)卷積模塊都分別設(shè)置了不同大小的卷積衰減因子;w(n1)和w(n2)分別表示兩次累加時(shí)特征矩陣權(quán)值參數(shù)的集合,是需要訓(xùn)練的參數(shù);hn1(·)和hn2(·)分別表示第一次累加和第二次累加的等效轉(zhuǎn)換函數(shù)。
其中,第一次累加的等效轉(zhuǎn)換函數(shù)hn1(·)的表達(dá)式為:
hn1(x,{w(n1)})=w(m2)⊙f(w(m1)⊙x)(4)
第二次累加的等效轉(zhuǎn)換函數(shù)hn2(·)的表達(dá)式為:
hn2(yn1,{w(n2)})=w(m4)⊙f(w(m3)⊙yn1)(5)
為了方便描述,令yn1=hn1(x,{w(n1)}),yn2=hn2(yn1,{w(n2)}),故式(3)還可以描述成如下形式:
y=λ1yn1+λ2yn2+x(6)
為進(jìn)一步對(duì)數(shù)據(jù)降維,減少深層網(wǎng)絡(luò)計(jì)算量,對(duì)上述合并后的特征矩陣進(jìn)行最大池化和均值池化,雙池化方式如圖3所示,兩種池化方法均采用尺寸為3×3、步長(zhǎng)為2的濾波器;其中最大池化的濾波器是過濾選擇最大值,可盡可能保留特征矩陣的顯著性信息;均值池化是計(jì)算濾波器中對(duì)應(yīng)特征的均值,可保留特征矩陣的背景信息。通過雙池化,特征矩陣個(gè)數(shù)增倍,單個(gè)矩陣的維度減半。實(shí)驗(yàn)顯示,在cifar-10數(shù)據(jù)集上雙池化的池化方式比單一池化方式可以得到更高的分類準(zhǔn)確率,如圖5所示。
3)重復(fù)步驟1)、步驟2),得到最終特征矩陣;
由于數(shù)據(jù)集中彩色圖像大小為32×32,因此對(duì)特征矩陣進(jìn)行兩次特征提取和雙池化,得到最終特征矩陣,這樣可以盡可能加深網(wǎng)絡(luò)深度。
4)將上述步驟3)得到的最終特征矩陣進(jìn)行全局平均池化并輸入全連接層變?yōu)橐痪S特征矩陣,并利用softmax分類器對(duì)一維特征矩陣進(jìn)行分類而對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,計(jì)算此次網(wǎng)絡(luò)訓(xùn)練的損失值;
將上述步驟3)得到的最終特征矩陣進(jìn)行全局平均池化并輸入全連接層,可得特征維度為(1×1)×q的特征矩陣,使用softmax分類器對(duì)其分類,其中,q為分類類別數(shù),對(duì)于每類有r個(gè)樣本的集合可以表示為{(x(1),y(1)),(x(2),y(2)),...(x(r),y(r))},y(r)∈{1,2,…,q}。計(jì)算此次網(wǎng)絡(luò)訓(xùn)練的損失值的方法是:首先,計(jì)算每個(gè)類別j出現(xiàn)的概率p(y=j(luò)|x);然后用hθ(x)表示q個(gè)輸出概率,則函數(shù)為:
其中,hθ(x)表示卷積神經(jīng)網(wǎng)絡(luò)的輸出,i為樣本序號(hào),θ為網(wǎng)絡(luò)參數(shù),
最后使用交叉熵作為損失函數(shù)計(jì)算損失值,其表達(dá)式為:
其中l(wèi)表示損失值,1{y(i)=j(luò)}表示當(dāng)y(i)=j(luò)時(shí)值為1,否則為0,r為樣本數(shù)。
5)利用誤差反向傳播算法進(jìn)行梯度計(jì)算,計(jì)算各層誤差項(xiàng)和權(quán)值梯度;
在進(jìn)行反向傳播計(jì)算誤差項(xiàng)時(shí)最后一層誤差值等于損失值,即δ(0)=l,第k個(gè)累加模塊的誤差項(xiàng)等于第k+1個(gè)累加模塊的誤差項(xiàng)乘以兩者之間的連接權(quán)值。故第k個(gè)累加模塊誤差項(xiàng)δ(k)為:
δ(k)=δ(n1)+δ(k+1)(9)
式中δ(k+1)為第k+1個(gè)累加模塊的誤差項(xiàng);δ(n1)為該累加模塊卷積通道的誤差項(xiàng)。計(jì)算式(9)的關(guān)鍵是計(jì)算出δ(n1),然后就可以通過式(9)依次求出其余累加模塊的誤差項(xiàng):
上式中,λ1和λ2分別為兩個(gè)卷積模塊的卷積衰減因子,均設(shè)置為小于1的正整數(shù);δ(m1)、δ(m2)、δ(m3)和δ(m4)依次為圖4中四個(gè)卷積層的誤差項(xiàng);δ(n1)和δ(n2)分別為兩個(gè)卷積通道的誤差項(xiàng)。
將式(10)中每層的誤差項(xiàng)依次代入可以得到卷積通道的誤差項(xiàng):
式(11)中①式和②式正好分別為等效轉(zhuǎn)換函數(shù)式(4)和式(5)的導(dǎo)數(shù)和,故可將式(11)簡(jiǎn)寫為:
δ(n1)=[(λ2δ(k+1))*hn1′(a(m0))+λ1δ(k+1)]*hn2′(a(m2))(12)
將式(12)代入式(7),就可以逐一計(jì)算出雙通道卷積神經(jīng)網(wǎng)絡(luò)所有累加模塊的誤差項(xiàng)。
根據(jù)bp鏈?zhǔn)椒▌t和梯度計(jì)算公式
6)根據(jù)步驟4)中所得損失值判斷網(wǎng)絡(luò)是否收斂,如不收斂,依據(jù)步驟5)中獲得的權(quán)值梯度調(diào)整卷積神經(jīng)網(wǎng)絡(luò)初始化參數(shù)并重新進(jìn)行訓(xùn)練,如已收斂則輸出網(wǎng)絡(luò)訓(xùn)練結(jié)果。
根據(jù)步驟4)中損失函數(shù)計(jì)算的損失值,將損失值和分類閾值進(jìn)行比較,如小于分類閾值則網(wǎng)絡(luò)收斂;否則根據(jù)步驟5)中所得權(quán)值梯度按照式(14)、(15)更新權(quán)值梯度,并重新訓(xùn)練網(wǎng)絡(luò)。
w(t+1):=w(t)+v(t+1)(15)
式中t表示迭代次數(shù),v(t)是動(dòng)量項(xiàng),μ為動(dòng)量因子,它決定了歷史權(quán)重修正量對(duì)本次權(quán)重修正的貢獻(xiàn)大小;η為學(xué)習(xí)率;λ為權(quán)重衰減系數(shù)。
本發(fā)明通過直連通道的引入,克服了深層卷積神經(jīng)網(wǎng)絡(luò)梯度不穩(wěn)定的難題,可盡可能加深網(wǎng)絡(luò),從而提高分類準(zhǔn)確率。從cifar-10數(shù)據(jù)集上的測(cè)試結(jié)果可知,隨著卷積神經(jīng)網(wǎng)絡(luò)深度的增加,分類正確率提高,詳見圖6。