神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,傻傻分不清Epoch、Batch Size和迭代
你肯定經(jīng)歷過這樣的時(shí)刻,看著電腦屏幕抓著頭,困惑著:「為什么我會在代碼中使用這三個(gè)術(shù)語,它們有什么區(qū)別嗎?」因?yàn)樗鼈兛雌饋韺?shí)在太相似了。
為了理解這些術(shù)語有什么不同,你需要了解一些關(guān)于機(jī)器學(xué)習(xí)的術(shù)語,比如梯度下降,以幫助你理解。
這里簡單總結(jié)梯度下降的含義…
梯度下降
這是一個(gè)在機(jī)器學(xué)習(xí)中用于尋找***結(jié)果(曲線的最小值)的迭代優(yōu)化算法。
梯度的含義是斜率或者斜坡的傾斜度。
下降的含義是代價(jià)函數(shù)的下降。
算法是迭代的,意思是需要多次使用算法獲取結(jié)果,以得到***化結(jié)果。梯度下降的迭代性質(zhì)能使欠擬合的圖示演化以獲得對數(shù)據(jù)的***擬合。
梯度下降中有一個(gè)稱為學(xué)習(xí)率的參量。如上圖左所示,剛開始學(xué)習(xí)率更大,因此下降步長更大。隨著點(diǎn)下降,學(xué)習(xí)率變得越來越小,從而下降步長也變小。同時(shí),代價(jià)函數(shù)也在減小,或者說代價(jià)在減小,有時(shí)候也稱為損失函數(shù)或者損失,兩者都是一樣的。(損失/代價(jià)的減小是一件好事)
只有在數(shù)據(jù)很龐大的時(shí)候(在機(jī)器學(xué)習(xí)中,幾乎任何時(shí)候都是),我們才需要使用 epochs,batch size,迭代這些術(shù)語,在這種情況下,一次性將數(shù)據(jù)輸入計(jì)算機(jī)是不可能的。因此,為了解決這個(gè)問題,我們需要把數(shù)據(jù)分成小塊,一塊一塊的傳遞給計(jì)算機(jī),在每一步的末端更新神經(jīng)網(wǎng)絡(luò)的權(quán)重,擬合給定的數(shù)據(jù)。
EPOCHS
當(dāng)一個(gè)完整的數(shù)據(jù)集通過了神經(jīng)網(wǎng)絡(luò)一次并且返回了一次,這個(gè)過程稱為一個(gè) epoch。
然而,當(dāng)一個(gè) epoch 對于計(jì)算機(jī)而言太龐大的時(shí)候,就需要把它分成多個(gè)小塊。
為什么要使用多于一個(gè) epoch?
我知道這剛開始聽起來會很奇怪,在神經(jīng)網(wǎng)絡(luò)中傳遞完整的數(shù)據(jù)集一次是不夠的,而且我們需要將完整的數(shù)據(jù)集在同樣的神經(jīng)網(wǎng)絡(luò)中傳遞多次。但是請記住,我們使用的是有限的數(shù)據(jù)集,并且我們使用一個(gè)迭代過程即梯度下降,優(yōu)化學(xué)習(xí)過程和圖示。因此僅僅更新權(quán)重一次或者說使用一個(gè) epoch 是不夠的。
隨著 epoch 數(shù)量增加,神經(jīng)網(wǎng)絡(luò)中的權(quán)重的更新次數(shù)也增加,曲線從欠擬合變得過擬合。
那么,幾個(gè) epoch 才是合適的呢?
不幸的是,這個(gè)問題并沒有正確的答案。對于不同的數(shù)據(jù)集,答案是不一樣的。但是數(shù)據(jù)的多樣性會影響合適的 epoch 的數(shù)量。比如,只有黑色的貓的數(shù)據(jù)集,以及有各種顏色的貓的數(shù)據(jù)集。
BATCH SIZE
一個(gè) batch 中的樣本總數(shù)。記住:batch size 和 number of batches 是不同的。
BATCH 是什么?
在不能將數(shù)據(jù)***神經(jīng)網(wǎng)絡(luò)的時(shí)候,就需要將數(shù)據(jù)集分成幾個(gè) batch。
正如將這篇文章分成幾個(gè)部分,如介紹、梯度下降、Epoch、Batch size 和迭代,從而使文章更容易閱讀和理解。
迭代
理解迭代,只需要知道乘法表或者一個(gè)計(jì)算器就可以了。迭代是 batch 需要完成一個(gè) epoch 的次數(shù)。記?。涸谝粋€(gè) epoch 中,batch 數(shù)和迭代數(shù)是相等的。
比如對于一個(gè)有 2000 個(gè)訓(xùn)練樣本的數(shù)據(jù)集。將 2000 個(gè)樣本分成大小為 500 的 batch,那么完成一個(gè) epoch 需要 4 個(gè) iteration。