神經網路常見引數解釋:epoch、batch、batch size、step、iteration

疯狂学习GIS發表於2024-05-30

  本文介紹在機器學習、深度學習的神經網路模型中,epochbatchbatch sizestepiteration等名詞的具體含義。

  epoch:表示將訓練資料集中的所有樣本都過一遍(且僅過一遍)的訓練過程。在一個epoch中,訓練演算法會按照設定的順序將所有樣本輸入模型進行前向傳播、計算損失、反向傳播和引數更新。一個epoch通常包含多個step

  batch:一般翻譯為“批次”,表示一次性輸入模型一組樣本。在神經網路的訓練過程中,訓練資料往往是很多的,比如幾萬條甚至幾十萬條——如果我們一次性將這上萬條的資料全部放入模型,對計算機效能、神經網路模型學習能力等的要求太高了;那麼就可以將訓練資料劃分為多個batch,並隨後分批將每個batch的樣本一起輸入到模型中進行前向傳播、損失計算、反向傳播和引數更新。但要注意,一般batch這個詞用的不多,多數情況大家都是隻關注batch size的。

  batch size:一般翻譯為“批次大小”,表示訓練過程中一次輸入模型的一組樣本的具體樣本數量。前面提到了,我們在神經網路訓練過程中,往往需要將訓練資料劃分為多個batch;而具體每一個batch有多少個樣本,那麼就是batch size指定的了。

  step:一般翻譯為“步驟”,表示在一個epoch中模型進行一次引數更新的操作。通俗地說,在神經網路訓練過程中,每次完成對一個batch資料的訓練,就是完成了一個step。很多情況下,stepiteration表示的是同樣的含義。

  iteration:一般翻譯為“迭代”,多數情況下就表示在訓練過程中經過一個step的操作。一個iteration包括了一個step中前向傳播、損失計算、反向傳播和引數更新的流程。當然,在某些情況下,stepiteration可能會有細微的區別——有時候iteration是指完成一次前向傳播和反向傳播的過程,而step是指透過最佳化演算法對模型引數進行一次更新的操作。但是絕大多數情況下,我們就認為二者是一樣的即可。

  以上是對這些名詞的解釋,我們將他們帶入實際的例子就更好理解了。

  假設我們現在有一個訓練資料集(這個資料集不包括測試集),其中資料的樣本數量為1500。那麼,我們將這1500條資料全部訓練1次,就是一個epoch。其中,由於資料量較大(其實1500個樣本在神經網路研究中肯定不算大,但是我們這裡只是一個例子,大家理解即可),因此我們希望將其分為多個batch,分批加以訓練;我們決定每1批訓練100條資料,那麼為了將這些資料全部訓練完,就需要訓練15批——在這裡,batch size就是100,而batch就是15。而前面我們提到,每次完成對一個batch資料的訓練,就是完成了一個step,那麼stepiteration就也都是15

  以上是我們對這一資料集加以1次訓練(1epoch)的情況,而一般情況下我們肯定是需要訓練多次的,也就是多個epoch。我們假設我們需要訓練3epoch,相當於需要將這1500個樣本訓練3次。那麼,stepiteration都會隨著epoch的改變而發生改變——二者都變為45,因為15 * 3。但是,batch依然是15,因為其是在每一個epoch的視角內來看待的,和epoch的具體大小沒有關係。

  至此,大功告成。

相關文章