神經網絡中Batch Size的理解


直觀的理解:
Batch Size定義:一次訓練所選取的樣本數。
Batch Size的大小影響模型的優化程度和速度。同時其直接影響到GPU內存的使用情況,假如你GPU內存不大,該數值最好設置小一點。

為什么要提出Batch Size?
在沒有使用Batch Size之前,這意味着網絡在訓練時,是一次把所有的數據(整個數據庫)輸入網絡中,然后計算它們的梯度進行反向傳播,由於在計算梯度時使用了整個數據庫,所以計算得到的梯度方向更為准確。但在這情況下,計算得到不同梯度值差別巨大,難以使用一個全局的學習率,所以這時一般使用Rprop這種基於梯度符號的訓練算法,單獨進行梯度更新。
在小樣本數的數據庫中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的數據庫,一次性把所有數據輸進網絡,肯定會引起內存的爆炸。所以就提出Batch Size的概念。

Batch Size設置合適時的優點:
1、通過並行化提高內存的利用率。就是盡量讓你的GPU滿載運行,提高訓練速度。
2、單個epoch的迭代次數減少了,參數的調整也慢了,假如要達到相同的識別精度,需要更多的epoch。
3、適當Batch Size使得梯度下降方向更加准確。

Batch Size從小到大的變化對網絡影響
1、沒有Batch Size,梯度准確,只適用於小樣本數據庫
2、Batch Size=1,梯度變來變去,非常不准確,網絡很難收斂。
3、Batch Size增大,梯度變准確,
4、Batch Size增大,梯度已經非常准確,再增加Batch Size也沒有用

注意:Batch Size增大了,要到達相同的准確度,必須要增大epoch。

GD(Gradient Descent):就是沒有利用Batch Size,用基於整個數據庫得到梯度,梯度准確,但數據量大時,計算非常耗時,同時神經網絡常是非凸的,網絡最終可能收斂到初始點附近的局部最優點。

SGD(Stochastic Gradient Descent):就是Batch Size=1,每次計算一個樣本,梯度不准確,所以學習率要降低。

mini-batch SGD:就是選着合適Batch Size的SGD算法,mini-batch利用噪聲梯度,一定程度上緩解了GD算法直接掉進初始點附近的局部最優值。同時梯度准確了,學習率要加大。
版權聲明:本文為CSDN博主「Star_ACE」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_34886403/article/details/82558399


免責聲明!

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



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