姓名:蘆凱 ? ? ?學(xué)號(hào):17011210546
轉(zhuǎn)載自:公眾號(hào)“習(xí)悅智能”,原文鏈接:https://mp.weixin.qq.com/s/tEOvxPRPAPndNk3thT8EZA
【嵌牛導(dǎo)讀】Epoch,Batchsize,Iterations,這三個(gè)都是深度學(xué)習(xí)訓(xùn)練模型時(shí)經(jīng)常遇到的概念。你一定有過這樣的時(shí)刻,面對(duì)這幾個(gè)詞傻傻分不清楚,這三個(gè)概念究竟是什么,它們又有什么區(qū)別?
【嵌牛鼻子】深度學(xué)習(xí),梯度下降,Epoch,Batchsize,Iterations
【嵌牛提問】深度學(xué)習(xí)中的Epoch,Batchsize,Iterations,都是什么意思
【嵌牛正文】
梯度下降法
一切的一切,要從機(jī)器學(xué)習(xí)中的梯度下降法說起。
首先讓我們來回顧一下這個(gè)常見的不能再常見的算法。梯度下降法是機(jī)器學(xué)習(xí)中經(jīng)典的優(yōu)化算法之一,用于尋求一個(gè)曲線的最小值。所謂"梯度",即一條曲線的坡度或傾斜率,"下降"指代下降遞減的過程。
梯度下降法是迭代的,也就是說我們需要多次計(jì)算結(jié)果,最終求得最優(yōu)解。梯度下降的迭代質(zhì)量有助于使輸出結(jié)果盡可能擬合訓(xùn)練數(shù)據(jù)。

梯度下降法中有一個(gè)稱為學(xué)習(xí)率的參數(shù),如上圖左所示,在算法開始時(shí),步長(zhǎng)更大,即學(xué)習(xí)率更高。隨著點(diǎn)的下降,步長(zhǎng)變短,即學(xué)習(xí)率變短。此外,誤差函數(shù)也在不斷減小。
在訓(xùn)練模型時(shí),如果訓(xùn)練數(shù)據(jù)過多,無法一次性將所有數(shù)據(jù)送入計(jì)算,那么我們就會(huì)遇到epoch,batchsize,iterations這些概念。為了克服數(shù)據(jù)量多的問題,我們會(huì)選擇將數(shù)據(jù)分成幾個(gè)部分,即batch,進(jìn)行訓(xùn)練,從而使得每個(gè)批次的數(shù)據(jù)量是可以負(fù)載的。將這些batch的數(shù)據(jù)逐一送入計(jì)算訓(xùn)練,更新神經(jīng)網(wǎng)絡(luò)的權(quán)值,使得網(wǎng)絡(luò)收斂。
Epoch
一個(gè)epoch指代所有的數(shù)據(jù)送入網(wǎng)絡(luò)中完成一次前向計(jì)算及反向傳播的過程。由于一個(gè)epoch常常太大,計(jì)算機(jī)無法負(fù)荷,我們會(huì)將它分成幾個(gè)較小的batches。那么,為什么我們需要多個(gè)epoch呢?我們都知道,在訓(xùn)練時(shí),將所有數(shù)據(jù)迭代訓(xùn)練一次是不夠的,需要反復(fù)多次才能擬合收斂。在實(shí)際訓(xùn)練時(shí),我們將所有數(shù)據(jù)分成幾個(gè)batch,每次送入一部分?jǐn)?shù)據(jù),梯度下降本身就是一個(gè)迭代過程,所以單個(gè)epoch更新權(quán)重是不夠的。
下圖展示了使用不同個(gè)數(shù)epoch訓(xùn)練導(dǎo)致的結(jié)果。

可見,隨著epoch數(shù)量的增加,神經(jīng)網(wǎng)絡(luò)中權(quán)重更新迭代的次數(shù)增多,曲線從最開始的不擬合狀態(tài),慢慢進(jìn)入優(yōu)化擬合狀態(tài),最終進(jìn)入過擬合。
因此,epoch的個(gè)數(shù)是非常重要的。那么究竟設(shè)置為多少才合適呢?恐怕沒有一個(gè)確切的答案。對(duì)于不同的數(shù)據(jù)庫來說,epoch數(shù)量是不同的。但是,epoch大小與數(shù)據(jù)集的多樣化程度有關(guān),多樣化程度越強(qiáng),epoch應(yīng)該越大。
Batch Size
所謂Batch就是每次送入網(wǎng)絡(luò)中訓(xùn)練的一部分?jǐn)?shù)據(jù),而Batch Size就是每個(gè)batch中訓(xùn)練樣本的數(shù)量
上文提及,每次送入訓(xùn)練的不是所有數(shù)據(jù)而是一小部分?jǐn)?shù)據(jù),另外,batch size 和batch numbers不是同一個(gè)概念~
Batch size大小的選擇也至關(guān)重要。為了在內(nèi)存效率和內(nèi)存容量之間尋求最佳平衡,batch size應(yīng)該精心設(shè)置,從而最優(yōu)化網(wǎng)絡(luò)模型的性能及速度。
下圖為batch size不同數(shù)據(jù)帶來的訓(xùn)練結(jié)果,其中,藍(lán)色為所有數(shù)據(jù)一并送入訓(xùn)練,也就是只有1個(gè)batch,batch內(nèi)包含所有訓(xùn)練樣本。綠色為minibatch,即將所有數(shù)據(jù)分為若干個(gè)batch,每個(gè)batch內(nèi)包含一小部分訓(xùn)練樣本。紅色為隨機(jī)訓(xùn)練,即每個(gè)batch內(nèi)只有1個(gè)訓(xùn)練樣本。

上圖可見,藍(lán)色全數(shù)據(jù)效果更好,當(dāng)數(shù)據(jù)量較小,計(jì)算機(jī)可以承載的時(shí)候可以采取這種訓(xùn)練方式。綠色的mini分批次訓(xùn)練精度略有損失,而紅色的隨機(jī)訓(xùn)練,難以達(dá)到收斂狀態(tài)。
Iterations
所謂iterations就是完成一次epoch所需的batch個(gè)數(shù)。
剛剛提到的,batch numbers就是iterations。
簡(jiǎn)單一句話說就是,我們有2000個(gè)數(shù)據(jù),分成4個(gè)batch,那么batch size就是500。運(yùn)行所有的數(shù)據(jù)進(jìn)行訓(xùn)練,完成1個(gè)epoch,需要進(jìn)行4次iterations。
怎么樣,你成功被繞暈了嗎?