梯度下降法

2021-10-02 08:22:44 字數 2114 閱讀 6758

在機器學習中,我們通常會根據輸入 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 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...