吳恩達深度學習筆記(47)-神經網絡局部最優的問題

局部最優的問題(The problem of local optima)

在深度學習研究早期,人們總是擔心優化算法會困在極差的局部最優,不過隨著深度學習理論不斷髮展,我們對局部最優的理解也發生了改變。我向你展示一下現在我們怎麼看待局部最優以及深度學習中的優化問題。

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

這是曾經人們在想到局部最優時腦海裡會出現的圖,也許你想優化一些參數,我們把它們稱之為W_1和W_2,平面的高度就是損失函數。

在圖中似乎各處都分佈著局部最優。梯度下降法或者某個算法可能困在一個局部最優中,而不會抵達全局最優。如果你要作圖計算一個數字,比如說這兩個維度,就容易出現有多個不同局部最優的圖,而這些低維的圖曾經影響了我們的理解,但是這些理解並不正確。事實上,如果你要創建一個神經網絡,通常梯度為零的點並不是這個圖中的局部最優點,實際上成本函數的零梯度點,通常是鞍點

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

也就是在這個點,這裡是W_1和W_2,高度即成本函數J的值。

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

但是一個具有高維度空間的函數,如果梯度為0,那麼在每個方向,它可能是凸函數,也可能是凹函數。如果你在2萬維空間中,那麼想要得到局部最優,所有的2萬個方向都需要是這樣,但發生的機率也許很小,也許是2^(-20000),你更有可能遇到有些方向的曲線會這樣向上彎曲,另一些方向曲線向下彎,而不是所有的都向上彎曲,因此在高維度空間,你更可能碰到鞍點。

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

就像下面的這種:

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

而不會碰到局部最優。

至於為什麼會把一個曲面叫做鞍點,你想象一下,就像是放在馬背上的馬鞍一樣,如果這是馬,這是馬的頭,這就是馬的眼睛,畫得不好請多包涵,然後你就是騎馬的人,要坐在馬鞍上,因此這裡的這個點,導數為0的點,這個點叫做鞍點。我想那確實是你坐在馬鞍上的那個點,而這裡導數為0。

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

所以我們從深度學習歷史中學到的一課就是,我們對低維度空間的大部分直覺,比如你可以畫出上面的圖,並不能應用到高維度空間中。適用於其它算法,因為如果你有2萬個參數,那麼J函數有2萬個維度向量,你更可能遇到鞍點,而不是局部最優點。

如果局部最優不是問題,那麼問題是什麼?

結果是平穩段會減緩學習,平穩段是一塊區域,其中導數長時間接近於0,如果你在此處,梯度會從曲面從從上向下下降,因為梯度等於或接近0,曲面很平坦,你得花上很長時間慢慢抵達平穩段的這個點,因為左邊或右邊的隨機擾動,我換個筆墨顏色,大家看得清楚一些,然後你的算法能夠走出平穩段(紅色筆)。

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

我們可以沿著這段長坡走,直到這裡,然後走出平穩段。

吳恩達深度學習筆記(47)-神經網絡局部最優的問題

所以此次筆記的要點是,

首先,你不太可能困在極差的局部最優中,條件是你在訓練較大的神經網絡,存在大量參數,並且成本函數J被定義在較高的維度空間。

第二點,平穩段是一個問題,這樣使得學習十分緩慢,這也是像Momentum或是RMSprop,Adam這樣的算法,能夠加速學習算法的地方。

在這些情況下,更成熟的優化算法,如Adam算法,能夠加快速度,讓你儘早往下走出平穩段。

因為你的網絡要解決優化問題,說實話,要面臨如此之高的維度空間,我覺得沒有人有那麼好的直覺,知道這些空間長什麼樣,而且我們對它們的理解還在不斷髮展,不過我希望這一點能夠讓你更好地理解優化算法所面臨的問題。

下面就是開始神經網絡超參數調試、Batch正則化和程序框架,敬請期待~


分享到:


相關文章: