Neural-Networks
什麼是神經網絡中的批量大小?
我正在使用
Python Keras package
神經網絡。這是鏈接。是否batch_size
等於測試樣本的數量?從維基百科,我們有這些信息:然而,在其他情況下,評估總和梯度可能需要對所有加法函數的梯度進行昂貴的評估。當訓練集很大並且不存在簡單的公式時,評估梯度之和變得非常昂貴,因為評估梯度需要評估所有被加函數的梯度。為了節省每次迭代的計算成本,隨機梯度下降在每一步都對一個和函數的子集進行採樣。這在大規模機器學習問題的情況下非常有效。
以上信息是描述測試數據嗎?這與
batch_size
keras 中的相同嗎(每次梯度更新的樣本數)?
批量大小定義將通過網絡傳播的樣本數量。
例如,假設您有 1050 個訓練樣本,並且您希望將 a 設置
batch_size
為 100。該算法從訓練數據集中獲取前 100 個樣本(從第 1 個到第 100 個)並訓練網絡。接下來,它獲取第二個 100 個樣本(從第 101 個樣本到第 200 個樣本)並再次訓練網絡。我們可以繼續執行此過程,直到我們通過網絡傳播所有樣本。最後一組樣本可能會出現問題。在我們的示例中,我們使用了 1050,它不能被 100 整除而沒有餘數。最簡單的解決方案就是獲取最後的 50 個樣本並訓練網絡。使用批量大小 < 所有樣本數的優點:
- 它需要更少的內存。由於您使用較少的樣本訓練網絡,因此整個訓練過程需要較少的內存。如果您無法將整個數據集放入機器的內存中,這一點尤其重要。
- 通常,使用小批量的網絡訓練速度更快。那是因為我們在每次傳播後更新權重。在我們的示例中,我們傳播了 11 個批次(其中 10 個有 100 個樣本,1 個有 50 個樣本),在每個批次之後,我們都更新了網絡的參數。如果我們在傳播過程中使用所有樣本,我們將只對網絡參數進行 1 次更新。
使用批量大小<所有樣本數的缺點:
- 批次越小,梯度的估計就越不准確。在下圖中,您可以看到小批量梯度(綠色)的方向與全批量梯度(藍色)的方向相比波動更大。
隨機只是一個
batch_size
等於 1 的小批量。在這種情況下,梯度比小批量梯度更頻繁地改變其方向。