梯度下降法和最速下降法的細微差別
1. 前言:
細微之處,彰顯本質;不求甚解,難以理解。
一直以來,我都認為,梯度下降法就是最速下降法,反之亦然,老師是這麼叫的,百度百科上是這麼寫的,wiki百科也是這麼說的,這麼說,必然會導致大家認為,梯度的反方向就是下降最快的方向,然而最近在讀Stephen Boyd 的凸優化的書,才發現事實並非如此,梯度下降和最速下降並不相同,梯度方向也不一定總是下降最快的方向。
2. 梯度下降法
梯度下降法是一種優化方法,用來求解目標函式的極小值。梯度下降法認為梯度的反方向就是下降最快的方向,所以每次將變數沿著梯度的反方向移動一定距離,目標函式便會逐漸減小,最終達到最小。
所以如果x-x_0和
所以梯度下降法的核心步驟就是
3. 最速下降法
最速下降法在選取x的變化方向時與梯度下降法有細微的差別。
4. 差異
看到這裡,可能覺得最速下降的方向和梯度下降法的方向並沒有差別,都是移動單位步長,下降最多的方向。而差別就在單位步長這裡,如果
5. 為什麼會有不用歐式範數的情況
原因其實很簡單,因為使用歐式範數的最速下降法(也就是梯度下降法)得到下降方向並非永遠都是下降最快的方向。讀到這裡,你可能有些吃驚,可能會問,難道梯度的反方向是下降最快的方向嗎?如果你有這樣的疑問和思考,那麼恭喜你,你對梯度有著一定的理解。
然而實際情況是這樣的:梯度是變化的,而梯度下降在一次迭代的過程中假設梯度是固定不變的,所謂的梯度方向只是起始點(
圖片來自Stephen Boyd的凸優化。
6. 什麼時候會不用歐式範數?
我們知道梯度是函式對每個因子求偏導得到的列向量,表示著函式的變化趨勢,
提到梯度的變化,很自然的想到了函式的二階導數,對於多變數函式,也就是函式的Hessian矩陣。