常见优化算法批量梯度下降、小批量梯度下降、随机梯度下降的对比
在機(jī)器學(xué)習(xí)領(lǐng)域中,梯度下降的方式有三種,分別是:批量梯度下降法BGD、隨機(jī)梯度下降法SGD、小批量梯度下降法MBGD,并且都有不同的優(yōu)缺點。
下面我們以線性回歸算法(也可以是別的算法,只是損失函數(shù)(目標(biāo)函數(shù))不同而已,它們的導(dǎo)數(shù)的不同,做法是一模一樣的)為例子來對三種梯度下降法進(jìn)行比較。
1. 線性回歸
假設(shè) 特征 和 結(jié)果 都滿足線性。即不大于一次方。這個是針對 收集的數(shù)據(jù)而言。
收集的數(shù)據(jù)中,每一個分量,就可以看做一個特征數(shù)據(jù)。每個特征至少對應(yīng)一個未知的參數(shù)。這樣就形成了一個線性模型函數(shù),向量表示形式:
這個就是一個組合問題,已知一些數(shù)據(jù),如何求里面的未知參數(shù),給出一個最優(yōu)解。 一個線性矩陣方程,直接求解,很可能無法直接求解。有唯一解的數(shù)據(jù)集,微乎其微。
基本上都是解不存在的超定方程組。因此,需要退一步,將參數(shù)求解問題,轉(zhuǎn)化為求最小誤差問題,求出一個最接近的解,這就是一個松弛求解。
求一個最接近解,直觀上,就能想到,誤差最小的表達(dá)形式。仍然是一個含未知參數(shù)的線性模型,一堆觀測數(shù)據(jù),其模型與數(shù)據(jù)的誤差最小的形式,模型與數(shù)據(jù)差的平方和最小:
2. 參數(shù)更新
對目標(biāo)函數(shù)進(jìn)行求導(dǎo),導(dǎo)數(shù)如下:
利用梯度下降跟新參數(shù),參數(shù)更新方式如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)
3.?批量梯度下降法(Batch Gradient Descent,簡稱BGD)是梯度下降法最原始的形式,它的具體思路是在更新每一參數(shù)時都使用所有的樣本來進(jìn)行更新,也就是方程(1)中的m表示樣本的所有個數(shù)。
優(yōu)點:全局最優(yōu)解;易于并行實現(xiàn);
缺點:當(dāng)樣本數(shù)目很多時,訓(xùn)練過程會很慢。
4. 隨機(jī)梯度下降法:它的具體思路是在更新每一參數(shù)時都使用一個樣本來進(jìn)行更新,也就是方程(1)中的m等于1。每一次跟新參數(shù)都用一個樣本,更新很多次。如果樣本量很大的情況(例如幾十萬),那么可能只用其中幾萬條或者幾千條的樣本,就已經(jīng)將theta迭代到最優(yōu)解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓(xùn)練樣本,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次,這種跟新方式計算復(fù)雜度太高。
但是,SGD伴隨的一個問題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。
優(yōu)點:訓(xùn)練速度快;
缺點:準(zhǔn)確度下降,并不是全局最優(yōu);不易于并行實現(xiàn)。
從迭代的次數(shù)上來看,SGD迭代的次數(shù)較多,在解空間的搜索過程看起來很盲目。
5.小批量梯度下降法(Mini-batch Gradient Descent,簡稱MBGD):它的具體思路是在更新每一參數(shù)時都使用一部分樣本來進(jìn)行更新,也就是方程(1)中的m的值大于1小于所有樣本的數(shù)量。為了克服上面兩種方法的缺點,又同時兼顧兩種方法的有點。
6.三種方法使用的情況:
如果樣本量比較小,采用批量梯度下降算法。如果樣本太大,或者在線算法,使用隨機(jī)梯度下降算法。在實際的一般情況下,采用小批量梯度下降算法。
參考:
http://blog.csdn.net/viewcode/article/details/8794401
http://mp.weixin.qq.com/s/fXlbB7KmiX0iIv6xwSxNIA總結(jié)
以上是生活随笔為你收集整理的常见优化算法批量梯度下降、小批量梯度下降、随机梯度下降的对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模型评估准确率、召回率、ROC曲线、AU
- 下一篇: java常见的时间处理工具类