1. 程式人生 > >卷積神經網路筆記

卷積神經網路筆記

通常的神經網路是通過連線多層的神經元對輸入的向量進行處理,資料和神經元是全連線的形式,通過樣本的訓練完成權值的訓練而卷積神經網路是有卷積層 激勵層 池化層 全連線層組成,首先卷積神經網路的提出是優化一般神經網路的訓練效率,我們知道卷積神經網路在卷積層 激勵層 池化層都並非全連線狀態,所以訓練的權值也相對減少,但是卷積神經網路要達到的效果是減少訓練引數的數量但是不減少訓練樣本的質量。

對於卷積神經網路,每一個卷積核代表一種feature map的提取,例如是6*6的input,第一層卷積層由三個卷積核構成,主要是提取原input的三個特徵,input與每個卷積核進行內積計算,這裡設定stride為1,zero-padding為0,分別生成三個4*4的特徵矩陣,這裡的計算公式是(提取出的特徵矩陣的維數=[(input的維數-卷積核的維數+2*zero-padding)/stride]+1 )。

這裡可以對比一般的神經網路,CNN一個厲害的地方就在於通過感受野和權值共享減少了神經網路需要訓練的引數的個數,所謂權值共享就是同一個Feature Map中神經元權值共享,該Feature Map中的所有神經元使用同一個權值。因此引數個數與神經元的個數無關,只與卷積核的大小及Feature Map的個數相關。但是共有多少個連線個數就與神經元的個數相關了,神經元的個數也就是特徵矩陣的大小。一個卷積核是由多個類似於一般神經網路中的神經元組成的,特徵矩陣的元素的個數,即相當相應卷積核中的神經元個數,例如這裡等價的每個卷積核神經元個數是4*4=16個,即每個卷積核就是由16個神經元組成,然後第一層總共有三個卷積核,所以第一層總共有16*3=48個神經元。

然後這些神經元是怎麼與輸入相連線的呢,我們考慮input中每一個滑窗區域矩陣,這裡因為卷積核的維數是3*3,所以輸入矩陣分割成16個3*3的滑窗矩陣,每一個滑窗矩陣總共九個元素,這九個元素連線到一個相同的神經元上面,神經元的輸出也就是特徵矩陣的第一個元素。如下圖所示:

                                   

                                        卷積層計算示意圖                                  卷積層計算在神經網路上面的等價   

可以看出對於一個卷積核來說,每個神經元連線10個輸入(加上偏值),一個卷積核共有10*16個類似於神經元的連線,但是CNN在通過權值共享,每個卷積核的16個神經元的160個連線要訓練的權值只有10個,這大大提高了訓練的效率, 3個卷積核共有48個神經元,160*3=480個連線,10*3=30個引數訓練。