一 卷積神經網絡層級結構
保持了層級網絡結構
不同層次有不同形式(運算)與功能
主要是以下層次:
數據輸入層/input layer
三種常見的數據處理方式
- 去均值:把輸入數據各個維度都中心化到0
- 歸一化:幅度歸一化到同樣的範圍
- PCA/白化:用PCA降維,白化是對數據每個特徵軸上的幅度歸一化
卷積計算層/CONV layer
局部關聯:每個神經元看作一個filter
窗口(receptive filed)滑動,filter對局部數據計算
- 涉及概念: 深度/depth ,神經元的個數有關
- 步長/stride :窗口每次滑動多少個格子
- 填充值/zero-padding
參數共享機制:假設每個神經元連接數據窗的權重是固定的
固定每個神經元連接權重,可以看作模板:每個神經元只關注一個特性
需要估算的權重個數減少
一組固定的權重和不同窗口內數據做內積:卷積。
每個窗口數據會和神經元進行計算得到一個值,
激勵層 / Activation layer
激活函數
1)CNN慎用sigmoid!慎用sigmoid!
2)首先試RELU,因爲快,但要小心點
3)如果2)失敗,請用Leaky RELU 或者Maxout
4)某些情況下,tanh倒是有不錯的效果,但是很少
池化層/Pooling layer
-
又叫下采樣層
-
夾在連續的卷積層中間
-
壓縮數據和參數的量,減小過擬合
-
Max Pooling:保持最顯著特徵
-
average pooling
全連接層/FC layer
- 兩層之間所有神經元都有權重連接
- 通常全連接層在卷積神經網絡尾部
典型的CNN結構爲:1)Input; 2)[[CONV -> RELU]*N -> POOL ?]*M; 3)[FC ->RELU]*K ;
4)FC
Batch Normalization層(B規範化處理,可能有)
二 卷積神經網絡訓練算法
- 同一般機器學習算法,先定義Loss function,衡量和實際結果之間的差距
- 找到最小化損失函數的W和b,CNN中用的算法是SGD
- SGD需要計算W和b的偏導
- BP算法就是計算偏導用的
- BP算法的核心是求導鏈式法則
三 卷積神經網絡優缺點
- 優點:共享卷積核,優化計算量 ;無需手動選擇特徵,訓練好權重,即得特徵;深層次的網絡抽取圖象信息豐富,表達效果好
- 缺點:需要調參,需要大樣本量,GPU等硬件依賴;物理含義不明確
四 典型CNN
LeNet,這是最早用於數字識別的CNN
Alexnet,比LeNet更深,用多層小卷積層疊加替換單大卷積層
ZF Net,
GoogLeNet
VGGNet:在很多圖象轉化學習問題上效果好
ResNet:結構修正(殘差學習)以適應深層次CNN訓練