梯度下降的原理(泰勒證明)及與牛頓法的對比
1 梯度下降法
我們使用梯度下降法是為了求目標函式最小值f(X)對應的X,那麼我們怎麼求最小值點x呢?注意我們的X不一定是一維的,可以是多維的,是一個向量。我們先把f(x)進行泰勒展開:
這裡的α是學習速率,是個標量,代表X變化的幅度;d表示的是單位步長,是一個向量,有方向,單位長度為1,代表X變化的方向。什麼意思呢?就是說我們這裡求最值,不是一下子就找到最小值對應的X,而是一點點的迭代,逼近最小值對應的X,每一次迭代新的X即X’就是X+αd(下圖藍色點都可以是X’),(注意這裡的αd是向量,這裡是向量相加,有方向的問題。)如圖(以二維為例):
那麼我們每一次迭代想要的X’要有什麼要求呢?要求就是每次迭代新的X’使
我們想找f(X+αd)的最小值,我們認為o(α)(即二次導數及以上的項)為無窮小,忽略不計。(這個決定也是梯度下降法與牛頓法的區別,下面說原因 )那麼問題就變成了,我們要最小,
α是一個係數,是兩個向量的內積,也就是|g|*|d|*cosθ,如圖:
那麼也就是梯度向量與d的向量夾角為180°的時候,取最小值:-|g|*|d|。梯度向量與d的向量夾角為180°.即如圖:
所以我們的αd可取值為-αg,因此X’=X-αg.
接下來繼續重複上述步驟迭代。直到收斂。
2 牛頓法
上面的最速下降法只用到了梯度資訊,即目標函式的一階導數資訊,而牛頓法則用到了二階導數資訊。我們先把f(x)進行泰勒展開:
其中的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,如圖(左):
每一次迭代中,我們依然要通過最小化每一次的f(X)找到每一次想要的紅框的X。
這一次,我們通過對f(X)求導=0,那麼得到的X就是每一次迭代想要的紅框的X。即:
因為我們已知X=Xk-d,所以,那麼新的X就得到了。然後繼續迭代,直到收斂。
。