1. 程式人生 > >隨機梯度下降法(Stochastic Gradient Descent)和批量梯度下降法(Batch Gradient Descent )總結

隨機梯度下降法(Stochastic Gradient Descent)和批量梯度下降法(Batch Gradient Descent )總結

梯度下降法常用於最小化風險函式或者損失函式,分為隨機梯度下降(Stochastic Gradient Descent)和 批量梯度下降(Batch Gradient Descent )。除此之外,還有梯度上升法(Gradient Ascent),應用於極大似然估計,與下降法區別就是朝著梯度上升還是下降的方向迭代。

設hθ(x)是預測值,其中θ是模型的引數,J(θ)是損失函式,對於最小化損失函式問題,採用梯度下降法來求解。

1、批量梯度下降法:
假設J(θ)是平方損失函式,其中m是樣本個數,i表示第i個樣本,yi是真實值
這裡寫圖片描述

J(θ)對每一個θj求偏導,j指的是第j個引數
這裡寫圖片描述

按照每個引數θj的負梯度方向來更新
這裡寫圖片描述

批量梯度下降得到一個全域性最優解,但是每迭代一步,都要用到訓練集所有的資料;
如果m很大,迭代速度很慢。所以,這就引入了隨機梯度下降的方法。
收斂方向大概是這樣(等高線是損失函式):
這裡寫圖片描述

2、隨機梯度下降法:
每次迭代只選取一個樣本來更新θj
這裡寫圖片描述
收斂方向大概是這樣(哈哈哈哈……)
這裡寫圖片描述

總結與比較:
1、收斂速度:隨機梯度下降收斂速度比批量梯度下降慢,因為隨機梯度下降噪音較多,並不是每次迭代都朝著整體最優化方向;
2、計算速度:隨機梯度下降計算速度比批量梯度快,因為不需要用到所有樣本就能達到最優解。
3、最優解:
批量梯度下降是min所有訓練樣本的損失函式,使得最終求解的是全域性的最優解,即求解的引數是使得風險函式最小。隨機梯度下降是min每次選取的樣本的損失函式,雖然每次迭代得到的損失函式並不一定朝著全域性最優方向, 但是整體方向是逼近全域性最優解的,最終的結果往往是在全域性最優解附近。

當損失函式(目標函式)是凸函式時,求得的是全域性最優解。

補充:除此之外,還有個min-batch 小批量梯度下降法MBGD
意思就是在以上兩種方法之間折中,每次用到一個batch的樣本,根據不同的任務,選取batch中樣本的個數。

三種梯度下降方法的總結

1.批梯度下降每次更新使用了所有的訓練資料,最小化損失函式,如果只有一個極小值,那麼批梯度下降是考慮了訓練集所有資料,是朝著最小值迭代運動的,但是缺點是如果樣本值很大的話,更新速度會很慢。

2.隨機梯度下降在每次更新的時候,只考慮了一個樣本點,這樣會大大加快訓練資料,也恰好是批梯度下降的缺點,但是有可能由於訓練資料的噪聲點較多,那麼每一次利用噪聲點進行更新的過程中,就不一定是朝著極小值方向更新,但是由於更新多輪,整體方向還是大致朝著極小值方向更新,又提高了速度。

3.小批量梯度下降法是為了解決批梯度下降法的訓練速度慢,以及隨機梯度下降法的準確性綜合而來,但是這裡注意,不同問題的batch是不一樣的,聽師兄跟我說,我們nlp的parser訓練部分batch一般就設定為10000,那麼為什麼是10000呢,我覺得這就和每一個問題中神經網路需要設定多少層,沒有一個人能夠準確答出,只能通過實驗結果來進行超引數的調整。