深度學習二、CNN(卷積神經網絡)概念及理論


一、卷積神經網絡(CNN)

1、常見的CNN結構有:LeNet-5、AlexNet、ZFNet、VGGNet、ResNet等。目前效率最高的是ResNet。

2、主要的層次:

 數據輸入層:Input Layer

 卷積計算層:CONV Layer

 ReLU激勵層:ReLU Incentive Layer(功能就是和激活函數一樣,具有非線性的能力)

 池化層:Pooling Layer(壓縮形式,降低復雜度)

 全聯接層: FC Layer 

 備注 :Batch Normalization Layer

3、詳解Input Layer

   和傳統的神經網絡一樣,首先需要對輸入的數據進行預處理。

(1) 去均值:將輸入數據的各個維度中心化到0,例如X1(1,2,5),那么平均值就是(1+2+5)/3 = 8/3,在用每一個元素減去8/3。

(2)歸一化:將數據各個維度的幅度歸一到同樣的范圍。(在去均值的基礎上,再除以標准差)

(3)PCA/白化:(在cnn處理圖片不用這個)

          用PCA降維(去掉特征與特征之間的相關性)

          白化石在PCA的基礎上,對轉換后的數據每個特征軸上的幅度進行歸一化

  例:(去均值和歸一化)

    

   例:PCA和白化

    

4、CONV Layer(卷積)

  • 局部關聯:每個神經元看做一個filter/kernal
  • 窗口(receptive field)滑動,filter對局部數據進行計算
  • 相關概念(深度:depth,步長:stride,填充值:zero-padding)

 理解這張圖

  (1)可以把每一張圖片分割成很多個神經元,如圖最左邊

    (2) 每一個圖片可用RGB(紅、綠、藍三個通道的顏色)三個方面來表示。

  (3)filter可以看作是從幾個角度來描述這個圖片(比如說大小,形狀),有幾個角度,深度就是多少,那么每一個角度,就對應一組filter。

  (4)如上圖:一般的圖片為正方形,步長s=2,窗口大小f=3,高度h=5,寬度w=5,填充p=1*2,滿足(p+w-f+s)/s 能夠被整除,輸出為out輸出矩陣的大小

 卷積神經網絡就是解決了全鏈接神經網絡復雜度,進行局部感知,如 下圖:

 

 5、ReLU Layer(激活)

   一班用ReLU,如果效果不好,可用Leak Relu

  

   

6、池化層 Pooling Layer

    在連續的卷積層中間存在的就是池化層,主要功能是:通過逐步減小表征的空間尺寸來減小參數量和網絡中的計算;池化層在每個特征圖上獨立操作。使用池化層可以壓縮數據和參數的量,減小過擬合。

 

  

   類似傳統神經網絡中的結構,FC層中的神經元連接着之前層次的所有激活輸出; 換一句話來講的話,就是兩層之間所有神經元都有權重連接;通常情況下,在 CNN中,FC層只會在尾部出現

     一般的CNN結構依次為:

       INPUT
       [[CONV -> RELU] * N -> POOL?]*M [FC -> RELU] * K
       [FC -> RELU] * K

        FC 

7、 初始化參數(在卷積神經網絡中,可以看到神經元之間的連接是通過權重w以及偏置b實現的。在具 體的神經網絡之前 ,需要初始化參數)

     權重的初始化 :

        一般方式:很小的隨機數(對於多層深度神經網絡,太小的值會導致回傳的梯度非常小),一般隨機 數是服從均值為0,方差未知(建議:2/n, n為權重數量,https://arxiv.org/pdf/1502.01852.pdf) 的高斯分布隨機數列。 

     偏置項的初始化 :

       一般直接設置為0,在存在ReLU激活函數的網絡中,也可以考慮設置為一個很小的數字 

8、卷積神經網絡正則化和Dropout

     神經網絡的學習能力受神經元數目以及神經網絡層次的影響,神經元數目越大, 神經網絡層次越高,那么神經網絡的學習能力越強,那么就有可能出現過擬合的問題 。

     Regularization:正則化,通過降低模型的復雜度,通過在cost函數上添加 一個正則項的方式來降低overfitting,主要有L1和L2兩種方式 

     Dropout:通過隨機刪除神經網絡中的神經元來解決overfitting問題,在每次迭代的時候,只使用部分神經元訓練模型獲取W和d的值(

每次丟掉一半左右的隱 藏層神經元,相當於在不同的神經網絡上進行訓練,這樣就減少了神經元之間的依 賴性,即每個神經元不能依賴於某幾個其它的神經元(指層與層之間相連接的神經 元),使神經網絡更加能學習到與其它神經元之間的更加健壯robust(魯棒性)的 特征。另外Dropout不僅減少overfitting,還能提高准確率 )

9、卷積神經網絡訓練的方法

   在神經網絡中一般采用Mini-batch SGD,主要包括以下四個步驟的循環: 

    (1)采樣一個batch的數據

   (2)前向計算損失loss

   (3)反向傳播計算梯度(一個batch上所有樣本的梯度和) 

   (4)利用梯度更新權重參數 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM