天天看點

訓練時的Batchsize和Epoch之間的差別是什麼?

閱讀這篇文章後,你會知道:

·   随機梯度下降是一種疊代學習算法,它使用訓練資料集來更新模型。

·   批量大小是梯度下降的超參數,在模型的内部參數更新之前控制訓練樣本的數量。

·   Epoch數是梯度下降的超參數,其控制通過訓練資料集的完整傳遞的數量。

這篇文章分為五個部分:

1.    随機梯度下降

2.    什麼是Sample?

3.    什麼是Batch?

4.    什麼是Epoch?

5.    Batch和Epoch有什麼差別?

随機梯度下降

随機梯度下降(Stochastic Gradient Descent,簡稱SGD)是一種用于訓練機器學習算法的優化算法,最值得注意的是深度學習中使用的人工神經網絡。該算法的工作是找到一組内部模型參數,這些參數在某些性能測量中表現良好,例如對數損失或均方誤差。

優化是一種搜尋過程,您可以将此搜尋視為學習。優化算法稱為“ 梯度下降 ”,其中“ 梯度 ”是指誤差梯度或誤差斜率的計算,“下降”是指沿着該斜率向下移動到某個最小誤差水準。該算法是疊代的。這意味着搜尋過程發生在多個不連續的步驟上,每個步驟都希望略微改進模型參數。

每一步都需要使用模型和目前的一組内部參數對一些樣本進行預測,将預測與實際預期結果進行比較,計算誤差,并使用誤差更新内部模型參數。該更新過程對于不同的算法是不同的,但是在人工神經網絡的情況下,使用反向傳播更新算法。

在我們深入研究批次和時代之前,讓我們來看看樣本的含義。

什麼是Sample?

Sample是單行資料。它包含輸入到算法中的輸入和用于與預測進行比較并計算錯誤的輸出。

訓練資料集由許多行資料組成,例如許多Sample。Sample也可以稱為執行個體,觀察,輸入向量或特征向量。

現在我們知道Sample是什麼,讓我們定義一個batch。

什麼是Batch?

Batch大小是一個超參數,用于定義在更新内部模型參數之前要處理的樣本數。将批處理視為循環疊代一個或多個樣本并進行預測。在批處理結束時,将預測與預期輸出變量進行比較,并計算誤差。從該錯誤中,更新算法用于改進模型,例如沿誤差梯度向下移動。訓練資料集可以分為一個或多個Batch。當所有訓練樣本用于建立一個Batch時,學習算法稱為批量梯度下降。當批量是一個樣本的大小時,學習算法稱為随機梯度下降。當批量大小超過一個樣本且小于訓練資料集的大小時,學習算法稱為小批量梯度下降。

·    批量梯度下降。批量大小=訓練集的大小

·        随機梯度下降。批量大小= 1

·       小批量梯度下降。1 <批量大小<訓練集的大小

在小批量梯度下降的情況下,流行的批量大小包括32,64和128個樣本。您可能會在文獻和教程中看到這些值在模型中使用。

什麼是Epoch?

Epoch數是一個超參數,它定義了學習算法在整個訓練資料集中的工作次數。一個Epoch意味着訓練資料集中的每個樣本都有機會更新内部模型參數。Epoch由一個或多個Batch組成。例如,如上所述,具有一批的Epoch稱為批量梯度下降學習算法。您可以将for循環放在每個需要周遊訓練資料集的epoch上,在這個for循環中是另一個嵌套的for循環,它周遊每批樣本,其中一個批次具有指定的“批量大小”樣本數。

epochs 數量傳統上很大,通常是數百或數千,允許學習算法運作直到模型的誤差被充分地最小化了。您可能會看到文獻和教程設定為10,100,500,1000和更大的時期數量的示例。通常建立線圖,其顯示沿x軸的時間以及模型在y軸上的誤差或技能。這些圖有時被稱為學習曲線。這些圖可以幫助診斷模型是否已經過度學習,學習不足或者是否适合訓練資料集。

Batch和Epoch有什麼差別?

Batch大小是在更新模型之前處理的多個樣本。Epoch數是通過訓練資料集的完整傳遞次數。批處理的大小必須大于或等于1且小于或等于訓練資料集中的樣本數。可以将epoch設定為1和無窮大之間的整數值。您可以根據需要運作算法,甚至可以使用除固定數量的epoch之外的其他條件來停止算法,例如模型錯誤随時間的變化(或缺少變化)。它們都是整數值,并且它們都是學習算法的超參數,例如學習過程的參數,而不是學習過程找到的内部模型參數。您必須為學習算法指定batch大小和epoch數。如何配置這些參數沒有固定的規則。您必須嘗試不同的值,看看哪種方法最适合您的問題。

工作執行個體

最後,讓我們用一個小例子來說明這一點。

假設您有一個包含200個樣本(資料行)的資料集,并且您選擇的Batch大小為5和1,000個Epoch。

這意味着資料集将分為40個Batch,每個Batch有5個樣本。每批五個樣品後,模型權重将更新。

這也意味着一個epoch将涉及40個Batch或40個模型更新。

有1000個Epoch,模型将暴露或傳遞整個資料集1,000次。在整個教育訓練過程中,總共有40,000Batch。

在這裡batchsize為5,若将batchsize設為10,則相應的訓練時間也會加倍。

繼續閱讀