深度學習基礎——Epoch、Iteration、Batchsize


 

  梯度下降是一個在機器學習中用於尋找較佳結果(曲線的最小值)的迭代優化算法。梯度的含義是斜率或者斜坡的傾斜度。下降的含義是代價函數的下降。算法是迭代的,意思是需要多次使用算法獲取結果,以得到最優化結果。梯度下降的迭代性質能使欠擬合演變成獲得對數據的較佳擬合。

  梯度下降中有一個稱為學習率的參量。剛開始學習率較大,因此下降步長更大。隨着點的下降,學習率變得越來越小,從而下降步長也變小。同時,代價函數也在減小,或者說代價在減小,有時候也稱為損失函數或者損失,兩者是一樣的。(損失/代價的減小是一個概念)。只有在數據很龐大的時候,我們才需要使用epochs,batchsize,iteration。在這種情況下,一次性將數據輸入計算機是不可能的。因此,為了解決這個問題,我們需要把數據分成小塊,一塊一塊的傳遞給計算機,在每一步的末端更新神經網絡的權重,擬合給定的數據。

 

batchsize:批量大小(批量尺寸)。

  即,批量大小將決定我們一次訓練的樣本數目。batchsize將影響到模型的優化程度和速度。其作用主要在於:batchsize的正確選擇是為了在內存效率和內存容量之間尋找最佳平衡。相對於正常數據集,如果Batch_Size過小,訓練數據就會非常難收斂,從而導致underfitting。增大Batch_Size,相對處理速度加快。增大Batch_Size,所需內存容量增加(epoch的次數需要增加以達到最好的結果)這里我們發現上面兩個矛盾的問題,因為當epoch增加以后同樣也會導致耗時增加從而速度下降。因此我們需要尋找最好的Batch_Size。

  適當的增加Batch_Size:
  1.通過並行化提高內存利用率。

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

  3.適當的增加Batch_Size,梯度下降方向准確度增加,訓練震動的幅度減小。

 

iteration:迭代。

  迭代是重復反饋的動作,神經網絡中我們希望通過迭代進行多次的訓練以達到所需的目標或結果。每一次迭代得到的結果都會被作為下一次迭代的初始值。

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

 

epoch:時期。

  一個時期=所有訓練樣本的一個正向傳遞和一個反向傳遞。

 

  樣本數據集有 60000 張圖片作為訓練數據,10000 張圖片作為測試數據。假設現在選擇  Batch Size = 100 對模型進行訓練。迭代30000次。

  • 每個 Epoch 要訓練的圖片數量:60000(訓練集上的所有圖像)
  • 訓練集具有的 Batch 個數: 60000/100=600
  • 每個 Epoch 需要完成的 Batch 個數: 600
  • 每個 Epoch 具有的 Iteration 個數: 600(完成一個Batch訓練,相當於參數迭代一次)
  • 每個 Epoch 中發生模型權重更新的次數:600
  • 訓練 10 個Epoch后,模型權重更新的次數: 600*10=6000
  • 不同Epoch的訓練,其實用的是同一個訓練集的數據。第1個Epoch和第10個Epoch雖然用的都是訓練集的60000圖片,但是對模型的權重更新值卻是完全不同的。因為不同Epoch的模型處於代價函數空間上的不同位置,模型的訓練代越靠后,越接近谷底,其代價越小。
  • 總共完成30000次迭代,相當於完成了 30000/600=50 個Epoch

 


免責聲明!

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



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