DL課程:CNN及相關應用案例代碼

以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。

前面介紹了MLP、RNN以及相關案例,本文主要介紹一種新的神經網絡:CNN卷積神經網絡。

CNN卷積神經網絡:

卷積神經網絡相比RNN多了很多層級,主要包括以下幾個層次:input layer數據輸入層、conv卷積計算層、Activation layer激勵層、pooling layer池化層、FC layer全連接層、Batch Normalization層。

  • 數據輸入層/ Input layer有三種常見數據處理方式:
    去均值:把輸入數據各個維度都中心化到0;

    歸一化:幅度歸一化到同樣的範圍 ;

    PCA/白化 :用PCA降維、白化是對數據每個特徵軸上的幅度歸一化;

  • 卷積計算層/ CONV layer 作用是:局部關聯,每個神經元看做一個filter濾波器。窗口(receptive field)滑動,filter對局部數據計算;涉及概念:深度/depth、步長/stride、填充值/zero-padding

    卷積層參數共享機制的性質:
    ①假設每個神經元連接數據窗的權重是固定的;
    ②固定每個神經元連接權重,可以看做模板,每個神經元只關注一個特性;
    ③需要估算的權重個數減少:一層1億減少至3.5萬;
    ④一組固定的權重和不同窗口內數據做內積即卷積。

  • 激勵層:把卷積層輸出結果做非線性映射,前面介紹DNN時就詳細講過,沒看的可以查看:DL課程:MLP、DNN、Wide&deep model及相關案例代碼

    激勵層主要有以下幾點注意事項:
    ①CNN慎用sigmoid!
    ②首先試RELU,因爲快,但要小心點;
    ③如果2失效,請用Leaky ReLU或者Maxout ;
    ④某些情況下tanh倒是有不錯的結果,但是很少。
  • 池化層 / Pooling layer:夾在連續的卷積層中間,主要作用是壓縮數據和參數的量,減小過擬合:

    主要包括:Max pooling和average pooling:

  • 全連接層 / FC layer :就是普通的所有神經元都有權重連接的層,通常接在卷積神經網絡的尾部。
  • 典型的CNN結構爲:

  • 卷積神經網絡優缺點
    優點:①共享卷積核,優化計算量;②無需手動選取特徵,訓練好權重,即得特徵;③深層次的網絡抽取圖像信息豐富,表達效果好;
    缺點:①需要調參,需要大樣本量,GPU等硬件依賴;②物理含義不明確
  • 損失函數、優化算法以及正則化參考與上面一樣。

CNN發展:

  • LeNet,這是最早用於數字識別的CNN :

  • AlexNet,2012 ILSVRC比賽遠超第2名的CNN,比LeNet更深,用多層小卷積層疊加替換單大卷積層:

  • ZF Net,2013 ILSVRC比賽冠軍 :

  • GoogLeNet,2014 ILSVRC比賽冠軍:

  • VGGNet,2014 ILSVRC比賽中的模型,圖像識別略差於GoogLeNet,但是在很多圖像轉化學習問題(比如object detection)上效果很好 :

  • ResNet,即Deep Residual Learning network,是2015ILSVRC比賽冠軍,結構修正(殘差學習)以適應深層次CNN訓練,比VGG還要深8倍,主要是有一個快速通道與後面的神經元直連,因此可以在BP時計算梯度爲相加的形式,不會產生梯度彌散:

具體案例代碼:歡迎關注我的github


To be continue......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章