梯度下降小結


機器學習中,很多監督學習模型需要構建損失函數,再用優化算法對損失函數進行優化,找到最優參數。常用到的優化算法有梯度下降法和最小二乘法,這里總結梯度下降法。

1 梯度下降原理

梯度下降在求解過程中,只需要求解損失函數的一階導數,計算代價較小。基本思想:從某一點出發,沿着變化最快的方向前進,到達一個點后,再找下一個變化最快的地方,直到到達收斂點。
介紹梯度下降前,需要了解以下數學概念。

1.1 梯度下降必備數學基礎

導數——簡單來說,導數就是函數\(y=f(x)\)在某一點(\((x_{0},y_{0})\))切線的斜率,記作\(f'{(x_{0})}\)\(\frac{\mathrm{d} y}{\mathrm{d} x}|x=x_{0}\)
偏導數——在某一點(\((x_{0},y_{0})\))處的偏導數的幾何意義是曲面\(f(x,y)\)與面\(x=x_{0}\)或面\(y=y_{0}\)交線在\(y=y_{0}\)\(x=x_{0}\)處切線的斜率,記作\(f_{x}(x_{0},y_{0})\)\(\frac{\partial f}{\partial x}\)\(\frac{\partial f}{\partial y}\)
方向導數——簡單來說,方向導數就是函數沿着某個方向的變化率。
梯度:函數\(f(x,y)\)在平面域內具有連續的一階偏導數,對於每一個點\(P(x,y)\)都有向量\((\frac{\partial f}{\partial x},\frac{\partial f}{\partial y})\),則將其稱為函數在點\(P\)的梯度,記作\(\bigtriangledown f(x,y)\)
梯度向量的幾何意義就是函數變化最快的地方,沿着梯度向量的方向,更容易找到最大值,而沿着梯度方向相反的方向,更易找到函數的最小值。

1.2 梯度下降

機器學習算法中,用梯度下降法迭代求解,使得損失函數最小化、得到模型參數。如果需要求解損失函數最大值,就需要梯度上升法迭代。實際,梯度下降法和梯度上升法可以相互轉換,下面詳細介紹梯度下降法。

2 梯度下降算法

以線性回歸模型為例,設一個特征\(x\)與參數\(\theta _{0}\)\(\theta _{1}\),得到假設函數為:\(h_{\theta }(x^{(i)})=\theta _{0}+\theta _{1}x^{(i)}\) 損失函數:\(J(\theta _{0},\theta _{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}\) 優化目標: \(\min_{ \theta_{0} ,\theta _{1}}J(\theta _{0},\theta _{1})\)
梯度下降算法,同步更新所有參數\(\theta\)

\[\theta_{j}:=\theta_{j}-\alpha \frac{\partial }{\partial \theta _{j}}J(\theta _{0},\theta _{1}) \]

簡單地說,梯度下降目的如下圖,就是找到損失函數\(J(\theta _{0},\theta _{1})\)的最小值。

梯度下降有三種形式:批量梯度下降(Batch Gradient Descent)、隨機梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-Batch Gradient Descent),下面分別介紹三種梯度下降算法。

3 批量梯度下降

批量梯度下降是梯度下降最原始的形式,每一次迭代使用全部樣本進行梯度更新,具體理解為,對目標函數求偏導

\[\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}}=\frac{1}{m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)} \]

每次迭代對參數進行更新:

\[\theta _{j}:=\theta _{j}-\alpha \frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}}=\theta _{j}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)} \]

優點:
1)一次迭代是對所有樣本進行計算,此時利用矩陣進行操作,實現了並行。
2)由全數據集確定的方向能夠更好地代表樣本總體,從而更准確地朝向極值所在的方向。當目標函數為凸函數時,BGD一定能夠得到全局最優。
缺點:
當樣本數目 m 很大時,每迭代一步都需要對所有樣本計算,訓練過程會很慢。

4 隨機梯度下降

隨機梯度下降每次迭代只用一個樣本對參數進行更新,加快了訓練速度。
一個樣本的目標函數:

\[J(\theta _{0},\theta _{1})=\frac{1}{2}(h_{\theta }(x^{(i)})-y^{(i)})^{2} \]

目標函數求偏導:

\[\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}}=(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)} \]

參數更新:

\[\theta _{j}:=\theta _{j}-\alpha \frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}}=\theta _{j}-\alpha(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)} \]

優點:
由於不是在全部訓練數據上的損失函數,而是在每輪迭代中,隨機優化某一條訓練數據上的損失函數,這樣每一輪參數的更新速度大大加快。
缺點:
1)准確度下降。由於即使在目標函數為強凸函數的情況下,SGD仍舊無法做到線性收斂。
2)可能會收斂到局部最優,由於單個樣本並不能代表全體樣本的趨勢。
3)不易於並行實現。

5 小批量梯度下降

小批量梯度下降,是對批量梯度下降以及隨機梯度下降的一個折中辦法。其思想是:每次迭代使用小批量個樣本來對參數進行更新。
優點:
1)通過矩陣運算,每次在一個batch上優化神經網絡參數並不會比單個數據慢太多。
2)每次使用一個batch可以大大減小收斂所需要的迭代次數,同時可以使收斂到的結果更加接近梯度下降的效果。
3)可實現並行化。
缺點:
小批量樣本個數的不當選擇可能會帶來一些問題

6 梯度下降總結

如果樣本量比較小,采用批量梯度下降算法。如果樣本太大,或者在線算法,使用隨機梯度下降算法。在實際的一般情況下,采用小批量梯度下降算法。

***參考:統計學習方法 梯度下降小結 ***


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM