一、神經網絡與卷積神經網絡
0.DNN(MLP多層感知器)能用到計算機視覺上嗎?為什么需要CNN
DNN可以用在計算機視覺上,
1.卷積神經網絡和人工神經網絡的差異在哪里?
為什么需要卷積神經網絡。下面是一個32x32x3的圖片,隱層一般為1024或者4096的維度。輸入維度是4k左右,隱層在1024維度。這會導致過擬合和太大的計算量
2.層級結構
(1)保持了層級網絡結構
(2)不同層次有不同的形式(運算)與功能
(3)主要有以下層次
數據輸入層/Input layer
有3中常見的數據處理方式:
去均值:把輸入數據各個維度第中心化到0,必做,AlexNet,VGG,在RGB上取均值。
歸一化:幅度歸一化到同樣的范圍,必做
PCA/白化:用PCA降維;白化是對數據每個特征軸上的幅度歸一化
下圖一是原始數據,數據不要隨着每次的變化偏移越來越大或者說有越來越大的偏移度,所以需要去均值,將數據各個維度中心化到0
如下圖,使用PCA降維,找到一些正交的軸,然后將數據投影到軸上,是一個去相關的操作。白化是做完PCA之后,把數據歸一化到一個范圍之內。
圖像處理:resize()===>sub mean(去均值)
卷積計算層/CONV layer 第一層
卷積核(kernel,filter):第二層用於數據處理,用於數據計算的神經元.
每個神經元和前一層的所有輸入都去進行連接,而且 每一個連接都要給一個權重w,這個時候參數量就會很大,
局部關聯。每個神經元看做一個filter
窗口(receptive field)滑動,filter對局部數據計算
涉及概念:
深度/depth,第二層神經元的個數,有多少個kernel(filter)這個depth值就是多少
步長/stride,滑窗每次滑動的格數
填充值/zero-padding,在周邊補0的圈數
滑窗滑到每個位置的計算。用滑窗和對應位置做乘積,然后將所有的乘積加在一起。每到一個位置都是做這樣的處理,
參數共享機制
假設每個神經元連接數據窗的權重是固定的;假定每個神經院連接權重,可以看做模板,每個神經元只關注一個特性。需要估算的權重格數減少:一層1億=》3.5w
一組固定的權重和不同窗口內數據做內積:卷積。
激勵層/Activation layer:把卷積層輸出的結果做非線性映射
Sigmoid:
Tanh(雙曲正切)
ReLU
Leaky ReLU
ELU
Maxout
池化層(下采樣層)/Pooling layer
夾在連續的卷積層中間
壓縮數據和參數的量,減小過擬合
全連接層/FC layer
兩層之間所有神經元都有權重連接
通常全連接層在卷積神經網絡尾部
典型CNN結構為:
Batch Normalization層(可能有) 2015年google提出
CNN慎用sigmoid!
首先試RELU,因為快,但是要小心
如果2失敗,請用Leaky RELU或者Maxout
某些情況下tanh倒是有很不錯的效果,但是很少
(4)卷積神經網絡卷積層可視化理解
CONV Layer 2
(5)通一般機器學習算法,先定義Loss function,衡量和實際效果之間的差距
找到最小化損失函數的W和b,CNN中用的算法是SGD
SGD需要計算W和b的偏導
BP算法就是計算偏導用的
BP算法的核心就是求導的鏈式法則
BP算法利用鏈式求導法則,逐級相乘直到求解出dW和db
利用SGD/隨機梯度下降,迭代和更新W和b
(6)卷積神經網絡優缺點:
優點:
共享卷積核,優化計算量
無序手動選擇特征,訓練好權重,即得特征
深層次的網絡抽取圖像信息豐富,表達效果好
缺點:
需要調參,需要大量樣本,GPU等硬件依賴
物理含義不明確
3.數據處理
4.訓練算法
5.優缺點
二、正則化與Droupout
0.神經網絡學習能力強可能會過擬合
Dropout(隨機失活)正則化:別一次開啟所有學習單元
1.正則化與Droupout處理
2.Droupout理解
三、典型結構與訓練
1.典型CNN
2.訓練與優化