梯度下降法是求解無約束最優問題中常用到的一種學習方法,形式簡單,屬於一階收斂,在空間進行線性搜索。在前面講到的邏輯斯蒂迴歸模型中,就常用到梯度下降法來學習參數。
首先給出問題定義(統計學習方法附錄A):
假設f(x)是Rn 上具有一階連續偏導的函數,求解的目標問題如下:
minx∈Rnf(x)
x∗ 表示目標函數f(x) 的極小值點。
梯度下降法通過迭代的方法不斷更新x 的值,直至x 離極小值點x∗ 的距離滿足條件。由於函數的負梯度方向是函數值下降最快的方向,因此梯度下降法選擇在負梯度方向更新x 的值。
若第k次迭代時x 的值爲x(k) ,在該點處對f(x) 一階泰勒展開,得到:
f(x)=f(x(k))+gTk(x−x(k))
其中,gk 爲在x(k) 點的梯度。有如下等式來對x(k+1) 更新:
x(k+1)=x(k)+λkpk
其中,pk=−gk 是該點的負梯度,表示更新x 時的搜索方向;λk 是步長,在梯度下降法使用中是最需要考慮的一個參數,要求:
f(x(k)+λkpk)=minλ≥0f(x(k)+λpk)
在實際運用中最簡單方法是通過多次實驗選取最合適的步長作爲定長來使用。
綜上,梯度下降法的步驟如下:
(1)、取初始值x(0) ,置k=0;
(2)、計算f(x(k)) ;
(3)、計算梯度gk=g(x(k)) ,當||gk||<ϵ 時,說明已經收斂,停止迭代,記x∗=x(k) ;否則,令pk=−gk ;
(4)、使用等式x(k+1)=x(k)+λkpk 來更新x ,並求f(x(k+1)) ,當||f(x(k+1))−f(x(k))||<ϵ 或||x(k+1)−x(k)||<ϵ 時,停止迭代,記x∗=x(k+1) ;
(5)、否則,置k=k+1 ,轉(3)。
梯度下降法通常在離極值點遠的地方下降很快,但在極值點附近時會收斂速度很慢。並且,在目標函數是凸函數時,梯度下降法的解是全局最優解。而在一般情況下,梯度下降法不保證求得全局最優解。
示例
若對一個線性數據集通過梯度下降法求得線性方程的參數theta,即上面的xk 。設在訓練數據上的損失函數爲:
J(θ)=12m∑i=1m(hθ(xi)−yi)2
其中,
hθ(x)=θ⋅x ,
θ爲增廣向量
對
J(θ) 求偏導,得:
J′(θ)=12m×2∑mi=1(hθ(xi)−yi)×h′θ(xi)
=1m∑mi=1(hθ(xi)−yi)×xi
用式子
θj←θj−λ⋅J′(θ)
對
θj 進行更新。
下面是對一個單變量數據集使用梯度下降法得出的線性方程: