李鵬松, 李俊達(dá), 倪天宇, 張 琦, 胡建平
(東北電力大學(xué) 理學(xué)院, 吉林 吉林 132012)
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)是計(jì)算機(jī)視覺領(lǐng)域中的重要模型, 由卷積層、 池化層和全連接層構(gòu)成, 其參數(shù)量巨大[1]. 近年來(lái), 為進(jìn)一步提高其性能和應(yīng)用范圍, 研究者們從網(wǎng)絡(luò)結(jié)構(gòu)、 損失函數(shù)和優(yōu)化算法等方面對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行了各種改進(jìn)[2-6]. 在改進(jìn)過(guò)程中卷積神經(jīng)網(wǎng)絡(luò)的深度不斷增加[7-9], 而卷積核作為其中數(shù)量最多的參數(shù), 對(duì)網(wǎng)絡(luò)性能的影響逐漸增大. 龐大的卷積核數(shù)量也使卷積核的更新狀況與其初始值緊密相連, 因此卷積核的初始化對(duì)網(wǎng)絡(luò)的識(shí)別性能和收斂速度起決定作用. 由于卷積神經(jīng)網(wǎng)絡(luò)中參數(shù)多、 網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜, 因此卷積核的初始化方法主要以隨機(jī)初始化為主, 即根據(jù)某特定的概率分布生成一組隨機(jī)數(shù)作為卷積核的初始值. 但大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)的深度較深, 隨機(jī)初始化會(huì)使網(wǎng)絡(luò)中卷積層輸出值的方差越來(lái)越大, 最終導(dǎo)致網(wǎng)絡(luò)收斂速度變慢[10]. 針對(duì)上述問題, Glorot等[11]提出了Xavier初始化方法, 通過(guò)使各卷積層輸入輸出值的方差一致防止網(wǎng)絡(luò)在前向傳播時(shí)累積方差, 但該方法成立的前提是網(wǎng)絡(luò)的激活函數(shù)為對(duì)稱函數(shù), 而大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)的激活函數(shù)是非對(duì)稱函數(shù), 因此并不適合卷積神經(jīng)網(wǎng)絡(luò); Krizhevsky等[12]在提出AlexNet的同時(shí), 使用Gauss初始化方法初始化卷積神經(jīng)網(wǎng)絡(luò), 該方法通過(guò)Gauss分布使卷積層輸出值的期望為零, 同時(shí)通過(guò)設(shè)置極小方差限制各卷積層輸出值的方差, 從而降低網(wǎng)絡(luò)不收斂的可能性, 該方法簡(jiǎn)單有效, 但隨著網(wǎng)絡(luò)深度的加深, 方差仍會(huì)不斷累積; He等[13]以Xavier初始化方法為基礎(chǔ)提出了He初始化方法, 該方法可適應(yīng)不同類型的激活函數(shù), 更適合初始化卷積神經(jīng)網(wǎng)絡(luò). 上述方法均基于隨機(jī)初始化, 其局限為: 1) 隨機(jī)初始化方法存在較大的偶然性和不確定性, 導(dǎo)致增加網(wǎng)絡(luò)的不穩(wěn)定性, 進(jìn)而導(dǎo)致網(wǎng)絡(luò)收斂速度較慢; 2) 在初始化過(guò)程中只考慮了輸出值的方差, 并未考慮數(shù)據(jù)集自身的特征, 從而限制了網(wǎng)絡(luò)的識(shí)別性能.
馬義超等[14]建立了基于主成分分析(principal component analysis, PCA)初始化的卷積神經(jīng)網(wǎng)絡(luò)模型, 該模型提取圖像模板的主成分, 并將其作為卷積核的初始值, PCA算法雖然可以構(gòu)建網(wǎng)絡(luò)并初始化卷積核, 但卻無(wú)法作為一種普遍適用的初始化方法, 其原因是: 1) 使用PCA算法提取的特征向量數(shù)量應(yīng)小于其對(duì)應(yīng)方陣的階數(shù), 即PCA算法可初始化的卷積核數(shù)量不能超過(guò)單個(gè)卷積核所對(duì)應(yīng)的神經(jīng)元個(gè)數(shù), 但大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)的卷積核數(shù)量遠(yuǎn)大于單個(gè)卷積核所對(duì)應(yīng)的神經(jīng)元個(gè)數(shù), 因此PCA算法只能初始化極少數(shù)特定結(jié)構(gòu)的網(wǎng)絡(luò); 2) PCA算法未考慮到卷積層輸出值的方差, 當(dāng)卷積核的數(shù)量較多時(shí), 卷積層輸出值的方差會(huì)顯著增加, 進(jìn)而降低網(wǎng)絡(luò)收斂的可能性.
針對(duì)上述問題, 本文提出一種基于圖像特征的卷積核初始化方法, 既保留了PCA算法可使網(wǎng)絡(luò)訓(xùn)練結(jié)合圖像特征的優(yōu)點(diǎn), 又解決了PCA算法無(wú)法初始化任意網(wǎng)絡(luò)結(jié)構(gòu)的問題. 本文首先使用圖像處理技術(shù)突顯圖像特征; 然后使用PCA算法初始化首層卷積核; 最后對(duì)卷積層的特征圖進(jìn)行隨機(jī)組合, 并分別使用PCA算法和特征截?cái)嗤瓿筛骶矸e層的初始化. 本文初始化方法使用圖像處理技術(shù)和PCA算法使卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)合不同類型的圖像特征, 進(jìn)一步增強(qiáng)了網(wǎng)絡(luò)的特征提取能力; 使用特征截?cái)噙M(jìn)一步限制卷積層輸出值的方差, 使其可適應(yīng)卷積核數(shù)量較大的網(wǎng)絡(luò), 并進(jìn)一步增加網(wǎng)絡(luò)的穩(wěn)定性; 將隨機(jī)組合應(yīng)用于卷積核初始化, 解決了PCA算法受網(wǎng)絡(luò)結(jié)構(gòu)限制的問題.
本文初始化方法分為3個(gè)階段: 第一階段是模板集構(gòu)建階段, 從訓(xùn)練集中選取圖像模板并通過(guò)圖像處理技術(shù)構(gòu)建紋理、 顏色和邊緣模板集; 第二階段是首層卷積核初始化階段, 使用PCA算法提取主成分并將截?cái)嗪蟮闹鞒煞肿鳛槭讓泳矸e核的初始值; 第三階段為其他層卷積核初始化階段, 計(jì)算每個(gè)卷積層的特征圖并進(jìn)行隨機(jī)分組, 再分別通過(guò)PCA算法和特征截?cái)喑跏蓟渌矸e層. 本文初始化方法流程如圖1所示.
根據(jù)文獻(xiàn)[11-12]對(duì)卷積核的定性分析可知, 卷積核所提取的抽象特征主要基于圖像中的簡(jiǎn)單邊緣及模糊的顏色分布. 因此, 顏色與邊緣特征對(duì)初始化卷積核具有重要作用. 本文構(gòu)建顏色模板集與邊緣模板集, 并且為防止具體顏色與邊緣特征降低網(wǎng)絡(luò)的泛化能力, 本文根據(jù)原始圖像構(gòu)建紋理模板集作為對(duì)圖像特征的補(bǔ)充. 模板集效果如圖2所示.
1.1.1 構(gòu)建紋理特征模板集
由于紋理特征較抽象, 盲目使用圖像處理技術(shù)會(huì)降低卷積神經(jīng)網(wǎng)絡(luò)的泛化能力, 因此, 本文將原始圖像作為提取圖像紋理特征的模板, 步驟如下.
圖1 本文初始化方法流程
1.1.2 構(gòu)建顏色特征模板集
使用均值濾波器對(duì)圖像進(jìn)行模糊處理, 只保留圖像大致的顏色分布. 本文以模糊化圖像作為提取圖像顏色特征的模板, 步驟如下.
1) 建立濾波器尺度15的均值濾波器:
2) 平滑處理: 根據(jù)
(1)
得模糊化圖像數(shù)據(jù)集G1={G11,G12,…,G1N}, 其中G1i為第i個(gè)模糊化的圖像樣本,i∈{1,2,…,N},N為圖像樣本數(shù)量.
1.1.3 構(gòu)建邊緣特征模板集
邊緣檢測(cè)技術(shù)可在保留圖像結(jié)構(gòu)的情況下, 去除圖像大量不相關(guān)的信息[15]. 本文使用Sobel算子對(duì)圖像進(jìn)行邊緣處理, 將保留的圖像邊緣作為提取圖像邊緣特征的模板, 步驟如下.
1) 建立Sobel算子:
2) 邊緣處理:
|G2i|=|G2i,x|+|G2i,y|,
(4)
根據(jù)式(2)和式(3)進(jìn)行邊緣處理得到邊緣特征集G2={G21,G22,…,G2N}, 其中G2i為第i個(gè)邊緣處理后得到圖像樣本,i∈{1,2,…,N}.
PCA算法的學(xué)習(xí)結(jié)果與隱層神經(jīng)元數(shù)量受限時(shí)的多層感知機(jī)學(xué)習(xí)結(jié)果相似性高, 可與神經(jīng)網(wǎng)絡(luò)進(jìn)行結(jié)合[16]. 因此, 本文使用PCA算法提取模板集的主成分, 并將其應(yīng)用于卷積核初始化. 由于直接使用主成分作為卷積層的初始值通常會(huì)使卷積層輸出值的方差明顯增加, 因此本文采用特征截?cái)嘁钥刂凭矸e層輸出值的方差.
1.2.1 PCA算法提取主成分
(5)
1.2.2 特征截?cái)?/p>
本文對(duì)主成分進(jìn)行截?cái)? 將對(duì)方差影響較大的異常數(shù)據(jù)進(jìn)行替換, 避免輸出值出現(xiàn)方差過(guò)大的情形. 特征截?cái)喙綖?/p>
(6)
1.3.1 特征圖計(jì)算
在已知卷積核初始值的情況下, 通過(guò)卷積計(jì)算得到其他卷積層所輸出的特征圖[17], 計(jì)算公式為
(7)
1.3.2 PCA算法提取特征向量
(8)
本文在Intel Core i5-4210M 2.6 GHz CPU, 內(nèi)存為8 GB的Windows 8.1系統(tǒng)上使用框架tensorflow 1.5進(jìn)行實(shí)驗(yàn)測(cè)試.
使用基于圖像特征的卷積核初始化方法確定卷積神經(jīng)網(wǎng)絡(luò)的初始權(quán)重, 將網(wǎng)絡(luò)應(yīng)用于數(shù)據(jù)集Cifar-10和Corel-1000的識(shí)別任務(wù)中, 并與其他卷積核初始化方法進(jìn)行對(duì)比. 將實(shí)驗(yàn)數(shù)據(jù)分為訓(xùn)練集、 驗(yàn)證集和測(cè)試集, 其中: 訓(xùn)練集與驗(yàn)證集參與訓(xùn)練過(guò)程, 訓(xùn)練集訓(xùn)練模型, 驗(yàn)證集確定模型超參數(shù); 測(cè)試集測(cè)試網(wǎng)絡(luò)的識(shí)別性能. 所用數(shù)據(jù)集信息列于表1. 用于測(cè)試初始化效果的模型為有三層卷積結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò), 其結(jié)構(gòu)如圖3所示.
表1 數(shù)據(jù)集信息
由于數(shù)據(jù)集Corel-1000的數(shù)據(jù)量較小, 使用大量卷積核會(huì)導(dǎo)致網(wǎng)絡(luò)出現(xiàn)嚴(yán)重的過(guò)擬合現(xiàn)象, 進(jìn)而影響對(duì)初始化效果的評(píng)價(jià). 因此, 用于識(shí)別數(shù)據(jù)集Corel-1000的卷積神經(jīng)網(wǎng)絡(luò)的卷積核個(gè)數(shù)較少, 各層卷積核個(gè)數(shù)為16,32,64; 用于識(shí)別數(shù)據(jù)集Cifar-10的網(wǎng)絡(luò)各層卷積核個(gè)數(shù)為32,64,128.
圖3 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
本文從網(wǎng)絡(luò)的收斂程度、 泛化能力和初始化成本三方面評(píng)價(jià)初始化方法. 使用驗(yàn)證集的損失值衡量網(wǎng)絡(luò)的收斂程度, 使用測(cè)試集上的識(shí)別準(zhǔn)確率衡量網(wǎng)絡(luò)的泛化能力, 使用訓(xùn)練時(shí)間衡量初始化成本. 利用驗(yàn)證集的損失值收斂程度分析不同初始化方法對(duì)卷積神經(jīng)網(wǎng)絡(luò)收斂速度的影響, 結(jié)果如圖4所示.
圖4 不同初始化方法的驗(yàn)證集損失值對(duì)比
由圖4(A)可見, 在數(shù)據(jù)集Cifar-10上使用Gauss初始化的網(wǎng)絡(luò)約在2 000次迭代時(shí)收斂, 使用He初始化的網(wǎng)絡(luò)約在3 100次迭代時(shí)收斂, 本文方法初始化后的網(wǎng)絡(luò)約在1 400次迭代時(shí)收斂, 其收斂速度大于其他兩種初始化方法. 對(duì)比3種方法在Cifar-10任務(wù)中的表現(xiàn): 本文初始化方法的損失值始終小于其他兩種方法, 在0~1 500次迭代時(shí)損失值差距明顯; 在3 000次迭代后, 各方法損失值之間的差距逐漸穩(wěn)定, 不再出現(xiàn)明顯變化; 本文初始化方法的損失值收斂于0.010, 其他兩種方法的損失值分別收斂于0.040和0.039. 由圖4(B)可見, 使用Gauss初始化的網(wǎng)絡(luò)在180次時(shí)收斂, 使用He初始化的網(wǎng)絡(luò)在200次迭代時(shí)收斂, 本文方法初始化后的網(wǎng)絡(luò)在150次時(shí)收斂, 其收斂速度仍快于其他兩種初始化方法. 對(duì)比3種方法在Corel-1000任務(wù)中的表現(xiàn): 本文方法的損失值在150次迭代前與其他兩種方法之間并無(wú)明顯差異, 但在150次迭代后, 本文方法開始收斂并且損失值始終低于其他兩種方法; 本文方法的損失值收斂于0.019, Gauss初始化方法的損失值收斂于0.031, He初始化方法的損失值收斂于0.051. 實(shí)驗(yàn)結(jié)果表明, 在不同任務(wù)中, 使用本文方法初始化的網(wǎng)絡(luò)均具有更快的收斂速度和更小的損失值, 驗(yàn)證了本文初始化方法的優(yōu)越性.
為進(jìn)一步評(píng)價(jià)本文初始化方法的性能, 對(duì)比不同初始化方法對(duì)卷積神經(jīng)網(wǎng)絡(luò)泛化能力的影響, 結(jié)果列于表2.
表2 不同初始化方法的測(cè)試集識(shí)別準(zhǔn)確率(%)對(duì)比
由表2可見, 本文初始化方法在兩個(gè)任務(wù)中的識(shí)別準(zhǔn)確率均超過(guò)94%, 且與人眼的識(shí)別準(zhǔn)確率(94.9%)相近, 進(jìn)一步說(shuō)明了本文方法的實(shí)際應(yīng)用價(jià)值.
對(duì)比3種初始化方法在Cifar-10任務(wù)中的表現(xiàn): 使用本文初始化方法的網(wǎng)絡(luò)在測(cè)試集上的識(shí)別準(zhǔn)確率分別比使用Gauss初始化和He初始化的網(wǎng)絡(luò)高2.0%和3.1%. 對(duì)比3種初始化方法在Corel-1000任務(wù)中的表現(xiàn): 使用本文初始化方法的網(wǎng)絡(luò)識(shí)別準(zhǔn)確率分別比Gauss初始化和He初始化后的網(wǎng)絡(luò)高8.5%和3.0%. 實(shí)驗(yàn)結(jié)果表明, 本文方法在不同識(shí)別任務(wù)中其識(shí)別效果均優(yōu)于其他初始化方法, 進(jìn)一步驗(yàn)證了本文方法的優(yōu)越性. 對(duì)比3種初始化方法在不同任務(wù)中的識(shí)別差異: 本文初始化方法在不同的識(shí)別任務(wù)中, 其識(shí)別準(zhǔn)確率只相差0.5%, 而其他兩種方法則分別為4.0%和0.6%, 說(shuō)明使用圖像特征可使網(wǎng)絡(luò)更好地適應(yīng)不同類型的數(shù)據(jù)集, 驗(yàn)證了本文初始化方法的合理性. 實(shí)驗(yàn)結(jié)果表明, 本文初始化方法與其他初始化方法相比, 可使網(wǎng)絡(luò)具有更好的識(shí)別性能, 并且對(duì)不同任務(wù)的適應(yīng)性也更好.
為評(píng)價(jià)本文初始化方法的實(shí)用性, 利用訓(xùn)練時(shí)間量化初始化成本, 結(jié)果列于表3. 由表3可見, Gauss初始化與He初始化并不會(huì)對(duì)網(wǎng)絡(luò)訓(xùn)練產(chǎn)生額外的時(shí)間, 而本文方法需要耗費(fèi)一定時(shí)間才能完成對(duì)網(wǎng)絡(luò)的初始化. 對(duì)比其他兩種方法: 本文初始方法在Cifar-10和Corel-1000任務(wù)中的平均訓(xùn)練時(shí)間分別增加0.3%和4.9%, 均小于5%. 因此, 本文初始化方法并沒有增加大量的網(wǎng)絡(luò)訓(xùn)練時(shí)間, 具有一定的實(shí)際應(yīng)用價(jià)值. 對(duì)比本文方法在兩個(gè)任務(wù)中的表現(xiàn): Corel-1000任務(wù)遠(yuǎn)大于Cifar-10任務(wù)中的初始化時(shí)間, 這是由于數(shù)據(jù)集Cifar-10中的圖像尺寸更小, 特征提取更快. 因此, 本文初始化方法更適用于圖像尺寸較小的圖像識(shí)別任務(wù).
表3 不同初始化方法的訓(xùn)練時(shí)間(s)對(duì)比
綜上所述, 本文以圖像處理技術(shù)與PCA算法為基礎(chǔ), 提出了一種基于圖像特征的卷積核初始化方法. 首先, 提取圖像的紋理、 邊緣和顏色特征構(gòu)建特征模板集; 其次, 使用PCA算法提取圖像特征的主成分完成首層卷積核初始化; 最后, 計(jì)算各卷積層輸出的特征圖, 并再次提取主成分, 逐層完成卷積核初始化. 實(shí)驗(yàn)結(jié)果表明, 本文初始化方法的初始化成本較少, 識(shí)別性能更優(yōu)越, 對(duì)不同類型的任務(wù)都具有較好的適應(yīng)性, 有實(shí)際應(yīng)用價(jià)值.