深度學習中的batch_size,iterations,epochs等概念的理解


在自己完成的幾個有關深度學習的Demo中,幾乎都出現了batch_size,iterations,epochs這些字眼,剛開始我也沒在意,覺得Demo能運行就OK了,但隨着學習的深入,我就覺得不弄懂這幾個基本的概念,對整個深度學習框架理解的自然就不夠透徹,所以今天讓我們一起了解一下這三個概念。


1.batch_size

深度學習的優化算法,用大白話來說其實主要就是梯度下降算法,而每次的參數權重更新主要有兩種方法。

(1)遍歷全部數據集算一次損失函數,然后算函數對各個參數的梯度,更新梯度

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

(2)stochastic gradient descent

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

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

集相比小了很多,計算量也不是很大。

基本上現在的梯度下降都是基於mini-batch的,所以深度學習框架的函數中經常會出現batch_size,就是指這個意思。

2.iterations

iterations(迭代):每一次迭代都是一次權重更新,每一次權重更新需要batch_size個數據進行Forward運算得到損失函數,再BP算法(反向傳播算法)更新參數。1個iteration等於使用batchsize個樣本訓練一次。

3.epochs

epochs被定義為向前和向后傳播中所有批次的單次訓練迭代。這意味着1個周期是整個輸入數據的單次向前和向后傳遞。簡單說,epochs指的就是訓練過程中數據將被“輪”多少次,就這樣。

接下來讓我們看個例子:

假設訓練集有1000個樣本,batchsize=10,那么: 

訓練完整個樣本集需要: 100次iteration,1次epoch。

具體的計算公式為: one epoch = numbers of iterations = N = 訓練樣本的數量/batch_size

 


免責聲明!

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



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