神經網絡與卷積神經網絡
從神經網絡到卷積神經網絡
- 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
- ...
激勵層
- CNN慎用sigmoid!慎用sigmoid!慎用sigmoid!
- 首先試RELU,因爲快,但要小心點;
- 如果2失效,請用Leaky ReLU或者Maxout;
- 某些情況下tanh倒是有不錯的結果,但是很少;
池化層/ Pooling Iayer
- 夾在連續的卷積層中間;
- 壓縮數據和參數的量,減小過擬合;
Max pooling
average pooling
全連接層/ FC Iayer
- 兩層之間所有神經元都有權重連接;
- 通常全連接層在卷積神經網絡尾部;
典型的CNN結構爲
- INPUT
- [[ CONV -> RELU ] * N -> POOL ?] * M
- [ FC -> RELU ] * K
- FC
2.卷積可視化理解
3.訓練算法
- 同一般機器學習算法,先定義Loss function,衡量和實際結果之間的差距;
- 找到最小化損壞函數的W和b,CNN中用的算法是SGD ;
- SGD需要計算W和b的偏導;
- BP算法就是計算偏導用的;
- 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.訓練與調優