DL課程:CNN及相關應用案例程式碼
阿新 • • 發佈:2018-12-20
以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。
前面介紹了MLP、RNN以及相關案例,本文主要介紹一種新的神經網路:CNN卷積神經網路。
CNN卷積神經網路:
卷積神經網路相比RNN多了很多層級,主要包括以下幾個層次:input layer資料輸入層、conv卷積計算層、Activation layer激勵層、pooling layer池化層、FC layer全連線層、Batch Normalization層。
- 資料輸入層/ Input layer有三種常見資料處理方式:
①去均值:把輸入資料各個維度都中心化到0; ②歸一化:幅度歸一化到同樣的範圍 ; ③PCA/白化 - 卷積計算層/ CONV layer 作用是:區域性關聯,每個神經元看做一個filter濾波器。視窗(receptive field)滑動,filter對區域性資料計算;涉及概念:深度/depth、步長/stride、填充值/zero-padding 卷積層引數共享機制的性質:
①假設每個神經元連線資料窗的權重是固定的;
②固定每個神經元連線權重,可以看做模板,每個神經元只關注一個特性;
③需要估算的權重個數減少:一層1億減少至3.5萬;
④一組固定的權重和不同視窗內資料做內積即卷積。 - 激勵層:把卷積層輸出結果做非線性對映,前面介紹DNN時就詳細講過,沒看的可以檢視:
①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......