在機器學習中,我們通常會根據輸入 x 來**輸出 y,**值和真實值之間會有一定的誤差,我們在訓練的過程中會使用優化器(optimizer)來最小化這個誤差,梯度下降法(gradient descent)就是一種常用的優化器
梯度是乙個向量,具有大小和方向。想象我們在上山,從我所在的位置出發可以從很多方向上山,而最陡的那個方向就是梯度方向。對函式f(x
1,x2
,⋯,x
n)
f(x_1, x_2, \cdots, x_n)
f(x1,
x2,
⋯,xn
)來講,對於函式上的每乙個點p(η
1,η2
,⋯,η
n)
p(\eta_1, \eta_2, \cdots, \eta_n)
p(η1,
η2,
⋯,ηn
),我們都可以定義乙個向量
\displaystyle\left \, \frac, \cdots, \frac\right\}
,這個向量被稱為函式 f
ff在點 p
pp的梯度(gradient),記為∇f(
x1,x
2,⋯,
xn
)\nabla f(x_1, x_2, \cdots, x_n)
∇f(x1
,x2
,⋯,x
n)。函式f
ff在p
pp點沿著梯度方向最陡,也就是變化速率最快。
我們的目標是使損失函式最小化,所以我們要沿著梯度相反方向下降,這就是所謂的梯度下降。假設我們要求函式f(x
1,x2
)f(x_1,x_2)
f(x1,
x2)
的最小值,起始點為x(1
)=(x
1(1)
,x2(
2)
)\displaystyle x^=(x^_1, x^_2)
x(1)=(
x1(1
),x
2(2)
),則在x(1
)x^
x(1)
點處的梯度為∇f(
x(1)
)=(∂
f∂x1
(1),
∂f∂x
2(1)
)\displaystyle\nabla f(x^)=(\frac}, \frac_2})
∇f(x(1
))=(
∂x1(
1)∂
f,∂
x2(1
)∂f
),我們可以進行第一次梯度下降來更新xxx:
x (2
)=x(
1)−α
∇f(x
(1))
x^ = x^ - \alpha \nabla)}
x(2)=x
(1)−
α∇f(
x(1)
)其中,α
\alpha
α被稱為步長,在機器學習中也被稱為學習率。這樣我們就得到了下乙個點x(2
)x^
x(2)
,重複上面的步驟,直到函式收斂,此時可認為函式取得了最小值。
名詞定義
epoch使用訓練集的全部資料對模型進行一次完整訓練,被稱之為「一代訓練」
batch使用訓練集的一小部分樣本對權重進行一次反向傳播的引數更新,這一小部分樣本被稱為「一批資料」
iteration使用乙個batch資料對模型進行一次引數更新過程稱為「一次訓練」
乙個batch包含的樣本數目稱為batch_size,一般設為2梯度下降法演算法一般有三種形式:22的n
nn次冪,常用的包括64,128,256。 網路較小時選用256,較大時選用64
其實大體上都是一樣的,差別就在於所用的batch_size大小不一樣,由此影響了損失函式所採用的樣本點的數量,從而實現不同速度和精度的梯度下降方式,隨機梯度下降和batch梯度下降都是特殊的mini-batch梯度下降。
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...
梯度下降法
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...
梯度下降法
回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...