天天看點

Epoch、Batch Size和Iterations

我想在你身上一定發生過這樣的情況吧:你感覺Epoch, Batch Size和Iteration這三個參數很相似卻又分不清它們,隻能坐在電腦前撓頭想到:“為什麼我要在代碼裡寫這三種術語呢?他們究竟有什麼不同?”

為了找出這三個術語之間的不同,你需要通過學習像梯度下降這樣的一些機器學習術語來幫助你了解。

下面簡單介紹一下梯度下降。

梯度下降

下圖顯示的是一個在機器學習中使用的通過疊代優化算法來找最佳結果(本例中也就是曲線的最小值)的例子。

首先梯度的含義相當于曲線的斜率或者是斜坡的坡度這樣的概念,下降表示的是代價函數值的下降。

疊代優化算法中的“疊代”的意思是我們需要不斷調用算法多次擷取結果來得到最優的結果。好的梯度下降的疊代品質能夠幫助優化一個欠拟合的圖形,使其更加适應資料。

Epoch、Batch Size和Iterations

參見我翻譯的另一篇文章機器學習簡介

梯度下降有一個參數叫做學習率。如上圖左所示,剛開始的時候步長比較大意味着學習率也比較高,随着圖中黑色點的下移,學習率變得越來越小,進而步長也變得越來越短。同時,成本函數或者說成本值也在不斷下降。有時候,人們會說,損失函數或者損失值在下降,其實,成本(Cost)和損失(Lost)在這裡代表同樣的意思(順便需要說明的是,成本/損失的減少是件好事)。

隻有在資料量很大以至于我們不能夠一次性将所有資料輸入到計算機中時,我們才需要使用到epochs、batch_size、iterations這幾個概念,而這種情況在機器學習中是時常發生的。是以,為了解決這個問題,我們需要将資料分成一小份一小份的,并将它們一個個輸入計算機,并在每一步結束更新神經網絡的權重來拟合給定的資料。

Epochs

當一個資料集前向通過神經網絡并反向通過神經網絡一次,這個過程被稱作一個Epoch。

是以,當一個資料集太大而不能一次性通過神經網絡時,我們将它分為多個batch。

為什麼我們要使用多個Epoch?

我想剛開始聽到下面的說法也許大家會覺得很奇怪,就是将一個完整的資料集向神經網絡中輸入僅一次是不夠的,我們需要将這個資料集反複傳遞給神經網絡。但是各位需要明白的是,正因為我們所能夠使用的資料集是有限的,僅靠一次輸入資料的過程或者說一個epoch是不能夠建立好模型的,是以我們才需要多次傳遞資料給神經網絡,在此基礎上利用梯度下降也就是一個疊代的過程來優化學習過程和網絡圖。

Epoch、Batch Size和Iterations

如上圖所示,随着epoch數量的增加,神經網絡中的權重也随之改變,曲線拟合的函數也從欠拟合到最适宜的再到過拟合的。

那麼,最合适的epoch數量是多少呢?

不幸的是,這個問題沒有正确的答案。不同資料集适合不同的epoch數量,但epoch的數量與資料集的多樣性是相關的,比如,隻有黑貓的資料集和有多種顔色的貓的資料集适合的epoch數量一般是不同的。

Batch Size

在一個batch中訓練樣本的數量。

注意:batch size和number of batches是不一樣的概念。

但是什麼是一個batch呢?

正如前文所說,在不能一次性将一個完整的資料集輸入給神經網絡時,就需要将資料集劃分成多個batch。

這就正如我将本篇文章分為Introduction、Gradient descent、Epoch、Batch size和Iterations這幾部分,以使讀者更容易閱讀一樣。

Epoch、Batch Size和Iterations

Iterations

想要了解Iterations,你隻需要知道乘法表或者擁有一個電腦就行啦。

Epoch、Batch Size和Iterations

疊代是完成一個epoch需要的batch數量(number of batches)。

注意:對于一個epoch而言,number of batches和number of iterations是一樣的。

假設我們有一個具有2000個樣本的訓練集。

那麼我們可以将這2000個樣本分成4份有500個樣本大小的batch,那麼number of batches和number of iterations就都為4,而batch size為500,這2000個樣本完整地通過神經網絡一次的過程就是一個epoch。

Epoch、Batch Size和Iterations

本篇翻譯原文連結https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9,有翻譯不對的地方歡迎各位讀者批評指正。

繼續閱讀