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