李鵬松, 李俊達, 倪天宇, 張 琦, 胡建平
(東北電力大學(xué) 理學(xué)院, 吉林 吉林 132012)
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)是計算機視覺領(lǐng)域中的重要模型, 由卷積層、 池化層和全連接層構(gòu)成, 其參數(shù)量巨大[1]. 近年來, 為進一步提高其性能和應(yīng)用范圍, 研究者們從網(wǎng)絡(luò)結(jié)構(gòu)、 損失函數(shù)和優(yōu)化算法等方面對卷積神經(jīng)網(wǎng)絡(luò)進行了各種改進[2-6]. 在改進過程中卷積神經(jīng)網(wǎng)絡(luò)的深度不斷增加[7-9], 而卷積核作為其中數(shù)量最多的參數(shù), 對網(wǎng)絡(luò)性能的影響逐漸增大. 龐大的卷積核數(shù)量也使卷積核的更新狀況與其初始值緊密相連, 因此卷積核的初始化對網(wǎng)絡(luò)的識別性能和收斂速度起決定作用. 由于卷積神經(jīng)網(wǎng)絡(luò)中參數(shù)多、 網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜, 因此卷積核的初始化方法主要以隨機初始化為主, 即根據(jù)某特定的概率分布生成一組隨機數(shù)作為卷積核的初始值. 但大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)的深度較深, 隨機初始化會使網(wǎng)絡(luò)中卷積層輸出值的方差越來越大, 最終導(dǎo)致網(wǎng)絡(luò)收斂速度變慢[10]. 針對上述問題, Glorot等[11]提出了Xavier初始化方法, 通過使各卷積層輸入輸出值的方差一致防止網(wǎng)絡(luò)在前向傳播時累積方差, 但該方法成立的前提是網(wǎng)絡(luò)的激活函數(shù)為對稱函數(shù), 而大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)的激活函數(shù)是非對稱函數(shù), 因此并不適合卷積神經(jīng)網(wǎng)絡(luò); Krizhevsky等[12]在提出AlexNet的同時, 使用Gauss初始化方法初始化卷積神經(jīng)網(wǎng)絡(luò), 該方法通過Gauss分布使卷積層輸出值的期望為零, 同時通過設(shè)置極小方差限制各卷積層輸出值的方差, 從而降低網(wǎng)絡(luò)不收斂的可能性, 該方法簡單有效, 但隨著網(wǎng)絡(luò)深度的加深, 方差仍會不斷累積; He等[13]以Xavier初始化方法為基礎(chǔ)提出了He初始化方法, 該方法可適應(yīng)不同類型的激活函數(shù), 更適合初始化卷積神經(jīng)網(wǎng)絡(luò). 上述方法均基于隨機初始化, 其局限為: 1) 隨機初始化方法存在較大的偶然性和不確定性, 導(dǎo)致增加網(wǎng)絡(luò)的不穩(wěn)定性, 進而導(dǎo)致網(wǎng)絡(luò)收斂速度較慢; 2) 在初始化過程中只考慮了輸出值的方差, 并未考慮數(shù)據(jù)集自身的特征, 從而限制了網(wǎng)絡(luò)的識別性能.
馬義超等[14]建立了基于主成分分析(principal component analysis, PCA)初始化的卷積神經(jīng)網(wǎng)絡(luò)模型, 該模型提取圖像模板的主成分, 并將其作為卷積核的初始值, PCA算法雖然可以構(gòu)建網(wǎng)絡(luò)并初始化卷積核, 但卻無法作為一種普遍適用的初始化方法, 其原因是: 1) 使用PCA算法提取的特征向量數(shù)量應(yīng)小于其對應(yīng)方陣的階數(shù), 即PCA算法可初始化的卷積核數(shù)量不能超過單個卷積核所對應(yīng)的神經(jīng)元個數(shù), 但大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)的卷積核數(shù)量遠大于單個卷積核所對應(yīng)的神經(jīng)元個數(shù), 因此PCA算法只能初始化極少數(shù)特定結(jié)構(gòu)的網(wǎng)絡(luò); 2) PCA算法未考慮到卷積層輸出值的方差, 當卷積核的數(shù)量較多時, 卷積層輸出值的方差會顯著增加, 進而降低網(wǎng)絡(luò)收斂的可能性.
針對上述問題, 本文提出一種基于圖像特征的卷積核初始化方法, 既保留了PCA算法可使網(wǎng)絡(luò)訓(xùn)練結(jié)合圖像特征的優(yōu)點, 又解決了PCA算法無法初始化任意網(wǎng)絡(luò)結(jié)構(gòu)的問題. 本文首先使用圖像處理技術(shù)突顯圖像特征; 然后使用PCA算法初始化首層卷積核; 最后對卷積層的特征圖進行隨機組合, 并分別使用PCA算法和特征截斷完成各卷積層的初始化. 本文初始化方法使用圖像處理技術(shù)和PCA算法使卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)合不同類型的圖像特征, 進一步增強了網(wǎng)絡(luò)的特征提取能力; 使用特征截斷進一步限制卷積層輸出值的方差, 使其可適應(yīng)卷積核數(shù)量較大的網(wǎng)絡(luò), 并進一步增加網(wǎng)絡(luò)的穩(wěn)定性; 將隨機組合應(yīng)用于卷積核初始化, 解決了PCA算法受網(wǎng)絡(luò)結(jié)構(gòu)限制的問題.
本文初始化方法分為3個階段: 第一階段是模板集構(gòu)建階段, 從訓(xùn)練集中選取圖像模板并通過圖像處理技術(shù)構(gòu)建紋理、 顏色和邊緣模板集; 第二階段是首層卷積核初始化階段, 使用PCA算法提取主成分并將截斷后的主成分作為首層卷積核的初始值; 第三階段為其他層卷積核初始化階段, 計算每個卷積層的特征圖并進行隨機分組, 再分別通過PCA算法和特征截斷初始化其他卷積層. 本文初始化方法流程如圖1所示.
根據(jù)文獻[11-12]對卷積核的定性分析可知, 卷積核所提取的抽象特征主要基于圖像中的簡單邊緣及模糊的顏色分布. 因此, 顏色與邊緣特征對初始化卷積核具有重要作用. 本文構(gòu)建顏色模板集與邊緣模板集, 并且為防止具體顏色與邊緣特征降低網(wǎng)絡(luò)的泛化能力, 本文根據(jù)原始圖像構(gòu)建紋理模板集作為對圖像特征的補充. 模板集效果如圖2所示.
1.1.1 構(gòu)建紋理特征模板集
由于紋理特征較抽象, 盲目使用圖像處理技術(shù)會降低卷積神經(jīng)網(wǎng)絡(luò)的泛化能力, 因此, 本文將原始圖像作為提取圖像紋理特征的模板, 步驟如下.


圖1 本文初始化方法流程
1.1.2 構(gòu)建顏色特征模板集
使用均值濾波器對圖像進行模糊處理, 只保留圖像大致的顏色分布. 本文以模糊化圖像作為提取圖像顏色特征的模板, 步驟如下.
1) 建立濾波器尺度15的均值濾波器:
2) 平滑處理: 根據(jù)

(1)
得模糊化圖像數(shù)據(jù)集G1={G11,G12,…,G1N}, 其中G1i為第i個模糊化的圖像樣本,i∈{1,2,…,N},N為圖像樣本數(shù)量.

1.1.3 構(gòu)建邊緣特征模板集
邊緣檢測技術(shù)可在保留圖像結(jié)構(gòu)的情況下, 去除圖像大量不相關(guān)的信息[15]. 本文使用Sobel算子對圖像進行邊緣處理, 將保留的圖像邊緣作為提取圖像邊緣特征的模板, 步驟如下.
1) 建立Sobel算子:
2) 邊緣處理:
|G2i|=|G2i,x|+|G2i,y|,
(4)
根據(jù)式(2)和式(3)進行邊緣處理得到邊緣特征集G2={G21,G22,…,G2N}, 其中G2i為第i個邊緣處理后得到圖像樣本,i∈{1,2,…,N}.

PCA算法的學(xué)習(xí)結(jié)果與隱層神經(jīng)元數(shù)量受限時的多層感知機學(xué)習(xí)結(jié)果相似性高, 可與神經(jīng)網(wǎng)絡(luò)進行結(jié)合[16]. 因此, 本文使用PCA算法提取模板集的主成分, 并將其應(yīng)用于卷積核初始化. 由于直接使用主成分作為卷積層的初始值通常會使卷積層輸出值的方差明顯增加, 因此本文采用特征截斷以控制卷積層輸出值的方差.
1.2.1 PCA算法提取主成分

(5)

1.2.2 特征截斷
本文對主成分進行截斷, 將對方差影響較大的異常數(shù)據(jù)進行替換, 避免輸出值出現(xiàn)方差過大的情形. 特征截斷公式為

(6)

1.3.1 特征圖計算
在已知卷積核初始值的情況下, 通過卷積計算得到其他卷積層所輸出的特征圖[17], 計算公式為

(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īng)網(wǎng)絡(luò)的初始權(quán)重, 將網(wǎng)絡(luò)應(yīng)用于數(shù)據(jù)集Cifar-10和Corel-1000的識別任務(wù)中, 并與其他卷積核初始化方法進行對比. 將實驗數(shù)據(jù)分為訓(xùn)練集、 驗證集和測試集, 其中: 訓(xùn)練集與驗證集參與訓(xùn)練過程, 訓(xùn)練集訓(xùn)練模型, 驗證集確定模型超參數(shù); 測試集測試網(wǎng)絡(luò)的識別性能. 所用數(shù)據(jù)集信息列于表1. 用于測試初始化效果的模型為有三層卷積結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò), 其結(jié)構(gòu)如圖3所示.

表1 數(shù)據(jù)集信息
由于數(shù)據(jù)集Corel-1000的數(shù)據(jù)量較小, 使用大量卷積核會導(dǎo)致網(wǎng)絡(luò)出現(xiàn)嚴重的過擬合現(xiàn)象, 進而影響對初始化效果的評價. 因此, 用于識別數(shù)據(jù)集Corel-1000的卷積神經(jīng)網(wǎng)絡(luò)的卷積核個數(shù)較少, 各層卷積核個數(shù)為16,32,64; 用于識別數(shù)據(jù)集Cifar-10的網(wǎng)絡(luò)各層卷積核個數(shù)為32,64,128.

圖3 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
本文從網(wǎng)絡(luò)的收斂程度、 泛化能力和初始化成本三方面評價初始化方法. 使用驗證集的損失值衡量網(wǎng)絡(luò)的收斂程度, 使用測試集上的識別準確率衡量網(wǎng)絡(luò)的泛化能力, 使用訓(xùn)練時間衡量初始化成本. 利用驗證集的損失值收斂程度分析不同初始化方法對卷積神經(jīng)網(wǎng)絡(luò)收斂速度的影響, 結(jié)果如圖4所示.

圖4 不同初始化方法的驗證集損失值對比
由圖4(A)可見, 在數(shù)據(jù)集Cifar-10上使用Gauss初始化的網(wǎng)絡(luò)約在2 000次迭代時收斂, 使用He初始化的網(wǎng)絡(luò)約在3 100次迭代時收斂, 本文方法初始化后的網(wǎng)絡(luò)約在1 400次迭代時收斂, 其收斂速度大于其他兩種初始化方法. 對比3種方法在Cifar-10任務(wù)中的表現(xiàn): 本文初始化方法的損失值始終小于其他兩種方法, 在0~1 500次迭代時損失值差距明顯; 在3 000次迭代后, 各方法損失值之間的差距逐漸穩(wěn)定, 不再出現(xiàn)明顯變化; 本文初始化方法的損失值收斂于0.010, 其他兩種方法的損失值分別收斂于0.040和0.039. 由圖4(B)可見, 使用Gauss初始化的網(wǎng)絡(luò)在180次時收斂, 使用He初始化的網(wǎng)絡(luò)在200次迭代時收斂, 本文方法初始化后的網(wǎng)絡(luò)在150次時收斂, 其收斂速度仍快于其他兩種初始化方法. 對比3種方法在Corel-1000任務(wù)中的表現(xiàn): 本文方法的損失值在150次迭代前與其他兩種方法之間并無明顯差異, 但在150次迭代后, 本文方法開始收斂并且損失值始終低于其他兩種方法; 本文方法的損失值收斂于0.019, Gauss初始化方法的損失值收斂于0.031, He初始化方法的損失值收斂于0.051. 實驗結(jié)果表明, 在不同任務(wù)中, 使用本文方法初始化的網(wǎng)絡(luò)均具有更快的收斂速度和更小的損失值, 驗證了本文初始化方法的優(yōu)越性.
為進一步評價本文初始化方法的性能, 對比不同初始化方法對卷積神經(jīng)網(wǎng)絡(luò)泛化能力的影響, 結(jié)果列于表2.

表2 不同初始化方法的測試集識別準確率(%)對比
由表2可見, 本文初始化方法在兩個任務(wù)中的識別準確率均超過94%, 且與人眼的識別準確率(94.9%)相近, 進一步說明了本文方法的實際應(yīng)用價值.
對比3種初始化方法在Cifar-10任務(wù)中的表現(xiàn): 使用本文初始化方法的網(wǎng)絡(luò)在測試集上的識別準確率分別比使用Gauss初始化和He初始化的網(wǎng)絡(luò)高2.0%和3.1%. 對比3種初始化方法在Corel-1000任務(wù)中的表現(xiàn): 使用本文初始化方法的網(wǎng)絡(luò)識別準確率分別比Gauss初始化和He初始化后的網(wǎng)絡(luò)高8.5%和3.0%. 實驗結(jié)果表明, 本文方法在不同識別任務(wù)中其識別效果均優(yōu)于其他初始化方法, 進一步驗證了本文方法的優(yōu)越性. 對比3種初始化方法在不同任務(wù)中的識別差異: 本文初始化方法在不同的識別任務(wù)中, 其識別準確率只相差0.5%, 而其他兩種方法則分別為4.0%和0.6%, 說明使用圖像特征可使網(wǎng)絡(luò)更好地適應(yīng)不同類型的數(shù)據(jù)集, 驗證了本文初始化方法的合理性. 實驗結(jié)果表明, 本文初始化方法與其他初始化方法相比, 可使網(wǎng)絡(luò)具有更好的識別性能, 并且對不同任務(wù)的適應(yīng)性也更好.
為評價本文初始化方法的實用性, 利用訓(xùn)練時間量化初始化成本, 結(jié)果列于表3. 由表3可見, Gauss初始化與He初始化并不會對網(wǎng)絡(luò)訓(xùn)練產(chǎn)生額外的時間, 而本文方法需要耗費一定時間才能完成對網(wǎng)絡(luò)的初始化. 對比其他兩種方法: 本文初始方法在Cifar-10和Corel-1000任務(wù)中的平均訓(xùn)練時間分別增加0.3%和4.9%, 均小于5%. 因此, 本文初始化方法并沒有增加大量的網(wǎng)絡(luò)訓(xùn)練時間, 具有一定的實際應(yīng)用價值. 對比本文方法在兩個任務(wù)中的表現(xiàn): Corel-1000任務(wù)遠大于Cifar-10任務(wù)中的初始化時間, 這是由于數(shù)據(jù)集Cifar-10中的圖像尺寸更小, 特征提取更快. 因此, 本文初始化方法更適用于圖像尺寸較小的圖像識別任務(wù).

表3 不同初始化方法的訓(xùn)練時間(s)對比
綜上所述, 本文以圖像處理技術(shù)與PCA算法為基礎(chǔ), 提出了一種基于圖像特征的卷積核初始化方法. 首先, 提取圖像的紋理、 邊緣和顏色特征構(gòu)建特征模板集; 其次, 使用PCA算法提取圖像特征的主成分完成首層卷積核初始化; 最后, 計算各卷積層輸出的特征圖, 并再次提取主成分, 逐層完成卷積核初始化. 實驗結(jié)果表明, 本文初始化方法的初始化成本較少, 識別性能更優(yōu)越, 對不同類型的任務(wù)都具有較好的適應(yīng)性, 有實際應(yīng)用價值.