梯度上升與梯度降低

 梯度降低法是機器學習和神經網絡學科中咱們最先接觸的算法之一。可是對於初學者,咱們對於這個算法是如何迭代運行的從而達到目的有些迷惑。在這裏給出我對這個算法的幾何理解,有不對的地方請批評指正!算法

        梯度降低法定義

        (維基百科)梯度降低法,基於這樣的觀察:若是實值函數 F(\mathbf{x}) 在點 \mathbf{a} 處可微且有定義,那麼函數 F(\mathbf{x})在 \mathbf{a} 點沿着梯度相反的方向 -\nabla F(\mathbf{a}) 降低最快。網絡

        於是,若是機器學習

                         \mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})

        對於 \gamma>0 爲一個夠小數值時成立,那麼 F(\mathbf{a})\geq F(\mathbf{b})函數

        考慮到這一點,咱們能夠從函數 F 的局部極小值的初始估計 \mathbf{x}_0 出發,並考慮以下序列 \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots 使得學習

                        \mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

        所以可獲得圖片

   F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

       若是順利的話序列 (\mathbf{x}_n) 收斂到指望的極值。注意每次迭代步長 \gamma 能夠改變。ip

        下面圖片示例了這一過程,這裏假設 F 定義在平面上,而且函數圖像是一個形。藍色的曲線是等高線(水平集),即函數 F 爲常數的集合構成的曲線。紅色的箭頭指向該點梯度的反方向。(一點處的梯度方向與經過該點的等高線垂直)。沿着梯度降低方向,將最終到達碗底,即函數 F 值最小的點。get

梯度降低法幾何解釋:

       因爲咱們的任務是求得經驗損失函數的最小值,因此上圖的過程其實是一個「下坡」的過程。在每個點上,咱們但願往下走一步(假設一步爲固定值0.5米),使得降低的高度最大,那麼咱們就要選擇坡度變化率最大的方向往下走,這個方向就是經驗損失函數在這一點梯度的反方向。每走一步,咱們都要從新計算函數在當前點的梯度,而後選擇梯度的反方向做爲走下去的方向。隨着每一步迭代,梯度不斷地減少,到最後減少爲零。這就是爲何叫「梯度降低法」。it

       那麼,爲何梯度的方向恰好是咱們下坡的反方向呢?爲何咱們不是沿着梯度的方向下坡呢?這是由於,只有沿着梯度的反方向,咱們才能下坡,不然就是上坡了……舉個例子,在y=f(x)的二維平面上,規定好x軸和y軸的方向後,若是曲線f(x)的值是隨着x的增長上升的,那麼它在某一點的切線的數值必定是正的。反之,若曲線f(x)的值是隨着x的增長降低的,則它在降低的某一點的切線的數值必定是負數。梯度是方向導數在某一點的最大值,因此其值必然是正數。若是沿着梯度方向走,經驗損失函數的值是增長的……因此,咱們要下坡,就必須沿着梯度方向的反方向了。class

 

梯度上升法幾何解釋:

       相對於梯度降低法,還有梯度上升法。(注意減號變成加號了)

                                   

       其基本原理與降低法一致,區別在於:梯度上升法是求函數的局部最大值。所以,對比梯度降低法,其幾何意義和很好理解,那就是:算法的迭代過程是一個「上坡」的過程,每一步選擇坡度變化率最大的方向往上走,這個方向就是函數在這一點梯度方向(注意不是反方向了)。最後隨着迭代的進行,梯度仍是不斷減少,最後趨近與零。

 

       有一點我是這樣認爲的:所謂的梯度「上升」和「降低」,一方面指的是你要計算的結果是函數的極大值仍是極小值。計算極小值,就用梯度降低,計算極大值,就是梯度上升;另外一方面,運用上升法的時候參數是不斷增長的,降低法是參數是不斷減少的。可是,在這個過程當中,「梯度」自己都是降低的。

相關文章
相關標籤/搜索