神经网络中Batch和Epoch之间的区别
來自蜂口知道公眾號
隨機梯度下降法是一種具有大量超參數的學習算法。通常會使初學者感到困惑的兩個超參數: Batch大小和Epoch數量,它們都是整數值,看起來做的事情是一樣的。在這篇文章中,您將發現隨機梯度下降中Batch和Epoch之間的差異。
閱讀這篇文章后,你會知道:
·???隨機梯度下降是一種迭代學習算法,它使用訓練數據集來更新模型。
·???批量大小是梯度下降的超參數,在模型的內部參數更新之前控制訓練樣本的數量。
·???Epoch數是梯度下降的超參數,其控制通過訓練數據集的完整傳遞的數量。
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。
?
總結
以上是生活随笔為你收集整理的神经网络中Batch和Epoch之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TypeError: 'numpy.nd
- 下一篇: QT学习笔记(十):通用算法示例