深度學習中的batch、epoch、iteration的含義


轉自:https://blog.csdn.net/qq_18668137/article/details/80883350

深度學習的優化算法,說白了就是梯度下降。每次的參數更新有兩種方式。

第一種,遍歷全部數據集算一次損失函數,然后算函數對各個參數的梯度,更新梯度。這種方法每更新一次參數都要把數據集里的所有樣本都看一遍,計算量開銷大,計算速度慢,不支持在線學習,這稱為Batch gradient descent,批梯度下降。

另一種,每看一個數據就算一下損失函數,然后求梯度更新參數,這個稱為隨機梯度下降,stochastic gradient descent。這個方法速度比較快,但是收斂性能不太好,可能在最優點附近晃來晃去,hit不到最優點。兩次參數的更新也有可能互相抵消掉,造成目標函數震盪的比較劇烈。

為了克服兩種方法的缺點,現在一般采用的是一種折中手段,mini-batch gradient decent,小批的梯度下降,這種方法把數據分為若干個批,按批來更新參數,這樣,一個批中的一組數據共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性。另一方面因為批的樣本數與整個數據集相比小了很多,計算量也不是很大。

現在用的優化器SGD是stochastic gradient descent的縮寫,但不代表是一個樣本就更新一回,還是基於mini-batch的。

那 batch epoch iteration代表什么呢?

 

(1)batchsize:批大小。在深度學習中,一般采用SGD訓練,即每次訓練在訓練集中取batchsize個樣本訓練;

(2)iteration:1個iteration等於使用batchsize個樣本訓練一次;

(3)epoch:1個epoch等於使用訓練集中的全部樣本訓練一次,通俗的講epoch的值就是整個數據集被輪幾次。

比如訓練集有500個樣本,batchsize = 10 ,那么訓練完整個樣本集:iteration=50,epoch=1.

batch: 深度學習每一次參數的更新所需要損失函數並不是由一個數據獲得的,而是由一組數據加權得到的,這一組數據的數量就是batchsize。

batchsize最大是樣本總數N,此時就是Full batch learning;最小是1,即每次只訓練一個樣本,這就是在線學習(Online Learning)。當我們分批學習時,每次使用過全部訓練數據完成一次Forword運算以及一次BP運算,成為完成了一次epoch。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM