梯度下降法的三種形式 BGD SGD MBGD

2022-05-18 08:26:49 字數 3851 閱讀 8615

在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。

下面我們以線性回歸演算法來對三種梯度下降法進行比較。

一般線性回歸函式的假設函式為:

對應的損失函式為:

下圖為乙個二維引數(θ

0'>θ0和θ1

'>θ1

)組對應能量函式的視覺化圖:θ0

批量梯度下降法(batch gradient descent,簡稱bgd)是梯度下降法最原始的形式,它的具體思路是在更新每一引數時都使用所有的樣本來進行更新。

我們的目的是要誤差函式盡可能的小,即求解weights使誤差函式盡可能小。首先,我們隨機初始化weigths,然後不斷反覆的更新weights使得誤差函式減小直到滿足要求時停止。這裡更新演算法我們選擇梯度下降演算法,利用初始化的weights並且反覆更新weights:

這裡代表學習率,表示每次向著j最陡峭的方向邁步的大小。為了更新weights,我們需要求出函式j的偏導數。首先當我們只有乙個資料點(x,y)的時候,j的偏導數是:

則對所有資料點上述損失函式的偏導(累和)為:

再最小化損失函式的過程中,需要不斷反覆的更新weights使得誤差函式減小,更新過程如下:

那麼好了,每次引數更新的偽**如下:

由上圖更新公式我們就可以看到,我們每一次的引數更新都用到了所有的訓練資料(比如有m個,就用到了m個),如果訓練資料非常多的話,是非常耗時的

下面給出批梯度下降的收斂圖:

從圖中,我們可以得到bgd迭代的次數相對較少。

**實現:

def

batchgradientdescent(x, y, theta, alpha, m, maxiteration):

for i in

range(maxiteration):

hypothesis =np.dot(x, theta)

loss = hypothesis -y

gradient = np.dot(x.transpose(), loss) /m

theta = theta - alpha * gradient #

對所有樣本求和

return theta

2、隨機梯度下降法sgd由於批梯度下降每跟新乙個引數的時候,要用到所有的樣本數,所以訓練速度會隨著樣本數量的增加而變得非常緩慢。隨機梯度下降正是為了解決這個辦法而提出的。它是利用每個樣本的損失函式對θ求偏導得到對應的梯度,來更新θ:

更新過程如下:

隨機梯度下降是通過每個樣本來迭代更新一次,對比上面的批量梯度下降,迭代一次需要用到所有訓練樣本(往往如今真實問題訓練資料都是非常巨大),一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次。

但是,sgd伴隨的乙個問題是噪音較bgd要多,使得sgd並不是每次迭代都向著整體最優化方向。

隨機梯度下降收斂圖如下:

我們可以從圖中看出sgd迭代的次數較多,在解空間的搜尋過程看起來很盲目。但是大體上是往著最優值方向移動。

**實現:

def

stochasticgradientdescent(x, y, theta, alpha, m, maxiteration):

data =

for i in range(10):

#這裡隨便挑選乙個進行更新點進行即可(不用想bgd一樣全部考慮)

for i in

range(maxiteration):

hypothesis =np.dot(x, theta)

loss = hypothesis - y #

這裡還是有十個樣本

index = random.sample(data, 1)[0] #

隨機抽取乙個樣本,得到它的下標

gradient = loss[index] * x[index] #

只取乙個點進行更新計算

theta = theta - alpha *gradient.t

return theta

3、min-batch 小批量梯度下降法mbgd我們從上面兩種梯度下降法可以看出,其各自均有優缺點,那麼能不能在兩種方法的效能之間取得乙個折衷呢?既演算法的訓練過程比較快,而且也要保證最終引數訓練的準確率而這正是小批量梯度下降法(mini-batch gradient descent,簡稱mbgd)的初衷。

我們假設每次更新引數的時候用到的樣本數為10個(不同的任務完全不同,這裡舉乙個例子而已

更新偽**如下:

4、三種梯度下降方法的總結

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

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

3.小批量梯度下降法是為了解決批梯度下降法的訓練速度慢,以及隨機梯度下降法的準確性綜合而來,但是這裡注意,不同問題的batch是不一樣的。

梯度下降法的三種形式BGD SGD以及MBGD

在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。下面我們以線性回歸演算法來對三種梯度下降法進行比較。一般線性回歸函式的假設函式為 h nj 0 j xjh j 0n jxj 對應的能量函式 損失函式...

梯度下降法的三種形式BGD SGD以及MBGD

閱讀目錄 在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。下面我們以線性回歸演算法來對三種梯度下降法進行比較。一般線性回歸函式的假設函式為 h n j 0 jxj h j 0n jxj 對應的能量函...

梯度下降法的三種形式BGD SGD以及MBGD

閱讀目錄 1.批量梯度下降法bgd 2.隨機梯度下降法sgd 3.小批量梯度下降法mbgd 4.總結 在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。下面我們以線性回歸演算法來對三種梯度下降法進行比...