梯度下降法是求解無約束最優問題中常用到的一種學習方法,形式簡單,屬於一階收斂,在空間進行線性搜尋。在前面講到的邏輯斯蒂回歸模型中,就常用到梯度下降法來學習引數。
首先給出問題定義(統計學習方法附錄a):
假設f(x)是rn
上具有一階連續偏導的函式,求解的目標問題如下:mi
nx∈r
nf(x
) x
∗ 表示目標函式f(
x)的極小值點。
梯度下降法通過迭代的方法不斷更新
x 的值,直至
x離極小值點x∗
的距離滿足條件。由於函式的負梯度方向是函式值下降最快的方向,因此梯度下降法選擇在負梯度方向更新
x 的值。
若第k次迭代時
x的值為x(
k),在該點處對f(
x)一階泰勒展開,得到:f(
x)=f
(x(k
))+g
tk(x
−x(k
))
其中,g
k 為在x(
k)點的梯度。有如下等式來對x(
k+1)
更新:x(
k+1)
=x(k
)+λk
pk
其中,pk=
−gk 是該點的負梯度,表示更新
x 時的搜尋方向;λk
是步長,在梯度下降法使用中是最需要考慮的乙個引數,要求:f(
x(k)
+λkp
k)=m
inλ≥
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
)+λk
pk來更新
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)。
梯度下降法通常在離極值點遠的地方下降很快,但在極值點附近時會收斂速度很慢。並且,在目標函式是凸函式時,梯度下降法的解是全域性最優解。而在一般情況下,梯度下降法不保證求得全域性最優解。
示例
若對乙個線性資料集通過梯度下降法求得線性方程的引數th
eta,
即上面的
xk。設在訓練資料上的損失函式為: j(
θ)=1
2m∑i
=1m(
hθ(x
i)−y
i)2
其中,hθ(
x)=θ
⋅x ,θ
為增廣向
量 對j
(θ) 求偏導,得: j′
(θ)=
12m×
2∑mi
=1(h
θ(xi
)−yi
)×h′
θ(xi
) =1
m∑mi
=1(h
θ(xi
)−yi
)×xi
用式子 θj
←θj−
λ⋅j′
(θ)
對θj 進行更新。
下面是對乙個單變數資料集使用梯度下降法得出的線性方程:
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...
梯度下降法
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...
梯度下降法
回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...