李宏毅機器學習(7)—Tips for Deep Learning(1)

在這節課之前,李宏毅老師還介紹了一些其他與DL相關的知識,包括Backpropagation(反向傳播),和Keras的使用方法,不過這部分比較簡單,所以我不單獨再做筆記。

DL與ML的一個重要區別

在ML中,很少會出現對於training data 擬合程度不夠的情況,也就是訓練完function後,一般來說它在訓練集上的表現都十分良好,甚至可以達到完美的正確率,我們擔心的往往是function在testing中的表現很差。
但是在DL中,情況完全不一樣。由於DL結構的複雜性,很多時候經過了大量的訓練後,得到的NN甚至是在訓練集上都沒有好的表現的。
所以我們在完成DL的訓練後,不應該急着去用testing data去測試它,而是應該用training data 去測試一下這個function是不是一個好的function,如果是的話再去測試testing data。也就是按照下圖的流程去執行。
只有在確認訓練集上有好的結果的時,測試集結果很差,這纔是過擬合。
在這裏插入圖片描述
下面這張圖也說明了這一點:在測試集結果很差的時候,不要急着去說這就是overfitting了,這也可能是在訓練集上就不好。而過擬合是在訓練集上過度擬合導致測試集很差的一種現象。
在這裏插入圖片描述

Tips for Deep Learning(training)

下面是關於deep learning 的過程中,training部分的一些 tips。
在這裏插入圖片描述

問題:梯度消失

有這樣一個現象:層次越深的神經網絡對訓練集的擬合就越差。梯度消失現象常常是一個原因。
在這裏插入圖片描述
梯度消失問題在使用激活函數爲sigmoid 函數時經常會出現。

我們可以通過下圖來理解爲什麼出現了梯度消失問題。L對當前Wi的微分可以通過比較ΔW和ΔL來得到。分析sigmoid函數,我們可以發現,在靠近input層的參數Wi,它變化了ΔW,得到的變化的結果經過sigmoid函數後會被縮小,而這個縮小後的輸出會作爲輸入繼續向後傳遞,等傳遞到最後一層也就是L處的時候,這個ΔW造成的ΔL實際上是非常小的,所以越是靠前的W它的微分越小。
同理,靠後層的Wi他的微分會相比前面而言大得多。
在這裏插入圖片描述
這就造成了這樣一個結果:前面的參數微分很小,收斂很慢:後面的參數微分大,收斂很快。所以訓練完畢後,可能後面的參數已經收斂了,但是前面的參數還是停留在初始設置的random值。
在這裏插入圖片描述

New activation function

可以使用一些新的激活函數來代替sigmoid函數,讓其不再具有梯度消失的性質。

ReLU

ReLU的優點如下,首先是更好計算,然後是能夠解決梯度消失問題。
在這裏插入圖片描述
根據ReLU的性質,在X在自己一定的範圍內波動時,一些ReLU可以看做是直線,一些ReLU可以看做是0。
在這裏插入圖片描述
那麼簡化後的NN圖如下所示,首先是對於輸出爲0的節點,這些神經元可以直接去掉,因爲它們對之後的神經元不會有影響(對之後的神經元輸出爲0)。而且由於剩下的神經元它們的激活函數是直線,所以不會出現類似於sigmoid函數那樣梯度消失的問題。
在這裏插入圖片描述
ReLU還有一些變式,如下所示。
在這裏插入圖片描述

Maxout

首先,ReLU是一種特殊的Maxout。
Maxout與一般的神經元不同,他的機制很特殊,一般的神經元經過一組計算得到一個數據然後經過激活函數得到一個輸出,但是Maxout需要多組計算的數據來產生輸出,可以是兩個也可以是多個。
在這裏插入圖片描述
下圖左是ReLU,下圖右是一個Maxout。可以看到,如果把右邊的Maxout的關於Z2的兩個權值取爲0,實際上就是一個ReLU函數。
在這裏插入圖片描述
也就是說,如果我們在設計函數的model時,將激活函數設爲Maxout,並且設計其參數是可以變動的,那麼在學習的過程中,這個參數也可以自動的學習到根號的值。
在這裏插入圖片描述
所以Maxout的一個最大的特點就是可以自主學習!他的函數是可以設置成多段,再學習的,幾個輸入的數據就決定了這個Maxout最終會有幾段。
在這裏插入圖片描述

Adaptive Learning Rate

RMSProp

我們在前面的課程中學習過 Adagrad。他會在每次update的時候用到之前所有出現過的微分值。
在這裏插入圖片描述
下面給出一種新的改變learning rate的方式:RMSProp。
在這裏插入圖片描述

Momentum

Momentum 是“動力、衝量”的意思。
這個算法基於一個很巧妙的思想,首先看一下下圖,這個在ML中就出現過多次的梯度下降算法。這個算法有幾個比較麻煩的地方在於,下降的過程中如何不停在鞍點,如何能夠越過local minima 到達 global minima。
在這裏插入圖片描述
而在有慣性的物理世界中,這樣的小球就可以越過這個local minima到達之後的global minima。
在這裏插入圖片描述
於是就可以想象出這樣一種算法,每次 update 參數的時候,不僅僅是考慮gradient 的方向,還要考慮之前的位移,用之前的位移來代表慣性。
如下圖,每次真實的update方向是由位移和gradient合成的。
具體到公式,那就是第t+1次的update,是由第 t 次的位移和第 t 次的參數的gradient決定的。也就是下圖右側部分所描述的。
在這裏插入圖片描述
本次筆記的內容就到這裏,下一篇將會講述在testing過程中的一些關於DL的tips。

發佈了14 篇原創文章 · 獲贊 0 · 訪問量 449
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章