蔡 楠,李 萍
(寧夏大學(xué) 物理與電子電氣工程學(xué)院,寧夏 銀川 750021)
卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network,CNN),屬于人工神經(jīng)網(wǎng)絡(luò)的一種[1],相對(duì)于傳統(tǒng)的識(shí)別算法不需要將輸入的數(shù)據(jù)進(jìn)行特征提取和數(shù)據(jù)重建,而直接可以將圖像作為網(wǎng)絡(luò)的輸入,自動(dòng)提取特征并且對(duì)圖像具有高度不變性。其權(quán)值共享的網(wǎng)絡(luò)結(jié)構(gòu)顯著降低了模型的復(fù)雜度,減少了權(quán)值的數(shù)量,是目前語音分析和圖像識(shí)別領(lǐng)域研究的熱點(diǎn)[2]。網(wǎng)絡(luò)參數(shù)的訓(xùn)練與更新是CNN的關(guān)鍵環(huán)節(jié),占用了大量的運(yùn)算資源和時(shí)間,并且為了獲得足夠的擬合精度,通常需要大量的有標(biāo)簽樣本來進(jìn)行訓(xùn)練[3]。
卷積神經(jīng)網(wǎng)絡(luò)一般由輸入層、卷積層、池化層、全連接層、輸出層組成,其中卷積層的可訓(xùn)練權(quán)值被稱為卷積核。卷積神經(jīng)網(wǎng)絡(luò)的初始化是針對(duì)卷積核及全連接層的權(quán)重值進(jìn)行合理有效的初始化,使網(wǎng)絡(luò)降低訓(xùn)練難度,更快收斂[4]。
在初始化方法中最為常見的是隨機(jī)初始化,其主要方法是通過選取某種概率分布生成一組隨機(jī)數(shù)來初始化卷積核[5]。該方法十分簡單且易于操作,但是存在較大的偶然性和不確定性,導(dǎo)致網(wǎng)絡(luò)的不穩(wěn)定性大大增加。在2010年,由Glorot等提出了Xavier算法初始化CNN,由于一般的神經(jīng)網(wǎng)絡(luò)在前向傳播時(shí)神經(jīng)元輸出值的方差會(huì)不斷增大,而利用Xavier算法理論上可以保證每層神經(jīng)元輸入輸出方差一致[6-7],但是Xavier算法從本質(zhì)上講還是通過生成隨機(jī)數(shù)來完成初始化,因此網(wǎng)絡(luò)仍然存在著不穩(wěn)定性。文獻(xiàn)[8]中通過主成分分析(principal component analysis,PCA)對(duì)每個(gè)卷積層輸入的每幅圖像先進(jìn)行所有感受野的采集,然后通過PCA提取主成分將其作為網(wǎng)絡(luò)的權(quán)重,從而達(dá)到初始化網(wǎng)絡(luò)權(quán)重的目的。該方法解決了通過隨機(jī)數(shù)初始化網(wǎng)絡(luò)帶來的不穩(wěn)定性,同時(shí)避免了人工設(shè)定超參數(shù),但是由于PCA在提取非線性特征上能力較差,無法提取圖像中存在的非線性特征,不能更加有效地初始化網(wǎng)絡(luò)權(quán)重。為此,文中提出了一種基于核主成分分析(kernel principal component analysis,KPCA)的方法來初始化卷積神經(jīng)網(wǎng)絡(luò)的權(quán)重,稱為KPCA-CNN。KPCA-CNN通過對(duì)每個(gè)卷積層輸入的每幅圖像的所有感受野進(jìn)行取樣作為KPCA的輸入樣本,經(jīng)KPCA映射至高維特征空間提取出所有感受野的非線性特征作為網(wǎng)絡(luò)權(quán)重的初始值,以提高網(wǎng)絡(luò)的準(zhǔn)確率,加快網(wǎng)絡(luò)的收斂速度。
一般卷積神經(jīng)網(wǎng)絡(luò)由輸入層、卷積層、池化層(下采樣層)、全連接層、輸出層構(gòu)成,如圖1所示[9]。
圖1 卷積神經(jīng)網(wǎng)絡(luò)模型
與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)相比,CNN主要增加了兩層:卷積層與池化層。其中卷積層是由輸入圖像與卷積核通過卷積后所得到的特征圖,通過卷積運(yùn)算使輸入圖像特征增強(qiáng),降低噪聲干擾,從而更好地提取圖像特征[10]。池化層一般在卷積層之后,主要目的是通過池化操作將卷積層中的特征圖進(jìn)行特征降維,減少網(wǎng)絡(luò)的計(jì)算量。將經(jīng)過多個(gè)卷積層與池化層后的特征圖通過全連接層完成對(duì)圖像的分類和識(shí)別[11]。具體過程如下:
假設(shè)卷積神經(jīng)網(wǎng)絡(luò)第i層的輸入圖像為Xi(輸入層的圖像為X0),Ci表示第i個(gè)卷積層,Si表示Ci之后的池化層,Hi表示第i個(gè)卷積層中的特征圖,Ji表示Si中池化后的特征圖。
生成Hi的過程如下:
Hi=f(wi*Xi+bi)
(1)
其中,wi表示第i個(gè)卷積層中的卷積核;“*”表示卷積運(yùn)算符;bi表示第i個(gè)卷積層中的偏置項(xiàng);f(·)表示非線性激勵(lì)函數(shù)。
之后通過池化層(Si)所得特征圖Ji如下式所示:
Ji=subsampling(Hi)
(2)
其中,subsampling表示池化操作。
最后由全連接層根據(jù)卷積層與池化層所提取特征進(jìn)行圖像分類與識(shí)別。
卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中通過反向傳播使損失函數(shù)達(dá)到最小,最終收斂于某個(gè)值,而有效的初始化,能減少網(wǎng)絡(luò)的訓(xùn)練復(fù)雜度和迭代次數(shù),因此卷積神經(jīng)網(wǎng)絡(luò)初始化就是更好地為各個(gè)卷積層的卷積核,全連接層的權(quán)值,各層的偏置項(xiàng)進(jìn)行初始化,由于池化層采用固定結(jié)構(gòu)所以無需初始化。KPCA-CNN主要針對(duì)卷積核的初始化,全連接層的權(quán)值采取隨機(jī)數(shù)初始化,卷積層的偏置項(xiàng)均設(shè)為0。
核方法是解決非線性模式分析問題的一種有效途徑,核心思想在于通過某種線性的映射將原始數(shù)據(jù)映射到合適的高維空間,再通過線性的學(xué)習(xí)器在新的高維空間中分析處理模式[12-13]。
核函數(shù)如下所示:
k=<φ(xi),φ(xj)>
(3)
其中,“<·>”表示內(nèi)積運(yùn)算符;φ為原樣本向高維特征空間的映射。
KPCA是PCA的一種非線性改進(jìn),主要是將樣本經(jīng)非線性變換映射至高維特征空間[14-15],在高維特征空間中使原樣本線性可分,從而更好地提取非線性特征。
設(shè)一組樣本集X={X1,X2,…,Xn},其中n為樣本個(gè)數(shù),KPCA原理如下:
(1)將樣本映射至高維特征空間φ(X);
以網(wǎng)絡(luò)中第一個(gè)卷積層為例,具體算法過程描述如下:
假設(shè)輸入層有2幅圖像,第一個(gè)卷積層中有4個(gè)卷積核,卷積核的大小為3×3。
(3)把所提取的主成分作為卷積核的初始值,對(duì)卷積神經(jīng)網(wǎng)絡(luò)的卷積核w1、w2、w3、w4進(jìn)行初始化。
實(shí)驗(yàn)1:采用Python中sklearn自帶的數(shù)據(jù)庫生成100個(gè)半月形分布數(shù)據(jù),如圖2所示,分別經(jīng)PCA與KPCA進(jìn)行處理,結(jié)果如圖3和圖4所示。從圖3和圖4中可以看出,經(jīng)PCA處理的數(shù)據(jù)不能有效地將非線性分布的數(shù)據(jù)完全分開,而KPCA能夠有效地使非線性分布數(shù)據(jù)完全分開,從而能更加有效地提取非線性特征。
圖2 生成的半月形分布數(shù)據(jù)
圖3 經(jīng)PCA處理后的數(shù)據(jù)
實(shí)驗(yàn)2:使用Python語言,通過TensorFlow搭建卷積神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)為:輸入層,3個(gè)卷積層,3個(gè)池化層(均采用最大池化方式),感受野大小均為2×2,1個(gè)全連接層,包含625個(gè)神經(jīng)元,輸出層包含了10個(gè)神經(jīng)元;卷積核大小為3×3,個(gè)數(shù)分別為:32,64,128。分別用PCA初始化方法和KPCA-CNN,在MNIST手寫數(shù)字識(shí)別上進(jìn)行100次訓(xùn)練,結(jié)果如圖5所示。
圖5 準(zhǔn)確率
由圖5可以看出,KPCA-CNN比PCA初始化CNN在測試集上的準(zhǔn)確率整體高出許多。KPCA初始化網(wǎng)絡(luò)訓(xùn)練約70次就可以達(dá)到收斂,而PCA初始化網(wǎng)絡(luò)訓(xùn)練約80次才能達(dá)到收斂。
針對(duì)卷積神經(jīng)網(wǎng)絡(luò)中卷積核初始化的問題,提出了一種基于KPCA的初始化方法。實(shí)驗(yàn)1的結(jié)果說明了KPCA比PCA有更好的非線性特征提取能力。實(shí)驗(yàn)2用KPCA和PCA兩種初始化CNN的方法在MNIST數(shù)據(jù)集上進(jìn)行訓(xùn)練,由于KPCA提取了原圖像中大量的非線性特征來初始化卷積核,從而增加了網(wǎng)絡(luò)識(shí)別準(zhǔn)確率,加快了網(wǎng)絡(luò)的收斂速度,從而表明KPCA能更有效地初始化卷積神經(jīng)網(wǎng)絡(luò)。