也稱為最速下降法(steepest descent),用來求解無約束的最優化問題,有約束的最優化問題使用拉格朗日乘子法(lagrangian multiplier method);梯度下降法是迭代演算法,每一步需要求解目標函式的梯度向量。
目標函式f(x),已知f(x)可導且有極小值,求解無約束條件下f(x)的極小值點x∗
,及此時f(x)的極小值。
梯度下降法是一種迭代演算法,首先選取初值x0
,朝著使f(x)減小的方向不斷迭代更新
x ,直到f(x)收斂到極小值。這裡的問題就變成了:如何迭代
x才使得f(x)不斷逼近極小值,並使得f(x)下降得最快?
由於負梯度方向是使函式值下降最快的方向,在迭代的每一步,以負梯度方向更新
x 的值,從而達到以最快速度減少函式值的目的。
f(x)關於
x的導數為f,
(x)=
df(x
)dx ,若
x 的第
k次迭代值為xk
,在xk
處的梯度為∇f
(xk)
=f,(
xk) ,則
x 的第k+
1次迭代值xk
+1為:其中λ
k 為步長或者學習率,pk
是在xk
處的負梯度,即−∇
f(xk
) 。步長λk
由一維搜尋確定,即λk
使得目標函式f(
x),f(
x)的梯度為g(
x)=∇
f(x)
,閾值ε 置k=
0 ,取自變數初始值x0
∈rn 計算f(
xk) 計算xk
處的梯度∇f
(xk)
,若梯度小於閾值,即∣∣
∇f(x
k)∣∣
≺ε,則停止迭代,此時的xk
即為所求的極小值點,否則根據迭代規則求xk
+1←x
k+λk
pk,其中pk
=−∇f
(x) ,接下來求λk
f(xk+λk
pk)=
minλ≥0
f(xk
+λpk
) 已求得xk
+1,計算f(
xk+1
) ,當在
k 和k+
1處的函式值變化或者自變數的變化小於閾值,即當∣∣
f(xk
+1)−
f(xk
)∣∣≺
ε 或者∣∣
xk+1
−xk∣
∣≺ε 時,停止迭代
否則,令k=
k+1 ,轉到步驟3繼續迭代
用梯度下降法得到的最優解往往是區域性最優解,可能會陷入目標函式的區域性極小點,不能保證收斂到全域性最優點
若步長選擇太大,收斂速度可能一開始會較快,但可能會容易導致演算法出現振盪而不能收斂或者收斂很慢;若步長太小,則演算法收斂太慢
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...
梯度下降法
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...
梯度下降法
回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...