深度學習| 卷積神經網絡與典型結構

神經網絡與卷積神經網絡

從神經網絡到卷積神經網絡

  • DNN能用到計算機視覺上嗎?爲什麼需要CNN?
  • 卷積神經網絡和人工神經網絡的差異在哪?

 

 

1.層級結構

保持了層級網絡結構;

不同層次有不同形式(運算)與功能;

 

 主要是以下層次:

  • 數據輸入層/ Input Iayer
  • 卷積計算層/ CONV Iayer
  • 激勵層/ Activation Iayer
  • 池化層/ Pooling layer
  • 全連接層/ FC Iayer
  • Batch Normal i zation層(可能有)

數據輸入層/ Input Iayer

有3種常見的數據處理方式

  • 去均值(把輸入數據各個維度都中心化到0)
  • 歸一化(幅度歸一化到同樣的範圍)
  • PCA/ 白化(用PCA降維;白化是對數據每個特徵軸上的幅度歸一化)

去均值與歸一化

 

 去相關與白化

 

卷積計算出/ CONV Iayer

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

 

 

 

  • 參與共享機制;
    • 假設每個神經元連續數據窗的權重是固定的;
  • 固定每個神經元連接權重,可以看做模板;
    • 每個神經元只關注一個特性;
  • 需要估算的權重個數減少:一層1億 => 3.5w 
  • 一組固定的權重和不同窗口內數據做內積:卷積

 

 激勵層(ReLU)

把卷積層輸出結果做非線性映射

  • Sigmoid
  • Tanh(雙曲正切)
  • ReLU
  • Leeky ReLU
  • ELU
  • Maxout
  • ...

 

 

 

激勵層 

  1. CNN慎用sigmoid!慎用sigmoid!慎用sigmoid!
  2. 首先試RELU,因爲快,但要小心點;
  3. 如果2失效,請用Leaky ReLU或者Maxout;
  4. 某些情況下tanh倒是有不錯的結果,但是很少;

池化層/ Pooling Iayer 

  • 夾在連續的卷積層中間;
  • 壓縮數據和參數的量,減小過擬合;

 

 Max pooling 

average pooling 

 

 全連接層/ FC Iayer

  • 兩層之間所有神經元都有權重連接;
  • 通常全連接層在卷積神經網絡尾部;

典型的CNN結構爲

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

 

2.卷積可視化理解

 

 

 

 

 

 

 

 

3.訓練算法

  1. 同一般機器學習算法,先定義Loss function,衡量和實際結果之間的差距;
  2. 找到最小化損壞函數的W和b,CNN中用的算法是SGD ;
  3. SGD需要計算W和b的偏導;
  4. BP算法就是計算偏導用的;
  5. BP算法的核心是求導鏈式法則;

BP算法利用鏈式求導法則,逐級相乘直到求解出dw和db ;

利用SGD/ 隨機梯度下降法,迭代和更新w和b 

 

4.優缺點

優點

  • 共享卷積核,優化計算量;
  • 無需手動選取特徵,訓練好權重,即得特徵;
  • 深層次的網絡抽取圖像信息豐富,表達效果好;

缺點

  • 需要調參,需要大樣本量,GPU等硬件依賴;
  • 物理含義不明確;

 

正則化與Dropout

1.正則化與Dropout處理

神經網絡學習能力強可能會過擬合;

Dropout(隨機失活)正則化:別一次開啓所有學習單元

Regularization: Dropout 

“randomly set some neurons to zero in the forward pass”

 

 Dropout 

 實際實現:把預測階段的時間轉移到訓練上

 

2.Dropout理解

防止過擬合的第1種理解方式

  • 別讓你的神經網絡記住那麼多東西(雖然CNN記憶力好);
  • 學習的過程中,保持泛化能力;

 

 防止過擬合的第2種理解方式:

  • 每次都關掉一部分感知器,得到一個新模型,最後做融合,不至於聽一家所言;

對Dropout想要有更細緻的瞭解,參見

《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》 2014, Hinton, etc

《Dropout Training as Adaptive Regularization》 2013, Stefan Wager, etc  

 

典型結構與訓練

1.典型CNN

  • LeNet, 這是最早用於數字識別的CNN;
  • AlexNet, 2012ILSVRC比賽遠超第2名的CNN,比LeNet更深,用多層小卷積層疊加替換單大卷積層;
  • ZF Net,2013ILSVRC比賽冠軍;
  • GoogLeNet, 2014ILSVRC比賽冠軍;
  • VGGNet,2014ILSVRC比賽中的模型,圖像識別略差於GoogLeNet,但是在很多圖像轉化學習問題(比如object detection)上效果很好;
  • ResNet,2015ILSVRC比賽冠軍,結構修正(殘差學習)以適應深層次CNN訓練;
  • DenseNet,CVPR2017best paper, 把ResNet的add變成concat

LeNet 

 

 

 

 AlexNet 

2012Imagent比賽第一,Top5準確度超過第二10%;

The number of neurons in each layer is given by 253440,186624,64896,64896,43264,4096,4096,1000 

 

 

 

 ZFNet

 

 VGG

 

 

 

 

 

 GoogLeNet

 

 

 

 ResNet,即Deep Residual Learning network

微軟亞洲研究院提出,ILSVRC 2015冠軍比BGG還要深8倍; 

 

 DenseNet,CVPR2017 best paper;

 

 

 

 

2.訓練與調優

 

 

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