揭開機器學習優化的神祕面紗!

點擊上方關注,All in AI中國

作者:Ravindra Parmar

揭開機器學習優化的神秘面紗!

機器學習的梯度下降

優化是機器學習算法最重要的組成部分。它首先定義某種損失函數/成本函數,然後使用一個或另一個優化例程使其最小化。優化算法的選擇可以在幾小時或幾天內獲得的良好精度之間產生差異。其優化的應用是無限的,是工業界和學術界廣泛研究的課題。在本文中,我們將介紹在深度學習領域中使用的幾種優化算法。(你可以通過本文了解損失函數的基礎知識)

https://towardsdatascience.com/common-loss-functions-in-machine-learning-46af0ffc4d23

隨機梯度下降法

隨機梯度下降(SGD)是用於查找最小化給定成本函數的參數的最簡單優化算法。顯然,為了使梯度下降收斂到最佳的最小值,其成本函數應該是凸出的。在此演示一下成本函數的圖形表示。

揭開機器學習優化的神秘面紗!

梯度下降的例證

我們首先定義參數的一些隨機初始值。優化算法的目標是找到對應於成本函數的最小值的參數值。具體而言,梯度下降開始於計算每個參數w.r.t成本函數的梯度(導數)。這些梯度使我們需要對每個參數進行數值調整,以便最小化成本函數。這個過程一直持續到我們達到局部/全局最小值(成本函數最小化w.r.t的周圍值)。在數學上,

揭開機器學習優化的神秘面紗!

揭開機器學習優化的神秘面紗!

學習率對梯度下降的影響

學習率定義了每次迭代中應該更改的參數量。換句話說,它控制我們應該收斂到最低或最快的速度。一方面,小的學習率可以使迭代收斂,大的學習率可以超過最小值,如上圖所示。

儘管在實踐中很容易應用,但它在深度神經網絡中有很多缺點,因為這些網絡需要適應大量參數。為了說明梯度下降的問題,我們假設只有兩個參數的成本函數。假設成本函數對參數之一(例如垂直方向)的變化非常敏感,而對其他參數(即水平方向)的變化也非常敏感(這意味著成本函數具有高條件數)。

揭開機器學習優化的神秘面紗!

曲折運動與梯度下降

如果我們在這個函數上運行隨機梯度下降,我們會得到一種曲折線條。從本質上講,隨機梯度下降(SGD)在向敏感度較低的方向發展緩慢,而對高敏感方向則發展更快一些,因此在最小化方向並不一致。在實踐中,深度神經網絡可能具有數百萬個參數,因此具有數百萬個方向來適應梯度調整,從而使問題複雜化。

隨機梯度下降(SGD)的另一個問題是局部最小值或鞍點問題。鞍點是在所有方向上梯度為零的點。因此,我們的隨機梯度下降(SGD)將只停留在那裡。另一方面,局部最小值是最小值w.r.t周圍的點,但並非最小值。由於梯度在局部最小值為零,當全局最小值在其他位置時,梯度下降會將其報告為最小值。

為了解決批次梯度下降的問題,近年來開發了幾種先進的優化算法。以下將逐一介紹。

隨機梯度下降與動量

為了理解高級優化背後的動力學,我們首先要掌握指數加權平均的概念。假設我們獲得了所有特定城市一年365天的溫度數據。繪製這些數據,我們在下圖中的左上角得到一個圖表。

揭開機器學習優化的神秘面紗!

演示指數加權平均值

現在,如果我們希望計算當地全年的平均溫度,按如下方式進行。

揭開機器學習優化的神秘面紗!

在每一天,我們計算前一天溫度和當日溫度的加權平均值。上面計算的圖表顯示在右上角。該圖是過去10天的平均溫度(α= 0.9)。左下角(綠線)顯示過去50天的平均數據(alpha = 0.98)。

這裡需要注意的一點是,隨著我們對更多天數進行平均,曲線對溫度變化的敏感度會降低。相反,如果我們在較少的天數內進行平均,則曲線將對溫度的變化更敏感,並因此變得更加蠕動。

延遲的增加是由於我們給前一天的溫度提供了比當日溫度更高的權重。

到目前為止,這很好,但問題是這一切能給我們帶來什麼。很相似,通過平均過去幾個值的梯度,我們傾向於減少更敏感方向的振盪,從而使其收斂更快。

在實踐中,基於動量的優化算法幾乎總是比批次梯度下降更快。在數學上,

揭開機器學習優化的神秘面紗!

AdaGrad的優化

我們的想法是,對於每個參數,我們存儲其所有歷史梯度的平方和。這個總和稍後用於縮放學習率。

請注意,與之前的優化相比,這裡我們對每個參數都有不同的學習率。

揭開機器學習優化的神秘面紗!

現在的問題是,當我們的損失函數具有非常高的條件數時,這種縮放是如何幫助我們的?

對於具有高梯度值的參數,平方項將很大,因此用較大的平方項劃分會使梯度在該方向上緩慢加速。類似地,具有低梯度的參數將產生較小的平方項,因此梯度將在該方向上加速更快。

然而請注意,隨著梯度在每一步進行平方,其移動估計將隨著時間的推移單調增長,因此我們的算法將收斂到最小值的步長會變得越來越小。

從某種意義上說,這對於凸起問題是有益的,因為在這種情況下我們預計會減慢到最小值。然而,在非凸優化問題的情況下,同樣的好處會變成詛咒,因為陷入鞍點的機會增加。

RMSProp的優化

這是AdaGrad的一個細微變化,在實踐中效果更好,因為它解決了所留下的問題。與AdaGrad類似,這裡我們也將保持平方梯度的估計值,但不是讓平方估計值累積在訓練上,而是讓估計值逐漸衰減。為此,我們將當前的平方梯度估計值與衰減率相乘。

揭開機器學習優化的神秘面紗!

Adam

這包含了RMSProp和Gradient下降的所有優點和動量。

具體而言,該算法計算梯度的指數移動平均值和平方梯度,而參數beta_1和beta_2控制這些移動平均值的衰減率。

揭開機器學習優化的神秘面紗!

請注意,我們已將second_moment初始化為零。因此,在開始時,second_moment將被計算為非常接近零的某個時刻。因此,我們通過除以非常小的數字來更新參數,從而對參數進行大量更新。這意味著最初,算法會做出更大的步驟。為了糾正這一點,我們通過結合當前步驟創建了對first_moment和second_moment的無偏估計。然後我們根據這些無偏估計而不是更新first_moment和second_moment的參數。在數學上,

揭開機器學習優化的神秘面紗!

下圖演示了迭代過程中每個優化算法的性能。顯然,增加動量可以提高準確性。然而,在實踐中,Adam能夠很好地處理大型數據集和複雜功能。

揭開機器學習優化的神秘面紗!

優化的性能度量

資源

RMSprop - 優化算法| Coursera

https://www.coursera.org/lecture/deep-neural-network/rmsprop-BhJlm

你可以找到更多的數學背景。請通過評論告訴本文可能適用的任何修改/改進。

https://www.coursera.org/lecture/deep-neural-network/rmsprop-BhJlm

揭開機器學習優化的神秘面紗!


分享到:


相關文章: