1. 程式人生 > >神經網路2. epoch, iteration, batchsize相關理解和說明

神經網路2. epoch, iteration, batchsize相關理解和說明

本文為原創文章轉載請註明出處:http://blog.csdn.NET/qq_20259459  和作者資訊。

batchsize:中文翻譯為批大小(批尺寸)。

簡單點說,批量大小將決定我們一次訓練的樣本數目。 batch_size將影響到模型的優化程度和速度。

為什麼需要有 Batch_Size :

batchsize 的正確選擇是為了在記憶體效率和記憶體容量之間尋找最佳平衡。

Batch_Size的取值

enter image description here

全批次(藍色)

如果資料集比較小我們就採用全資料集。全資料集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。

注:對於大的資料集我們不能使用全批次,因為會得到更差的結果。

迷你批次(綠色)

選擇一個適中的 Batch_Size 值。就是說我們選定一個batch的大小後,將會以batch的大小將資料輸入深度學習的網路中,然後計算這個batch的所有樣本的平均損失,即代價函式是所有樣本的平均。

隨機(batch_size等於1的情況)(紅色)

每次修正方向以各自樣本的梯度方向修正,橫衝直撞各自為政,難以達到收斂。

適當的增加Batchsize 的優點:

1.通過並行化提高記憶體利用率。

2.單次epoch的迭代次數減少,提高執行速度。(單次epoch=(全部訓練樣本/batchsize) / iteration =1)

3.適當的增加Batch_Size,梯度下降方向準確度增加,訓練震動的幅度減小。(看上圖便可知曉) 


經驗總結:
相對於正常資料集,如果Batch_Size過小,訓練資料就會非常難收斂,從而導致underfitting。 
增大Batch_Size,相對處理速度加快。 
增大Batch_Size,所需記憶體容量增加(epoch的次數需要增加以達到最好結果)。 

這裡我們發現上面兩個矛盾的問題,因為當epoch增加以後同樣也會導致耗時增加從而速度下降。因此我們需要尋找最好的batch_size。

再次重申:batchsize 的正確選擇是為了在記憶體效率和記憶體容量之間尋找最佳平衡。

iteration: 中文翻譯為迭代。

迭代重複反饋的動作,神經網路中我們希望通過迭代進行多次的訓練以到達所需的目標或結果。

每一次迭代得到的結果都會被作為下一次迭代的初始值。

一個迭代 = 一個正向通過+一個反向通過

epoch:中文翻譯為時期。

一個時期 = 所有訓練樣本的一個正向傳遞和一個反向傳遞。
本文為原創文章轉載請註明出處:http://blog.csdn.NET/qq_20259459  和作者資訊。