Lecture5:CNN
1. 卷積層:
卷積核的深度與原圖相同

卷積層:感覺這里寫錯了,應(yīng)該是6個5x5x3的卷積核

使用的激活函數(shù):ReLU,多層卷積


第一層卷積是獲取低級特征,例如邊界;之后的mid-level獲取更復(fù)雜的功能,例如拐點和斑點;之后的卷積層獲取高級特征。


N是輸入,F(xiàn)是filter,stride是步長
padding:原因---保持與以前相同的輸入大小
使用0去填充圖片的邊界
卷積層的總結(jié):
?biases的個數(shù)和卷積核的總數(shù)相同

2. Pooling Layer
使得representation更小,更容易管理,分別處理每個activation map。深度不受影響

max pooling:

下采樣:對于一個樣值序列間隔幾個樣值取樣一次,這樣得到新序列就是原序列的下采樣。
不使用zero padding
常用設(shè)置:

3.? 全聯(lián)接層
拉伸成一個向量
常見結(jié)構(gòu):

Lecture 6:訓(xùn)練神經(jīng)網(wǎng)絡(luò)1

1. 激活函數(shù):

1) sigmoid
sigmoid:輸出為0到1之間? ?作為“firing rate”。問題:1)飽和神經(jīng)元“殺死”梯度(例如x為10或-10時),2)不是zero-centored 3)計算困難


2)tanh

3)ReLU
不會飽和,計算方便,更快收斂,與sigmiod的計算很接近。?-10 梯度為0,0的梯度也為0

可能有些權(quán)重不會更新

4)Leaky ReLU

5)ELU

6) Maxout

實際使用建議:

2. Data Preprocessing
1)zero-mean? 2)Normarlize規(guī)范化

協(xié)方差矩陣是一個單位矩陣
訓(xùn)練過程和測試過程使用同樣的數(shù)據(jù)預(yù)處理

3. Weight Initialization
W初始化為0,沒有g(shù)radient傳播,因為隱層節(jié)點之后的所有數(shù)值均為0。非常不可取,永遠(yuǎn)不要用。
方法1: small random numbers

對于更深層的網(wǎng)絡(luò):all activations become zero
如果將W設(shè)置為1而不是0.01,那么很容易飽和

一種好的初始化方法:

然而當(dāng)使用ReLU時會出現(xiàn)問題,

解決ReLU這個問題的方法:

關(guān)于初始化的相關(guān)論文:

4. Batch Normalization
計算該批次內(nèi)的均值和方差

通常跟在全連接層后:

然而非線性層是否需要單位高斯輸入呢?可以控制。。。擠壓或者縮放


gamma和beta是學(xué)習(xí)參數(shù)。。。并沒有失去數(shù)據(jù)的結(jié)構(gòu)
測試階段不同:

5. Babysitting the learning process
第一步,preprocessing data 第二步,選擇網(wǎng)絡(luò)結(jié)構(gòu)
確保loss是正確的,接著從很小的訓(xùn)練集開始訓(xùn)練,查看模型是否正確,接著使用全部的數(shù)據(jù),增加小的正則化項,然后找到能使得loss遞減的學(xué)習(xí)速率。
如果loss基本不變,可能是學(xué)習(xí)速率太小。。。
獲得nan cost,說明爆炸啦!學(xué)習(xí)速率太大
6. Hyperparameter Optimization
使用交叉驗證


