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