為什麼負梯度是函數值減小的最快方向
摘要
SGD(Stochastic Gradient Descent, 梯度下降法)是求解最優解問題時常用的優化器, 其核心思想是, 每次迭代時沿著負梯度(梯度的反方向)前進, 經過多次迭代後到達一個較小函數值的參數點處. 為什麼是沿著負梯度方向而不是其他的方向進行前進呢? 本文從梯度的數學定義出發來回答這個問題. 本文組織如下:
- 闡述方嚮導數的定義;
- 闡述方嚮導數與梯度的關係;
- 為何負梯度是函數值減小的最快方向;
- 總結.
校對: @王鐵柱
方嚮導數
熟悉微積分的同學都知道, 導數是描述函數隨自變數變化快慢的數學定義. 如果此時的函數為多元函數, 該如何描述函數的變化快慢? 設 是定義在 中的多元函數, 其自變數為 , 在其定義域 上, 函數 可以沿任意方向進行運動變化, 而且沿著不同方向通常有不同的變化率, 因此, 在描述多元函數變化快慢時, 我們不僅要描述其變化的大小, 還要描述其變化的方向. 在數學上, 我們有如下定義:
設點 是函數 定義域中的一點, 是一個動點, 向量 是一個非零向量, 其方向與向量 始終保持一致, 用於描述 的方向. 如果以下極限
存在, 我們便稱其為函數 在點 沿著方向 的方嚮導數, 記為 , 它描述的便是函數 在 沿著 變化的快慢. 可能有的同學已經發現了, 這個定義與導數的定義類似, 都是函數的變化量與自變數變化量的比值的極限, 只是在多元函數情況下, 我們還需要指出函數變化時所沿襲的方向. 有了方嚮導數, 我們就可以來看看函數沿著什麼方向變化最快最慢了.
方嚮導數與梯度的關係
方嚮導數和我們關心的梯度有什麼關係呢? 我們先來回顧梯度的定義: 函數 在點 的梯度為
梯度本身是一個向量, 其每個分量分別描述了函數 沿坐標系的每個數軸的變化率. 而由泰勒展開我們可以得到如下展開式
其中, 是函數 在點 處的梯度. 由泰勒展開式(3)我們可以得到函數 在點 之間的函數變化量與梯度 之間的關係, 我們可由此構造出其方嚮導數與梯度之間的關係式. 對泰勒展開式(3)兩邊同時除以 並取極限, 可得
其中, 為函數f在點 處的梯度, 令 , 由(4)可得
為何負梯度是函數值減小的最快方向
由(5)我們可以看出, 函數在點 處的沿方向 的方嚮導數, 等於函數在該點處的梯度對方向 上的單位向量的投影. 為了使這個結論更加清晰, 我們對(5)做進一步解析. 我們令 , 這被稱為方向餘弦, 可以用此單位向量來進行方向的描述, 顯然有 . 則(5)可進一步表示成如下
由向量內積公式, 可得
由Schwarz公式和(7), 可得
所以, 函數在點 處的最大方嚮導數是該點處的梯度, 即沿著梯度方向前進, 函數增長速率是最大的, 其速率為
而當方嚮導數正好與梯度反向時, 即 , 則函數增加速率最小, 其速率為
綜上, 我們可以得出負梯度是函數值減小的最快方向, 其大小為(10)所示.
值得注意的是, 那些與梯度(負梯度)垂直的方嚮導數, 即 , 函數沿著此類方嚮導數前進時不會發生變化, 而沿著此類方嚮導數前進便會形成等高線, 這也是為什麼描述梯度的圖像中, 梯度(負梯度)是與函數等高線垂直的.