1. 程式人生 > >CNN卷積神經網路層級結構

CNN卷積神經網路層級結構

卷積神經網路層次結構包括:

資料輸入層/ Input layer
卷積計算層/ CONV layer
激勵層 / ReLU layer
池化層 / Pooling layer
全連線層 / FC layer

輸入層(Input layer)

輸入資料,通常會作一些資料處理,例如:

去均值:把輸入資料各個維度都中心化到0

歸一化:幅度歸一化到同一範圍

PCA/白化:用PCA降維,白化是在對資料每個特徵軸上的資料進行歸一化。

卷積計算層(CONV layer)


如上圖圖所示,左邊為資料集,右邊為一個神經網路

視窗:卷積計算層會在資料集上選定一個視窗,從視窗內選擇資料

深度(depth):如下圖所示,左邊的資料集深度為3,右邊的神經網路深度為5(有五個神經元)

步長(stride):視窗每次移動的距離

填充值(zero-padding):因為視窗移動到資料邊緣時,可能不能正好遍歷完所有資料,所以有時要在資料集周邊填充上若干圈全為0的資料

如上所示,左邊為輸入資料,中間為兩個神經元,右邊為輸出。可以看到左邊的輸入資料中,視窗大小為3*3,每次移動的步長為2,周圍有一層的填充資料,深度為3。中間為兩個Filter,也就是線性方程的係數,注意Filter下面還有兩個Bias偏移量。將視窗中的資料分別和Filter中的資料做卷積運算(即對應位置的資料相乘),再加上Bias偏移量即可得到一個輸出矩陣中的一個值。比如在第一幅圖的第三個視窗中的資料與Filter W0所做的運算為:

第一個視窗:0*0+0*0+0*(-1)+0*1+1*0+2*0+0*1+1*0+0*1=0

第二個視窗:0*0+0*1+0*(-1)+0*(-1)+0*1+2*(-1)+0*0+2*(-1)+2*0=-4

第三個視窗:0*0+0*1+0*(-1)+0*1+0*(-1)+1*0+0*0+2*0+0*(-1)=0

將這三個視窗中的值加起來再加上偏移量即得到了輸出值:0+(-4)+0+1(偏移量)=-3,即第一個輸出矩陣中的第一個值。

通過卷積層的計算後,可以使資料量大大減少,並且能夠一定程度上儲存資料集的資訊

激勵層

  激勵層的主要作用是將卷積層的結果做非線性對映。常見的激勵層函式有sigmoid、tanh、Relu、Leaky Relu、ELU、Maxout

sigmoid函式如下所示:

sigmoid函式是早期用的比較多的激勵函式,但現在已經不常用了。主要是當輸入特別大或者特別小時,sigmoid函式的偏導數趨於0,這樣在使用反向傳播演算法時將會出現問題,並且sigmoid函式不是關於原點對稱的,這樣在進行反向傳播時w的梯度要麼全為正,要麼全負(w的梯度即為x乘以上一層的梯度,x恆為正,所以梯度的正負一直不變),收斂速度會非常慢。tanh函式與sigmoid函式影象類似,但是它比sigmoid函式好的一點是tanh函式是關於原點對稱的,這樣可以減少資料的傾斜。

現在比較常用的激勵函式為ReLu(The Rectified Linear Unit/修正線性單元),函式表示式為:f(x)=max(0,x),其函式影象如下所示:

ReLu函式的有點是收斂非常快,因為在原點右側它的偏導數為1,求導簡單,這樣在做反向傳播時速度比較快。缺點時較為脆弱,原點左側的函式具有的sigmoid相似的問題,即導數等於0。

Leaky ReLu在是ReLu的“增強版”,其函式表示式為:f(x)=max(ax,x),a通常為一個比較小的數,比如0.01,線面是a=0.01時的影象:

可以看到,相比ReLu,Leaky ReLu在原點左側的表示式中對x乘以了一個比較小的係數,這樣保證了在做反向傳播時不會掛掉,並且其計算也很快。

ELU指數線性單元

ELU不會掛掉,計算速度比較快,並且輸出的均值趨於0,但是由於指數的存在,計算量略大。

Maxout:

兩條直線拼接而成,計算是線性的,比較快,不會飽和不會掛,但是引數比較多。

激勵函式使用總結:

1.儘量不要用sigmoid函式

2.首選ReLu,速度快,但是需要小心,有可能會掛掉

3.ReLu不行的話再選用Leaky ReLu或者Maxout

池化層(Pooling layer)

在連續的卷基層和激勵層中間,用於壓縮資料和引數的量,用於減少過擬合。

池化層的選擇策略有max pooling和average Pooling,上圖展示的就是max Pooling的過程。在原始的資料層上劃分一個個小塊,在每個小塊中選擇最大的那個數代表這個小塊中所有的數(如果是average Pooling就選擇平均數),放到下一層。這樣就打打減少了資料量。這種做法的理論依據好像還不太清楚,但是可以想象在一幅圖中,每個畫素點和其周邊的點大致是一樣的,所以用一個點代替其周邊點也有一定道理。

全連線層(FC layer)

全連線層即兩層之間的所有神經元都有權重連線,通常會在卷積神經網路的尾部。