2.2.1 mini-batch
調試處理
我們知道在大量數據下面訓練算法,速度會非常慢,那么我們需要找到快速的優化算法來加快訓練速度。這里我們先來討論mini-batch梯度下降法
mini-batch梯度下降法介紹
如圖所示
我們傳統的算法是執行一遍梯度算法要跑整個數據集,如果數據集很大,比如說有5千萬,那么多次執行梯度下降法速度會很慢很慢。
所以,如果你在處理完整個訓練集樣本之前,先讓梯度下降法處理一部分,那么你的算法會快很多。我們可以把訓練集分割成更小的部分,這些子集稱之為mini-batch,我們將這些mini-batch用
大括號的形式來表示。這樣,我們對每一個mini-batch用梯度下降法,就避免了一次處理整個數據集,導致計算過慢。
mini-batch梯度下降法原理
如圖所示,這里每一個mini-batch的樣本量是1000,所以,我們對1000個樣本量使用梯度下降法。
理解mini-batch梯度下降法
使用batch梯度下降(就是一般的要遍歷整個訓練集的梯度下降)
如圖左側所示,這是一般的batch下降,cost function隨著迭代次數不斷降低。但是mini-batch不是這樣的結果,右側是mini-batch的圖像。不需要個mini都要J函數是下降的,只需要總體趨勢是下降的就可以了。
對于mini-batch而言,mini-batch的大小是一個至關重要的參數。
如圖所示,如果在極端情況下,mini-batch的大小是1,那么我們就得到了一個新的算法,稱為隨機梯度下降法。
圖片的下側展示了兩種極端情況下,成本函數的優化情況。藍色的線表示的是mini-batch大小是m的情況下,此時實際上就是batch。紫色的線表示的是mini-batch大小是1的情況下,從圖中我們可以看出,大部分情況藍色的線可以執行梯度下降最后找到最優解,但是當mini-batch的數量太低的時候(紫色),隨機噪聲很大,大部分情況下是可以找到最小值,但是有時也會例外。
隨機梯度法永遠不會收斂,而且會在最小值附近不斷波動,所以他不會到達最小值之后就停留在這里。隨機梯度法的另外一個缺點就是你會失去向量化給你的加速效果。
所以實踐中我們的mini-batch size最好選擇一個比較均衡的值。
mini-batch大小的選擇
那么有什么大小選擇的指導原則呢?
如圖所示,對于很小的樣本量,我們不需要考慮這個問題,當樣本量比較大的時候,我們的mini-batch的大小一般設置成2的次方的形式,一般不會大于512。
另外一個值得注意的原則是mini-batch要和CPU以及GPU內存相符。如果不符的話,效果會非常糟糕。
吳教主深度學習和神經網絡課程總綱
總結
以上是生活随笔為你收集整理的2.2.1 mini-batch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.1.5 梯度检验
- 下一篇: 2.2.2 指数加权平均