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