卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
一個(gè)卷積神經(jīng)網(wǎng)絡(luò)主要由以下5種結(jié)構(gòu)組成:
1.輸入層。輸入層是整個(gè)神經(jīng)網(wǎng)絡(luò)的輸入,在處理圖像的卷積神經(jīng)網(wǎng)絡(luò)中,它一般代表了一張圖片的像素矩陣。比如在圖6-7中,最左側(cè)的三維矩陣的長和寬代表了圖像的大小,而三維矩陣的深度代表了圖像的色彩通道(channel)。比如黑白圖片的深度為1,而在RGB色彩模式下,圖像的深度為3。從輸入層開始,卷積神經(jīng)網(wǎng)絡(luò)通過不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)下將上一層的三維矩陣轉(zhuǎn)化為下一層的三維矩陣轉(zhuǎn)化為下一層的三維矩陣,直到最后的全連接層。
2.卷積層。從名字就可以看出,卷積層是一個(gè)卷積神經(jīng)網(wǎng)絡(luò)中最重要的部分。和傳統(tǒng)全連接層不同,卷積層中的每一個(gè)節(jié)點(diǎn)的輸入只是上一層神經(jīng)網(wǎng)絡(luò)中的一小塊,這個(gè)小塊的大小有3*3或者5*5。卷積層試圖將神經(jīng)網(wǎng)絡(luò)中的每一個(gè)小塊進(jìn)行更加深入的分析從而得到抽象程度更高的特征。一般來說,通過卷積層處理的節(jié)點(diǎn)矩陣會(huì)變得更深,所以圖6-7中可以看到經(jīng)過卷積層之后的節(jié)點(diǎn)矩陣的深度會(huì)增加。
3.池化層。池化層神經(jīng)網(wǎng)絡(luò)不會(huì)改變?nèi)S矩陣的深度,但是它可以縮小矩陣的大小。池化操作可以認(rèn)為是將一張分辨率較高的圖片轉(zhuǎn)化為分辨率較低的圖片。通過池化層,可以進(jìn)一步縮小最后全連接層中節(jié)點(diǎn)的個(gè)數(shù),從而達(dá)到減少整個(gè)神經(jīng)網(wǎng)絡(luò)中的參數(shù)的目的。
4.全連接層。如圖6-7所示,在經(jīng)過多輪卷積層和池化層處理之后,在卷積神經(jīng)網(wǎng)絡(luò)的最后一般會(huì)由1到2個(gè)全連接 層來給出最后的分類結(jié)果。經(jīng)過幾輪的卷積層和池化層的處理之后,可以認(rèn)為圖像中的信息已被抽象成了信息含量更高的特征。我們可以將卷積層和池化層看成自動(dòng)圖像特征提取的過程。在特征提取完成之后,仍然需要使用全連接層來完成分類任務(wù)。
5.Softmax層。Softmax層主要用于分類問題。經(jīng)過Softmax層,可以得到當(dāng)前樣例中屬于不同種類的概率分布情況。
卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程分為兩個(gè)階段。第一個(gè)階段是數(shù)據(jù)由低層次向高層次傳播的階段,即前向傳播階段。另外一個(gè)階段是,當(dāng)前向傳播得出的結(jié)果與預(yù)期不相符時(shí),將誤差從高層次向底層次進(jìn)行傳播訓(xùn)練的階段,即反向傳播階段。訓(xùn)練過程如圖4-1所示。訓(xùn)練過程為:
1、網(wǎng)絡(luò)進(jìn)行權(quán)值的初始化;
2、輸入數(shù)據(jù)經(jīng)過卷積層、下采樣層、全連接層的向前傳播得到輸出值;
3、求出網(wǎng)絡(luò)的輸出值與目標(biāo)值之間的誤差;
4、當(dāng)誤差大于我們的期望值時(shí),將誤差傳回網(wǎng)絡(luò)中,依次求得全連接層,下采樣層,卷積層的誤差。各層的誤差可以理解為對(duì)于網(wǎng)絡(luò)的總誤差,網(wǎng)絡(luò)應(yīng)承擔(dān)多少;當(dāng)誤差等于或小于我們的期望值時(shí),結(jié)束訓(xùn)練。
5、根據(jù)求得誤差進(jìn)行權(quán)值更新。然后在進(jìn)入到第二步。
圖4-1卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程
1.1卷積神經(jīng)網(wǎng)絡(luò)的前向傳播過程
在前向傳播過程中,輸入的圖形數(shù)據(jù)經(jīng)過多層卷積層的卷積和池化處理,提出特征向量,將特征向量傳入全連接層中,得出分類識(shí)別的結(jié)果。當(dāng)輸出的結(jié)果與我們的期望值相符時(shí),輸出結(jié)果。
1.1.1卷積層的向前傳播過程
卷積層的向前傳播過程是,通過卷積核對(duì)輸入數(shù)據(jù)進(jìn)行卷積操作得到卷積操作。數(shù)據(jù)在實(shí)際的網(wǎng)絡(luò)中的計(jì)算過程,我們以圖3-4為例,介紹卷積層的向前傳播過程。其中一個(gè)輸入為15個(gè)神經(jīng)元的圖片,卷積核為2×2×1的網(wǎng)絡(luò),即卷積核的權(quán)值為W1,W2,W3,W4。那么卷積核對(duì)于輸入數(shù)據(jù)的卷積過程,如下圖4-2所示。卷積核采用步長為1的卷積方式,卷積整個(gè)輸入圖片,形成了局部感受野,然后與其進(jìn)行卷積算法,即權(quán)值矩陣與圖片的特征值進(jìn)行加權(quán)和(再加上一個(gè)偏置量),然后通過激活函數(shù)得到輸出。
圖4-2圖片深度為1,卷積層的向前傳播過程
而在圖3-4中,圖片深度為2時(shí),卷積層的向前傳播過程如圖4-3所示。輸入的圖片的深度為4×4×2,卷積核為2×2×2,向前傳播過程為,求得第一層的數(shù)據(jù)與卷積核的第一層的權(quán)值的加權(quán)和,然后再求得第二層的數(shù)據(jù)與卷積核的第二層的權(quán)值的加權(quán)和,兩層的加權(quán)和相加得到網(wǎng)絡(luò)的輸出。
圖4-3圖片深度為2,卷積層的向前傳播過程
1.1.2下采樣層的向前傳播過程
上一層(卷積層)提取的特征作為輸入傳到下采樣層,通過下采樣層的池化操作,降低數(shù)據(jù)的維度,可以避免過擬合。如圖4-4中為常見的池化方式示意。最大池化方法也就是選取特征圖中的最大值。均值池化則是求出特征圖的平均值。隨機(jī)池化方法則是先求出所有的特征值出現(xiàn)在該特征圖中的概率,然后在來隨機(jī)選取其中的一個(gè)概率作為該特征圖的特征值,其中概率越大的選擇的幾率越大。
圖4-4池化操作示意圖
1.1.3全連接層的向前傳播過程
特征圖進(jìn)過卷積層和下采樣層的特征提取之后,將提取出來的特征傳到全連接層中,通過全連接層,進(jìn)行分類,獲得分類模型,得到最后的結(jié)果。圖4-5為一個(gè)三層的全連接層。假設(shè)卷積神經(jīng)網(wǎng)絡(luò)中,傳入全連接層的特征為x1,x2。則其在全連接層中的向前傳播過程如圖4-5所示。第一層全連接層有3個(gè)神經(jīng)元y1,y2,y3。這三個(gè)節(jié)點(diǎn)的權(quán)值矩陣為W,其中b1,b2,b3分別為節(jié)點(diǎn)y1,y2,y3的偏置量??梢钥闯?,在全連接層中,參數(shù)的個(gè)數(shù)=全連接層中節(jié)點(diǎn)的個(gè)數(shù)×輸入的特征的個(gè)數(shù)+節(jié)點(diǎn)的個(gè)數(shù)(偏置量)。其向前傳遞過程具體如圖所示,得到輸出矩陣后,經(jīng)過激勵(lì)函數(shù)f(y)的激活,傳入下一層。
圖4-5全連接層的向前傳播過程
1.2卷積神經(jīng)網(wǎng)絡(luò)的反向傳播過程
當(dāng)卷積神經(jīng)網(wǎng)絡(luò)輸出的結(jié)果與我們的期望值不相符時(shí),則進(jìn)行反向傳播過程。求出結(jié)果與期望值的誤差,再將誤差一層一層的返回,計(jì)算出每一層的誤差,然后進(jìn)行權(quán)值更新。該過程的主要目的是通過訓(xùn)練樣本和期望值來調(diào)整網(wǎng)絡(luò)權(quán)值。誤差的傳遞過程可以這樣來理解,首先,數(shù)據(jù)從輸入層到輸出層,期間經(jīng)過了卷積層,下采樣層,全連接層,而數(shù)據(jù)在各層之間傳遞的過程中難免會(huì)造成數(shù)據(jù)的損失,則也就導(dǎo)致了誤差的產(chǎn)生。而每一層造成的誤差值是不一樣的,所以當(dāng)我們求出網(wǎng)絡(luò)的總誤差之后,需要將誤差傳入網(wǎng)絡(luò)中,求得該各層對(duì)于總的誤差應(yīng)該承擔(dān)多少比重。
反向傳播的訓(xùn)練過程的第一步為計(jì)算出網(wǎng)絡(luò)總的誤差:求出輸出層n的輸出a(n)與目標(biāo)值y之間為誤差。計(jì)算公式為:
其中,為激勵(lì)函數(shù)的導(dǎo)函數(shù)的值。
1.2.1全連接層之間的誤差傳遞
求出網(wǎng)絡(luò)的總差之后,進(jìn)行反向傳播過程,將誤差傳入輸出層的上一層全連接層,求出在該層中,產(chǎn)生了多少誤差。而網(wǎng)絡(luò)的誤差又是由組成該網(wǎng)絡(luò)的神經(jīng)元所造成的,所以我們要求出每個(gè)神經(jīng)元在網(wǎng)絡(luò)中的誤差。求上一層的誤差,需要找出上一層中哪些節(jié)點(diǎn)與該輸出層連接,然后用誤差乘以節(jié)點(diǎn)的權(quán)值,求得每個(gè)節(jié)點(diǎn)的誤差,具體如圖所示:
圖4-6全連接層中誤差的傳遞過程
1.2.2當(dāng)前層為下采樣層,求上一層的誤差
在下采樣層中,根據(jù)采用的池化方法,把誤差傳入到上一層。下采樣層如果采用的是最大池化(max-pooling)的方法,則直接把誤差傳到上一層連接的節(jié)點(diǎn)中。果采用的是均值池化(meanpooling)的方法,誤差則是均勻的分布到上一層的網(wǎng)絡(luò)中。另外在下采樣層中,是不需要進(jìn)行權(quán)值更新的,只需要正確的傳遞所有的誤差到上一層。
1.2.3當(dāng)前層為卷積層,求上一層的誤差
卷積層中采用的是局部連接的方式,和全連接層的誤差傳遞方式不同,在卷積層中,誤差的傳遞也是依靠卷積核進(jìn)行傳遞的。在誤差傳遞的過程,我們需要通過卷積核找到卷積層和上一層的連接節(jié)點(diǎn)。求卷積層的上一層的誤差的過程為:先對(duì)卷積層誤差進(jìn)行一層全零填充,然后將卷積層進(jìn)行一百八十度旋轉(zhuǎn),再用旋轉(zhuǎn)后的卷積核卷積填充過程的誤差矩陣,并得到了上一層的誤差。如圖4-7為卷積層的誤差傳遞過程。圖右上方為卷積層的向前卷積過程,而右下方為卷積層的誤差傳遞過程。從圖中可以看出,誤差的卷積過程正好是沿著向前傳播的過程,將誤差傳到了上一層。
圖4-7卷積層的誤差傳遞過程
1.3卷積神經(jīng)網(wǎng)絡(luò)的權(quán)值更新
1.3.1卷積層的權(quán)值更新
卷積層的誤差更新過程為:將誤差矩陣當(dāng)做卷積核,卷積輸入的特征圖,并得到了權(quán)值的偏差矩陣,然后與原先的卷積核的權(quán)值相加,并得到了更新后的卷積核。如圖4-8,圖中可以看出,該卷積方式的權(quán)值連接正好和向前傳播中權(quán)值的連接是一致的。
圖4-8卷積核的權(quán)值更新過程
1.3.2全連接層的權(quán)值更新過程
全連接層中的權(quán)值更新過程為:
1、求出權(quán)值的偏導(dǎo)數(shù)值:學(xué)習(xí)速率乘以激勵(lì)函數(shù)的倒數(shù)乘以輸入值;
2、原先的權(quán)值加上偏導(dǎo)值,得到新的權(quán)值矩陣。具體的過程如圖4-9所示(圖中的激活函數(shù)為Sigmoid函數(shù))。
圖4-9全連接層的權(quán)值更新過程
責(zé)任編輯:YYX
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100712 -
卷積神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
4文章
367瀏覽量
11863
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論