梯度下降法 gradient descent

2021-07-23 10:13:13 字數 1492 閱讀 7559

也稱為最速下降法(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 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...