梯度下降法、隨機梯度下降法 與 小批量梯度下降法

在機器學習中,大多涉及某種形式的優(yōu)化。其中,優(yōu)化通常指目標函數(shù) J(??) 的最小化(最大化可通過 -J(??) 的最小化來實現(xiàn))。

梯度下降法,作為一種優(yōu)化的常用方法,包含三種不同的形式,分別為:梯度下降法、隨機梯度下降法 與 小批量梯度下降法。以下,分別就三種形式的原理及優(yōu)缺點逐一進行闡述。

為了便于理解,本文以線性回歸為例來進行說明。

因此,有一般的線性回歸函數(shù)為:

其中,??j 指對應(yīng)權(quán)重。

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

其中,h??(x(i)) 為 預(yù)測值,y(i) 為真實值;除以2是為了便于求導計算。


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ù)點的梯度計算。其中,?? 為學習率,也就是規(guī)定的步長。

對于所有的數(shù)據(jù)點:


訓練集的梯度計算

若?? =1,那么每次參數(shù)更新的偽碼為:
訓練集的權(quán)重更新
  • 缺點:

通過每次參數(shù)更新的偽碼可以看到,每次參數(shù)的更新,都用到了所有的訓練樣本,即m個。

因此,計算代價太高,耗費時間長。


2. 隨機梯度下降法

  • 出發(fā)點

鑒于梯度下降法,每次參數(shù)的更新都用到了所有的訓練樣本,耗費時間長。因此,提出了隨機梯度下降法(Stochastic Gradient Descent,簡稱 SGD)。

  • 原理

相比于梯度下降法,每次參數(shù)的更新,僅用到了一個訓練樣本。

即,每次參數(shù)更新的偽碼為:

訓練集的權(quán)重更新
  • 優(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ù)更新的偽碼為:

訓練集的權(quán)重更新
  • 優(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ò) — 深度學習實踐手冊(魏秀參)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容