1. 程式人生 > >梯度下降的原理(泰勒證明)及與牛頓法的對比

梯度下降的原理(泰勒證明)及與牛頓法的對比

1 梯度下降法

我們使用梯度下降法是為了求目標函式最小值f(X)對應的X,那麼我們怎麼求最小值點x呢?注意我們的X不一定是一維的,可以是多維的,是一個向量。我們先把f(x)進行泰勒展開:

image 

這裡的α是學習速率,是個標量,代表X變化的幅度;d表示的是單位步長,是一個向量,有方向,單位長度為1,代表X變化的方向。什麼意思呢?就是說我們這裡求最值,不是一下子就找到最小值對應的X,而是一點點的迭代,逼近最小值對應的X,每一次迭代新的X即X’就是X+αd(下圖藍色點都可以是X’),(注意這裡的αd是向量,這裡是向量相加,有方向的問題。)如圖(以二維為例):

image

那麼我們每一次迭代想要的X’要有什麼要求呢?要求就是每次迭代新的X’使

image達到最小值,即在上面的所有的X’,那個紅框的X’使f(X’)最小,我們就是找到那個X’,然後不斷的迭代,(如果你覺得每次迭代的X幅度小,就調整那個學習速率α,幅度大,就調小)我們就找到趨近於f(X)最小的X。我們來看每次迭代中,怎麼找到新的X’。

我們想找f(X+αd)的最小值,我們認為o(α)(即二次導數及以上的項)為無窮小,忽略不計。(這個決定也是梯度下降法與牛頓法的區別,下面說原因   )那麼問題就變成了,我們要image最小,

α是一個係數,image是兩個向量的內積,也就是|g|*|d|*cosθ,如圖:

image

那麼也就是梯度向量與d的向量夾角為180°的時候,image取最小值:-|g|*|d|。梯度向量與d的向量夾角為180°.即如圖:

image

所以我們的αd可取值為-αg,因此X’=X-αg.

接下來繼續重複上述步驟迭代。直到收斂。

2 牛頓法

上面的最速下降法只用到了梯度資訊,即目標函式的一階導數資訊,而牛頓法則用到了二階導數資訊。我們先把f(x)進行泰勒展開:

image

其中的g的每一維度是f(X)分別對X的每一維求一階偏導數(所以g是一個向量),G是f(X)的每一維度分別對變數X的每一維求二階導數(因此G是一個矩陣,叫hessian矩陣,如圖(右))。這次跟上面那個公式只是形式稍微變了一下,內容都是一樣的。這裡的Xk表示原來的X點,X表示新的X點(就是上面的X’)。在這裡我們令d=X-Xk,即每次迭代在單位向量d上進行X的變化(沒有α這個幅度了,d的模也不一定是1,這裡不是人為制定的步長多少,而是計算中該是多少就多少)。即我們找到了d,我們就知道了新的X,如圖(左):

image                       image

每一次迭代中,我們依然要通過最小化每一次的f(X)找到每一次想要的紅框的X。

這一次,我們通過對f(X)求導=0,那麼得到的X就是每一次迭代想要的紅框的X。即:

imageimage  因為我們已知X=Xk-d,所以image,那麼新的X就得到了。然後繼續迭代,直到收斂。