知識整理
深度學習中經常看到epoch、 iteration和batchsize三個的區別:
- 【1】batchsize
批大小。在深度學習中,一般採用SGD(隨機梯度下降法)訓練,即每次訓練在訓練集中取batchsize個樣本訓練;
- 【2】iteration
1個iteration等於使用batchsize個樣本訓練一次;
- 【3】epoch
(1)含義:一個完整的數據集通過了神經網絡一次並且返回了一次,這個過程稱爲一個 epoch。1個epoch等於使用訓練集中的全部樣本訓練一次;當一個 epoch 對於計算機而言太龐大的時候,就需要把它分成多個小塊。
(2)隨着 epoch 數量增加,神經網絡中的權重的更新次數也增加,曲線從欠擬合變得過擬合。
(3)那麼,幾個 epoch 纔是合適的呢?
這個問題並沒有正確的答案。對於不同的數據集,答案是不一樣的。但是數據的多樣性會影響合適的 epoch 的數量。比如,只有黑色的貓的數據集,以及有各種顏色的貓的數據集。
(4)爲什麼要使用多於一個 epoch?
我知道這剛開始聽起來會很奇怪,在神經網絡中傳遞完整的數據集一次是不夠的,而且我們需要將完整的數據集在同樣的神經網絡中傳遞多次。但是請記住,我們使用的是有限的數據集,並且我們使用一個迭代過程即梯度下降,優化學習過程可能會overfitting、optimum、underfitting。因此僅僅更新權重一次或者說使用一個 epoch 是不夠的。
eg:訓練集有1000個樣本,batchsize=10,那麼:訓練完整個樣本集需要:100次iteration,1次epoch。
【相關知識】
應用機器學習算法時,通常採用梯度下降法來對採用的算法進行訓練。
常用的梯度下降法還具體包含有三種不同的形式:
- 1. 批量梯度下降法BGD(Batch Gradient Descent)
批量梯度下降法(Batch Gradient Descent,簡稱BGD)是梯度下降法最原始的形式,
它的具體思路是在更新每一參數時都使用所有的樣本來進行更新。
優點:全局最優解;易於並行實現;
缺點:當樣本數目很多時,訓練過程會很慢。
- 2. 隨機梯度下降法SGD(Stochastic Gradient Descent)
由於批量梯度下降法在更新每一個參數時,都需要所有的訓練樣本,
所以訓練過程會隨着樣本數量的加大而變得異常的緩慢。
隨機梯度下降法正是爲了解決批量梯度下降法這一弊端而提出的。
隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬),
那麼可能只用其中幾萬條或者幾千條的樣本,就已經將theta迭代到最優解了,
對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,
如果迭代10次的話就需要遍歷訓練樣本10次。但是,SGD伴隨的一個問題是噪音較BGD要多,
使得SGD並不是每次迭代都向着整體最優化方向。
優點:訓練速度快;
缺點:準確度下降,並不是全局最優;不易於並行實現。
- 3. 小批量梯度下降法MBGD(Mini-batch Gradient Descent)
有上述的兩種梯度下降法可以看出,其各自均有優缺點,那麼能不能在兩種方法的性能之間取得一個折衷呢?
即,算法的訓練過程比較快,而且也要保證最終參數訓練的準確率,而這正是小批量梯度下降法的初衷。
MBGD在每次更新參數時使用b個樣本(b一般爲10)
【總結】
Batch gradient descent: Use all examples in each iteration;(迭代次數少)
Stochastic gradient descent: Use 1 example in each iteration;(迭代次數較多)
Mini-batch gradient descent: Use b examples in each iteration.