梯度下降法中,爲什麼在負梯度方向函數值下降最快

以下內容整理於高數課本以及李宏毅老師的視頻:

我們想要利用梯度下降來求得損失函數的最小值。也就是每次我們更新參數,當前的損失函數總比上一次要小。

假設只有兩個參數θ1和θ2,上圖是損失函數的等值線,紅色點是初始值當前的狀態。以紅色點爲圓心畫圓,在這個圓的範圍內,我們想要找到一個損失函數更小的值。如下圖:

這樣我們就更新了一次參數,損失函數值變小了。再進行相同的操作,以當前點爲圓心,畫圓,再找一個圓內範圍的最小值。如下圖:

這樣我們進行了第二次參數更新,損失函數又變小了。接着我們再進行同樣的操作,就會很容易找到損失函數最小值附近的點。

總體思想是這樣,但是具體要怎麼操作呢,在一個圓的範圍內,哪個方向的點纔是我們想要的值最小的點呢?首先從泰勒公式說起:

一元泰勒公式。

二元泰勒公式。

泰勒公式是用來利用一個函數在某點的信息描述該點附近點的取值信息。

前面假設只有兩個參數θ1和θ2,假設當前參數的取值點爲(a, b),如上圖,將損失函數L在(a, b)點一階展開,u表示損失函數對θ1的偏導,v表示損失函數對θ2的偏導,也就是說向量(u, v)即是現在的梯度方向。損失函數L在(a,b)附近的取值信息可由上圖最下面的式子表示。我們想要的就是在這個附近取一個最小值。

如上圖,做法是以當前點(a, b)爲圓心,半徑爲d(假設這個d足夠小)畫圓,那麼該點的附近範圍就是滿足這樣的參數取值(θ1,θ2), 且(θ1 - a) ^2 + (θ2 - b)^2 <= d^2。也就是在這個小圓圈範圍內。

將θ1 - a 記作Δθ1, θ2 - b記作Δθ2, 我們的目標就是找到最優的θ1和θ2,使得上面的損失函數L最小。上圖中的s是常數,不用管, 也就是讓 u * Δθ1 + v * Δθ2最小,它可以看成是兩個向量的內積,即向量(u, v)和向量(Δθ1, Δθ2)最小。這裏先說出結論,最小的情況是(Δθ1, Δθ2)與(u, v)反向,下面詳細解釋。

要想u * Δθ1 + v * Δθ2最小,也就是兩個向量的內積最小。考慮內積的直觀意義:兩個向量的內積等於向量1在向量2上面的投影乘以向量2的長度。投影可正可負,當兩向量夾角大於90度時,投影是負的,投影可以表示爲正負號乘以投影的長度

,比如左圖v在u上面的投影就等於紅色線段的長度。要想(Δθ1, Δθ2)與(u, v)內積最小(這裏的u,v和上面那個小例子中的u, v沒關係,是上面圖中圓圈中的(u,v)向量),因爲(u,v)的長度是一定的,那麼只需要(Δθ1, Δθ2)在(u,v)上的投影最小就可以了。投影最小,首先保證是負號,也就是二者向量夾角大於90度,接下來只要投影長度最大就行,因爲有負號。(Δθ1, Δθ2)的投影長度是小於等於(Δθ1, Δθ2)向量的長度的,像上面那個小例子中的v。要求投影長度最大,那麼肯定是與(u,v)反向的時候最大,這時候投影長度就等於(Δθ1, Δθ2)向量的長度。如下圖所示:

此時我們可以得出這樣的結論:當向量(Δθ1, Δθ2)是與(u,v)反向的時候,損失函數L取最小值。上圖中的就像是一個步長,它可以伸展到圓的邊界上去。前面說(u, v)是梯度方向,那麼(Δθ1, Δθ2)則是負梯度方向。又因爲Δθ1 = θ1 - a,Δθ2 = θ2 - b,可以推出上圖中的梯度下降公式。

這種方法要求我們畫的圓圈範圍足夠小,從上可知(步長,學習率)的大小是和圓圈半徑成正比的,所以也要足夠小,理論上,無窮小時,上面式子才成立。至此我們可以得出結論,每一次參數更新,沿着負梯度方向,損失函數值下降最快。

 

下面來自高數課本:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章