機器學習中,很多監督學習模型需要構建損失函數,再用優化算法對損失函數進行優化,找到最優參數。常用到的優化算法有梯度下降法和最小二乘法,這里總結梯度下降法。
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\):
簡單地說,梯度下降目的如下圖,就是找到損失函數\(J(\theta _{0},\theta _{1})\)的最小值。
梯度下降有三種形式:批量梯度下降(Batch Gradient Descent)、隨機梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-Batch Gradient Descent),下面分別介紹三種梯度下降算法。
3 批量梯度下降
批量梯度下降是梯度下降最原始的形式,每一次迭代使用全部樣本進行梯度更新,具體理解為,對目標函數求偏導
每次迭代對參數進行更新:
優點:
1)一次迭代是對所有樣本進行計算,此時利用矩陣進行操作,實現了並行。
2)由全數據集確定的方向能夠更好地代表樣本總體,從而更准確地朝向極值所在的方向。當目標函數為凸函數時,BGD一定能夠得到全局最優。
缺點:
當樣本數目 m 很大時,每迭代一步都需要對所有樣本計算,訓練過程會很慢。
4 隨機梯度下降
隨機梯度下降每次迭代只用一個樣本對參數進行更新,加快了訓練速度。
一個樣本的目標函數:
目標函數求偏導:
參數更新:
優點:
由於不是在全部訓練數據上的損失函數,而是在每輪迭代中,隨機優化某一條訓練數據上的損失函數,這樣每一輪參數的更新速度大大加快。
缺點:
1)准確度下降。由於即使在目標函數為強凸函數的情況下,SGD仍舊無法做到線性收斂。
2)可能會收斂到局部最優,由於單個樣本並不能代表全體樣本的趨勢。
3)不易於並行實現。
5 小批量梯度下降
小批量梯度下降,是對批量梯度下降以及隨機梯度下降的一個折中辦法。其思想是:每次迭代使用小批量個樣本來對參數進行更新。
優點:
1)通過矩陣運算,每次在一個batch上優化神經網絡參數並不會比單個數據慢太多。
2)每次使用一個batch可以大大減小收斂所需要的迭代次數,同時可以使收斂到的結果更加接近梯度下降的效果。
3)可實現並行化。
缺點:
小批量樣本個數的不當選擇可能會帶來一些問題
6 梯度下降總結
如果樣本量比較小,采用批量梯度下降算法。如果樣本太大,或者在線算法,使用隨機梯度下降算法。在實際的一般情況下,采用小批量梯度下降算法。
***參考:統計學習方法 梯度下降小結 ***