1. 概念
梯度下降法(Gradient Descent)又稱最速下降法(Steepest descent)是一種常用的一階優化方法,是一種用於求解無約束最優化問題的最常用的方法。它選取適當的初始值,並不斷向負梯度方向迭代更新,實現目標函數的極小化,直到收斂。
2. 梯度下降的直觀解釋
以下山法作爲類別,我們想要從山的某個位置下山,但我們並不知道山腳的位置,只能走一步算一步。從當前位置出發,往當前位置的負梯度方向走一步,即往最陡峭的方向往下走一步。然後繼續求解當前位置的梯度,往負梯度方向走一步。不停走下去,一直走到我們認爲已經到了山腳的位置。當然,也有可能,我們沒辦法到山腳,而是到了一個小山丘底部。
當目標函數是凸函數的時候,梯度下降法可以確保找到全局最優解;否則不一定能找到全局最優解,可能會陷入局部最優解。
3. 梯度下降法的原理
考慮最優化問題,其中具有一階連續偏導數。若第次迭代值爲,對在處進行一階泰勒展開:
(1)
凸函數的某一小段由上圖黑色曲線表示,可以利用線性近似的思想求出的值,如上圖紅色直線。該直線的斜率等於在處的導數。則根據直線方程,很容易得到的近似表達式爲:
這就是一階泰勒展開式的推導過程,主要利用的數學思想就是曲線函數的線性擬合近似。
其中,是微小矢量,大小是步長,類比於下山過程中的一步。是標量,的單位向量用表示,則可以表示爲:
(2)
此時,(1)可以化爲:
(3)
我們希望每次迭代,都能使變小,也就是說希望有:
(4)
由於是標量,且一般設定爲正值,因此可以忽略。由於和都是向量,根據向量的乘積公式可以將(4)轉換爲:
(5)
當和反向時,,可以使得最小,且爲負。即的方向是使局部的目標函數下降最快的方向。得到爲:
(6)
以上解釋了爲什麼局部下降最快的方向就是梯度的負方向。
將(6)中的最優解代入(2)中,得到的更新表達式爲:
(7)
由於是標量,可以吸收入裏面,梯度下降算法的更新表達式就變成了:
(8)
以上就是梯度下降算法公式的數學推導過程。
4. 算法描述
輸入:目標函數、梯度函數,計算精度。
輸出:的極小點。
(1)初始化相關參數。取初始值,置迭代次數.
(2)計算當前位置的目標函數。
(3)計算當前位置的目標函數的梯度。如果,則迭代結束,。否則,繼續往下走。
(4)更新。,如果或者,則停止迭代,令。否則,將迭代次數置爲,轉到(3)繼續迭代。
在機器學習中,目標函數實際上就是代價函數。
5. 梯度下降法種類
5.1 批量梯度下降法(Batch Gradient Descent,BGD)
批量梯度下降法是梯度下降法最常用的形式。每次更新參數要使用所有的樣本進行計算。
假設目標函數爲:
求偏導得:
批量梯度下降法的更新公式爲:
5.2 隨機梯度下降法(Stochastic Gradient Descent,SGD)
隨機梯度下降法與批量梯度下降法類似。每次更新參數只使用隨機的一個樣本進行計算。
隨機梯度下降法的更新公式爲:
批量梯度下降法和隨機梯度下降法的區別是什麼?
(1)批量梯度下降法每次使用所有數據來更新參數,訓練速度慢;
(2)隨機梯度下降法每次只使用一個數據來更新參數,訓練速度快;但迭代方向變化大,不一定每次都朝着收斂的方向,不能很快地收斂到局部最優解。
5.3 小批量梯度下降法(Mini-Batch Gradient Descent,MBGD)
小批量梯度下降法是批量梯度下降法和隨機梯度下降法的一個折中。每次更新參數選擇一小部分數據計算。
選擇個數據,。
小批量梯度下降法的更新公式爲:
6. 局部最優解解決方法
如第二節(梯度下降的直觀解釋)中描述的,如果目標函數具有多個局部極小值,不能保證找到的解是全局最優解。爲了解決這一問題,常採用以下策略來試圖跳出局部最優:
1. 以多組不同參數值進行初始化,這樣有可能陷入不同的局部極小,從中進行選擇有可能獲得更接近全局最小的結果;
2. 使用“模擬退火”技術,在每一步都以一定概率接收比當前解更差的結果,有助於跳出局部極小;
3. 使用隨機梯度下降,最小化每個樣本的損失函數,而不是最小化整體的損失函數,雖然不是每次迭代得到的損失函數都朝着收斂的方向, 但是整體的方向是朝着全局最優解的,最終的結果往往是在全局最優解附近。
參考文獻:
1.《 統計學習方法》附錄A梯度下降法——李航