Mini-batch\Batch\Stochastic梯度下降法 [Andrew Ng 深度學習筆記]

假設神經網絡的成本函數爲

Cost\, \, function=\frac{1}{m}\sum_{i= 1}^{m}L(\hat{y}^{(i)}, y^{(i)})

其中 m 爲訓練樣本的數目,全局的成本函數是對所有樣本的成本函數求平均值

若樣本數量很大,設爲 M,現在考慮兩種極端情況,再引出二者結合的“中庸”方法

先給出一幅圖,這是吳恩達老師課件上的,分別表示三種方法的梯度下降情況

批量梯度下降(Batch Gradient Descent)

若每一次迭代都遍歷整個訓練集,也就是 m == M,這樣迭代的“準確性”最大,對應於上圖藍色那條,每次梯度下降的方向都很好

在計算過程中,向量化把 m 個樣本的向量合併成了矩陣。由於 m 值很大,這些矩陣會變得十分龐大,造成計算耗時,慢的缺點

隨機梯度下降(Stochastic Gradient Descent)

若 m == 1,也就是每次迭代都只針對一個樣本,這樣就變成了隨機梯度下降。顯而易見的是,這樣計算速度會變得很快

缺點也很明顯,準確性很不好,就如上圖紫色那條:大部分情況是向着最小值前進的,但有時某個樣本會指向錯誤的方向,可能向反方向移動,噪聲很大

隨機梯度下降永遠不會收斂,最終會在最小值附近徘徊

小批量梯度下降(Mini-Batch Gradient Descent, MBGD)

把上述兩者結合一下,m 取中間值,是Mini-Batch梯度下降法。就是上圖中綠色那條,優缺點方面就像前兩者融合

把數量爲 M 的樣本集合分段,迭代的時候依次對每段進行計算(此時 m 就等於段的大小),每段都輪流用過之後,再從第一段開始一個新的循環。

與批梯度下降的比較:

對於批梯度下降法,成本函數每次都在減小,是單調的。這個可以理解,因爲每次迭代都針對的是同樣的樣本集

對於Mini-Batch梯度下降法,出現擺動不再單調,存在噪聲。這是因爲相鄰的迭代是針對不同的樣本集(Mini-Batch)

但是成本函數總的趨勢還是減小的

Mini-Batch大小的選取

當樣本數 M <= 2000時,直接用批梯度下降法就可以

M > 2000時,就可以分成許多Mini-Batch了,大小一般取:64、128、256、512,都是2的次方,這是由於考慮到了電腦內存設置和使用的方式

 

這是目前階段的理解,日後發現錯誤或新的感悟再訂正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章