李宏毅机器学习课程9~~~深度学习技巧
Recipe of Deep Learning
Overfitting
overfitting的判斷是要訓(xùn)練誤差與測試誤差做比較。這個(gè)56-layer的網(wǎng)絡(luò)在訓(xùn)練集上都沒有訓(xùn)練好,說白了就是有點(diǎn)欠擬合。所以僅僅依靠測試集上的結(jié)果來判斷56-layer比20-layer overfitting是不合理的。
更多理解見
Overfitting and Underfitting With Machine Learning Algorithms
各種改進(jìn)技巧
New activation function
RELU
針對負(fù)向,提出了Leaky ReLU, Parametric ReLU
ReLU,P-ReLU, Leaky-ReLU
ReLU 簡單而粗暴,大于0的留下,否則一律為0。
因?yàn)樯窠?jīng)網(wǎng)絡(luò)的數(shù)學(xué)基礎(chǔ)是處處可微的,所以選取的激活函數(shù)要能保證數(shù)據(jù)輸入與輸出也是可微的。
Rectified linear unit(ReLU) 函數(shù)的激活函數(shù)可以表示為f(x)=max(0,x),它更加符合神經(jīng)元的激活原理。它的一個(gè)平滑解析函數(shù)為f(x)=ln(1+exp(x)),被稱為softplus function。softplus 的微分就是logistic函數(shù)f(x)=1/(1+exp(?x))。
可以看到,當(dāng)x<0時(shí),ReLU硬飽和,而當(dāng)x>0時(shí),則不存在飽和問題。所以,ReLU 能夠在x>0時(shí)保持梯度不衰減,從而緩解梯度消失問題。這讓我們能夠直接以監(jiān)督的方式訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),而無需依賴無監(jiān)督的逐層預(yù)訓(xùn)練。
然而,隨著訓(xùn)練的推進(jìn),部分輸入會(huì)落入硬飽和區(qū),導(dǎo)致對應(yīng)權(quán)重?zé)o法更新。這種現(xiàn)象被稱為“神經(jīng)元死亡”。與sigmoid類似,ReLU的輸出均值也大于0,偏移現(xiàn)象和 神經(jīng)元死亡會(huì)共同影響網(wǎng)絡(luò)的收斂性。
針對在x<0的硬飽和問題,我們對ReLU做出相應(yīng)的改進(jìn),使得
sigmoid 和 tanh作為激活函數(shù)的話,一定要注意一定要對 input 進(jìn)行歸一話,否則激活后的值都會(huì)進(jìn)入平坦區(qū),使隱層的輸出全部趨同,但是 ReLU 并不需要輸入歸一化來防止它們達(dá)到飽和。
用ReLU代替了傳統(tǒng)的Tanh或者Logistic。好處有:
- ReLU本質(zhì)上是分段線性模型,前向計(jì)算非常簡單,無需指數(shù)之類操作;
- ReLU的偏導(dǎo)也很簡單,反向傳播梯度,無需指數(shù)或者除法之類操作;
- ReLU不容易發(fā)生梯度發(fā)散問題,Tanh和Logistic激活函數(shù)在兩端的時(shí)候?qū)?shù)容易趨近于零,多級連乘后梯度更加約等于0;
- ReLU關(guān)閉了右邊,從而會(huì)使得很多的隱層輸出為0,即網(wǎng)絡(luò)變得稀疏,起到了類似L1的正則化作用,可以在一定程度上緩解過擬合。
當(dāng)然,ReLU也是有缺點(diǎn)的,比如左邊全部關(guān)了很容易導(dǎo)致某些隱藏節(jié)點(diǎn)永無翻身之日,所以后來又出現(xiàn)pReLU、random ReLU等改進(jìn),而且ReLU會(huì)很容易改變數(shù)據(jù)的分布,因此ReLU后加Batch Normalization也是常用的改進(jìn)的方法。
使用了 ReLu 的 CNN 在 CIFAR-10數(shù)據(jù)集 batchsize 為100的訓(xùn)練中,epoch 5(2500次迭代)就把驗(yàn)證集錯(cuò)誤率降到了25%,而 Tanh 則要花上35個(gè)epoch,速度提升了六倍。
卷積神經(jīng)網(wǎng)絡(luò)推薦選擇的是 relu
循環(huán)神經(jīng)網(wǎng)絡(luò)推薦選擇的是 relu 或tanh
Leaky-ReLU
當(dāng)unit沒有被激活時(shí),允許小的非零的梯度。f(x)=x,x>0,f(x)=0.01x,x<=0。
Maxout
Learnable activation function [Ian J. Goodfellow, ICML’s 13]
Adaptive Learning Rate
RMSProp
Momentum
慣性的計(jì)算可以發(fā)現(xiàn)慣性與之前所有的梯度是有關(guān)的。通俗的理解為對梯度的平均,使得縱向的擺動(dòng)變小了,橫向的運(yùn)動(dòng)更快了。可加快梯度下降。
Adam
RMSProp + Momentum
Early Stopping
Early Stopping 是用來確定Epochs,合理的是用validation set 和training set 的誤差曲線來確定。
Early Stopping
減少參數(shù)的更新次數(shù),最終目的也是為了不要讓參數(shù)離零太遠(yuǎn)。
降低神經(jīng)網(wǎng)絡(luò)中的方差。
優(yōu)點(diǎn):只運(yùn)行一次梯度下降,可以找出W的較小值,中間值和較大值。而L2正則化需要超級參數(shù)lamb
缺點(diǎn):提前停止了優(yōu)化代價(jià)函數(shù)J,可能代價(jià)函數(shù)值不夠小。
Regularization
加正則項(xiàng)的目的是為了讓目標(biāo)函數(shù)更平滑。而bias與函數(shù)的平滑沒有關(guān)系,所有加正則項(xiàng)時(shí)不用考慮bias項(xiàng),只需考慮權(quán)重項(xiàng)。
權(quán)重參數(shù)初始化時(shí),盡可能的靠近零。在做參數(shù)更新的時(shí)候,是為了離零越來越遠(yuǎn)。做正則化的時(shí)候,是為了不要讓權(quán)重參數(shù)離零太遠(yuǎn)。
L2 正則化
被稱為權(quán)重衰減,這是因?yàn)闄?quán)重乘以了一個(gè)小于的數(shù)。
權(quán)重衰減項(xiàng)來源L2,這是因?yàn)闄?quán)重乘以了一個(gè)小于1的參數(shù)。
L2 Regularization
w并不會(huì)變成零,最終會(huì)達(dá)到平衡,而且保證w的平滑性。
L1 Regularization
L1, L2 都是為了使得權(quán)重參數(shù)不要太大。 L1是減去一個(gè)固定的值,L2是乘以一個(gè)小于1的值。這樣L1很少會(huì)出現(xiàn)很小的值,但是有可能得到比較大的值,也就是說L1得到的值是稀疏的。L2可以保留得到很多很小的值。
Regularization 與Early Early Stopping功能類似。如果使用了Early Early Stopping后,有時(shí)候可能沒必要使用Regularization
Early Stopping
減少參數(shù)的更新次數(shù),最終目的也是為了不要讓參數(shù)離零太遠(yuǎn)。
降低神經(jīng)網(wǎng)絡(luò)中的方差。
優(yōu)點(diǎn):只運(yùn)行一次梯度下降,可以找出W的較小值,中間值和較大值。而L2正則化需要超級參數(shù)lamb
缺點(diǎn):提前停止了優(yōu)化代價(jià)函數(shù)J,可能代價(jià)函數(shù)值不夠小。
Dropout
Training 使用Dropout,比如p%,而Testing不用Dropout. 但是Testing時(shí)權(quán)值需要乘以(1-p%)
Dropout直觀理解,訓(xùn)練的時(shí)候需要加重,測試的時(shí)候需要去重。
Dropout的直觀理解。但是partner可能會(huì)擺爛,所以訓(xùn)練要好好的做。但是測試階段是沒有人擺爛。
Dropout的直觀理解。訓(xùn)練的時(shí)候有Dropout,測試的時(shí)候也需要相應(yīng)縮減。
雖然有Dropout,在訓(xùn)練階段,有minbatchsize,每個(gè)神經(jīng)元點(diǎn)的權(quán)值訓(xùn)練相當(dāng)于多個(gè)網(wǎng)絡(luò)dropout的網(wǎng)絡(luò)依次訓(xùn)練。說白了就是第一個(gè)minbatch,訓(xùn)練確定的某個(gè)神經(jīng)元的權(quán)值,會(huì)在第二個(gè)minbatch的時(shí)候繼續(xù)訓(xùn)練(前提是該神經(jīng)元沒有被dropout), 這類似于多個(gè)網(wǎng)絡(luò)依次訓(xùn)練確定神經(jīng)元的權(quán)值。
重點(diǎn)閱讀。
深度學(xué)習(xí)(Deep Learning)讀書思考三:正則化
機(jī)器學(xué)習(xí)中防止過擬合的處理方法
參考文獻(xiàn)
http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html
機(jī)器學(xué)習(xí)中防止過擬合的處理方法
總結(jié)
以上是生活随笔為你收集整理的李宏毅机器学习课程9~~~深度学习技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李宏毅机器学习课程8~~~keras
- 下一篇: 深度学习(Deep Learning)读