梯度下降法(gradient descent)或最速下降法(steepest descent)是求解無約束最優問題的一種常用的方法,實現簡單。梯度下降法是迭代演算法,每一步需要求解目標函式的梯度。
假設f(x)是rn
上具有一階連續偏導數的函式。求解的約束最優化問題是:
min
xεrn
f(x)
梯度下降法是一種迭代演算法。選取適當的初始值x(
0),不斷迭代,更新
x 的值,進行目標函式的極小化,知道收斂。由於負梯度方向是使函式值下降最快的方向,在迭代的每一步,以負梯度方向更新
x的值,從而減小目標函式的目的。由於f
(x) 具有一階連續偏導數,若第
k 次迭代值為xk
,則可將f(
x)在x
k 附近進行一階泰勒展開: f(
x)=f
(xk)
+gtk
(x−x
k)這裡,gk
=g(x
(k))
=▽f(
x(k)
) 為f(
x) 在x
(k) 的梯度。
求出第k+1
次迭代值x(
k+1)
: x(
k+1)
=x(k
)+λk
pk其中,pk
是搜尋方向,取負梯度方向pk
=−▽f
(xk)
,λk 是步長,由一維搜尋確定,即λk
使得: f(
xk+λ
kpk)
=min
λ≥0f
(x(k
)+λk
pk)
輸入:目標函式f(
x),梯度函式g(
x)=▽
f(x)
,計算精度ϵ
輸出:f(x
) 的極小點x∗
1.取初始值x0
ϵrn ,置k=
0 2.計算f(
xk)
3.計算梯度gk
=g(x
(k))
,當∥g
k∥<
ϵ 時,停止迭代,令x∗
=xk ;否則,令pk
=−g(
x(k)
) ,求λk
,使f(
xk+λ
kpk)
=min
λ≥0f
(x(k
)+λk
pk)
4.置x(k
+1)=
x(k)
+λkp
k ,計算f(
x(k+
1)) ,當∥∥
f(x(
k+1)
)−f(
x(k))∥∥
∥∥x(
k+1)
−x(k
)∥∥<
ε 時,停止迭代,令x∗
=xk+
1 5.否則,置k=
k+1 ,轉向3
當目標函式是凸函式時候,梯度下降法的解就是全域性最優解。一般情況,不能保證是全域性最優解,同時梯度下降法不一定是最快的。
1.當去正梯度方向時候,是梯度上公升法
2.對於線性回歸問題中
) 是已經知道的,訓練集中的資料,h(
x)是我們的**值,
n 是模型中特徵的個數,x0
=1,因為線性方程中可能存在常數項
對給定的訓練集,我們要盡可能的準確**出,要保證代價函式最小
根據梯度下降法,我們需要最小化代價函式來求出θ
迭代公式如下:
α 是步長
對代價函式求導
則:每次迭代的θ
注: 1.迭代公式左邊的θj
: 可以理解為θj
+12.如果在迭代的過程中,每次隨機的選取x(
i)就是隨機梯度下降法
3.在上面的迭代公式中我們可以看出,每次的迭代誤差是:
這個過程叫:batch gradient descent增量梯度下降法
注意:這裡θj
是乙個數,不是向量,對每次是更新乙個值,而上面的對
x 求導是最向量求導,每次更新的是所有的值
m是訓練集樣本數量
4.為了提高速度,不需要每天都要計算所有的誤差
隨機梯度下降法應運而生,stochastic gradient descent
5.矩陣計算形式
令導數為0 xt
xθ=x
ty t
hen
θ=(x
tx)−
1xty
6.上面的過程可以是最小二乘法原理,同時也是線性擬合的過程。
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...
梯度下降法
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...
梯度下降法
回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...