在機器學習中,大多涉及某種形式的優(yōu)化。其中,優(yōu)化通常指目標函數(shù) J(??) 的最小化(最大化可通過 -J(??) 的最小化來實現(xiàn))。
梯度下降法,作為一種優(yōu)化的常用方法,包含三種不同的形式,分別為:梯度下降法、隨機梯度下降法 與 小批量梯度下降法。以下,分別就三種形式的原理及優(yōu)缺點逐一進行闡述。
為了便于理解,本文以線性回歸為例來進行說明。
因此,有一般的線性回歸函數(shù)為:

假設(shè)損失函數(shù)為均方誤差損失函數(shù),則損失函數(shù)為:

1. 梯度下降法
- 定義
梯度下降法(Gradient Descent,簡稱GD),也稱批量梯度下降法(Batch Gradient Descent,簡稱BGD)或最速下降法(Steepest Decent),是最小化目標函數(shù)的一種常用的一階優(yōu)化方法。
- 原理
思想:目標函數(shù)沿其梯度的反方向,下降最快。因此,要找到目標函數(shù)的局部極小值,必須沿其當前點對應(yīng)梯度(或近似梯度)的反方向,規(guī)定步長,迭代搜索。
其中,梯度為目標函數(shù) J(??) 相對于權(quán)重 ?? 的偏導數(shù)。而目標函數(shù)的減小,是通過先隨機初始化權(quán)重 ?? ,再對其迭代更新來實現(xiàn)的。
對單個數(shù)據(jù)點而言:
對于所有的數(shù)據(jù)點:


- 缺點:
通過每次參數(shù)更新的偽碼可以看到,每次參數(shù)的更新,都用到了所有的訓練樣本,即m個。
因此,計算代價太高,耗費時間長。
2. 隨機梯度下降法
- 出發(fā)點
鑒于梯度下降法,每次參數(shù)的更新都用到了所有的訓練樣本,耗費時間長。因此,提出了隨機梯度下降法(Stochastic Gradient Descent,簡稱 SGD)。
- 原理
相比于梯度下降法,每次參數(shù)的更新,僅用到了一個訓練樣本。
即,每次參數(shù)更新的偽碼為:

- 優(yōu)缺點
每次參數(shù)的更新,僅用到了一個訓練樣本。優(yōu)點:相比梯度下降法,節(jié)省時間。缺點:每次迭代并不一定都是模型整體最優(yōu)化的方向。若樣本噪聲較多,很容易陷入局部最優(yōu)解而收斂到不理想的狀態(tài)。
3. 小批量梯度下降法
- 出發(fā)點
鑒于梯度下降法耗費時間長,而隨機梯度下降法容易陷入局部最優(yōu)解。因此,提出了小批量梯度下降法(Mini-batch Gradient Descent,簡稱MBGD)。即,在訓練速度和訓練準確率之間取得一個折衷。
- 原理
若指定每次參數(shù)更新用到的訓練樣本個數(shù) batch_size=10,則每次參數(shù)更新,隨機選取10個訓練樣本進行計算。
即,每次參數(shù)更新的偽碼為:

- 優(yōu)點
節(jié)省計算時間,相比選取單個樣本更具穩(wěn)定性,是在大規(guī)模數(shù)據(jù)上訓練大型線性模型的主要方法。
相關(guān)知識補充
a. 臨界點 與 全局最小點
臨界點(Critical point)是斜率為零的點,在一維情況下大致可以分為三種類型:局部極小點(Local minimum),其值低于相鄰點;局部極大點(Local maximum),其值高于相鄰點;鞍點(Saddle point),同時存在更高和更低的相鄰點。
如下圖所示:

全局最小點(global minimum)是使目標函數(shù)取得絕對最小值(相對所有其他值)的點。
在機器學習中,我們要優(yōu)化的目標函數(shù),可能含有許多不是最優(yōu)的局部極小點,或者還有很多處于非常平坦的區(qū)域內(nèi)的鞍點。因此,我們通常尋找使目標函數(shù)非常小的點,但并不一定是最小。
即,當存在多個局部極小點或平坦區(qū)域時,優(yōu)化算法可能無法找到全局最小點。 因此,即使找到的解不是真正最小的,但只要它們對應(yīng)的目標函數(shù)顯著低的值,我們通常就能接受這樣的解。

b. 梯度下降的收斂 與 方向
梯度下降在梯度的每一個元素為零時收斂(或在實踐中,很接近零時)。 即,尋求全局最小點或局部極小點,使目標函數(shù)達到顯著低。
如下圖所示:

梯度下降的方向與等高線的切線方向垂直,如下圖所示:

- 推導
假設(shè)目標函數(shù)為一個三維曲面 z=f(x,y) ,該曲面被平面 z=c 所截的曲線方程為:

那么,該曲線在 xoy 平面上的投影,就是曲面 z 的等高線。
因此,等高線的曲線方程為:
等高線上任意一點 p 的切線斜率為dy/dx。由點p的切線斜率與法線斜率之積為-1,可得點 p 對應(yīng)的法線斜率為:




因此,梯度下降的方向與等高線的切線法向量方向相同。即,梯度下降的方向與等高線的切線方向垂直。
參考
【知乎專欄】機器學習算法與自然語言處理:詳解梯度下降法的三種形式BGD、SGD以及MBGD
【知乎專欄】機器學習算法與自然語言處理:為什么梯度的方向與等高線切線方向垂直?
【Book】Deep Learning (by Yoshua Bengio, Ian Goodfellow and Aaron Courville)
【Book】解析卷積神經(jīng)網(wǎng)絡(luò) — 深度學習實踐手冊(魏秀參)