1. 程式人生 > >三種梯度下降的方式:批量梯度下降、小批量梯度下降、隨機梯度下降

三種梯度下降的方式:批量梯度下降、小批量梯度下降、隨機梯度下降

在機器學習領域中,梯度下降的方式有三種,分別是:批量梯度下降法BGD、隨機梯度下降法SGD、小批量梯度下降法MBGD,並且都有不同的優缺點。

下面我們以線性迴歸演算法(也可以是別的演算法,只是損失函式(目標函式)不同而已,它們的導數的不同,做法是一模一樣的)為例子來對三種梯度下降法進行比較。

1. 線性迴歸

假設 特徵 和 結果 都滿足線性。即不大於一次方。這個是針對 收集的資料而言。
收集的資料中,每一個分量,就可以看做一個特徵資料。每個特徵至少對應一個未知的引數。這樣就形成了一個線性模型函式,向量表示形式:

clip_image005

這個就是一個組合問題,已知一些資料,如何求裡面的未知引數,給出一個最優解。 一個線性矩陣方程,直接求解,很可能無法直接求解。有唯一解的資料集,微乎其微。

基本上都是解不存在的超定方程組。因此,需要退一步,將引數求解問題,轉化為求最小誤差問題,求出一個最接近的解,這就是一個鬆弛求解。

求一個最接近解,直觀上,就能想到,誤差最小的表達形式。仍然是一個含未知引數的線性模型,一堆觀測資料,其模型與資料的誤差最小的形式,模型與資料差的平方和最小:

clip_image006

2. 引數更新

對目標函式進行求導,導數如下:


利用梯度下降跟新引數,引數更新方式如下:

                                                                                                                                                                                                                                                       (1)

3. 批量梯度下降法(Batch Gradient Descent,簡稱BGD)是梯度下降法最原始的形式,它的具體思路是在更新每一引數時都使用所有的樣本來進行更新,也就是方程(1)中的m表示樣本的所有個數。

優點:全域性最優解;易於並行實現;

缺點:當樣本數目很多時,訓練過程會很慢。

4. 隨機梯度下降法:它的具體思路是在更新每一引數時都使用一個樣本來進行更新,也就是方程(1)中的m等於1。每一次跟新引數都用一個樣本,更新很多次。如果樣本量很大的情況(例如幾十萬),那麼可能只用其中幾萬條或者幾千條的樣本,就已經將theta迭代到最優解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次,這種跟新方式計算複雜度太高。

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

優點:訓練速度快;

缺點:準確度下降,並不是全域性最優;不易於並行實現。

從迭代的次數上來看,SGD迭代的次數較多,在解空間的搜尋過程看起來很盲目。

5.小批量梯度下降法(Mini-batch Gradient Descent,簡稱MBGD):它的具體思路是在更新每一引數時都使用一部分樣本來進行更新,也就是方程(1)中的m的值大於1小於所有樣本的數量。為了克服上面兩種方法的缺點,又同時兼顧兩種方法的有點。

6.三種方法使用的情況:

如果樣本量比較小,採用批量梯度下降演算法。如果樣本太大,或者線上演算法,使用隨機梯度下降演算法。在實際的一般情況下,採用小批量梯度下降演算法。

參考:

http://blog.csdn.net/viewcode/article/details/8794401

http://mp.weixin.qq.com/s/fXlbB7KmiX0iIv6xwSxNIA