深度學(xué)習(xí)中的Epoch,Batchsize,Iterations,都是什么鬼?

姓名:蘆凱 ? ? ?學(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。

怎么樣,你成功被繞暈了嗎?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容