梯度,到底是什麼?很容易混淆。
站在山底,哪個方向爬坡最快,這個容易想象,但問題是,如果所在的高度是我們優化的目標的話,這個爬坡的方向並不是梯度的方向,這個是我們的目標值(函數值)的變化趨勢。
我們先看一下定義:
即:梯度是一個向量,而向量就有方向,該方向是方向導數取得最大值的方向,那方向導數是什麼?
可見:
- 方向導數是一個數
- 方向指的是函數定義域的內點變化的方向
綜上,自變量沿着該方向變化,使函數值變化最大,機器學習中,函數值就是我們的優化目標。當函數值是損失函數值的時候,我們期望的是最小值,這個時候取梯度的反方向,即梯度下降即可。這就是爲什麼我們經常看到,理解梯度,先畫等高線示意圖的原因,投影到地面的等高線,其實就是自變量的定義域,也就是機器學習中的參數空間,我們需要知道,怎麼更新參數,才能讓損失函數值最快地減小。
好,那現在的問題是梯度到底是哪個方向?也就是,自變量到底沿哪個方向變化,函數值變化最快。注意看右邊的等高線,假設有一個點A,無限放大等高線:
如上圖,也就是說,垂直於切線即法向量的方向,就是變化最快的方向,也就是梯度的方向。法向量的定義如下:
總結一下,梯度是個向量,自變量沿着該向量的方向變化,函數值變化最快。在機器學習中,爲使損失函數下降最快,我們需要讓模型參數沿着梯度的負方向更新,即梯度下降。