如何理解TensorFlow中的batch和minibatch
阿新 • • 發佈:2019-01-28
轉自 http://hp.stuhome.net/index.php/2016/09/20/tensorflow_batch_minibatch/
原文如下:
在剛開始學習使用TF的過程中,我不是很理解什麼是“batch”。也經常有人問,到底minibatch是幹什麼的?
然而這是一個在TF中,或者說很多DL的框架中很常見的詞。
這個解釋我覺得比較貼切也比較容易理解。引用如下:深度學習的優化演算法,說白了就是梯度下降。每次的引數更新有兩種方式。
- 第一種,遍歷全部資料集算一次損失函式,然後算函式對各個引數的梯度,更新梯度。這種方法每更新一次引數都要把資料集裡的所有樣本都看一遍,計算量開銷大,計算速度慢,不支援線上學習,這稱為Batch gradient descent,批梯度下降。
- 另一種,每看一個數據就算一下損失函式,然後求梯度更新引數,這個稱為隨機梯度下降,stochastic gradient descent。這個方法速度比較快,但是收斂效能不太好,可能在最優點附近晃來晃去,hit不到最優點。兩次引數的更新也有可能互相抵消掉,造成目標函式震盪的比較劇烈。
Michael Nielsen在這一章節也有解釋,mini-batch是什麼,為什麼有這個東西。
Deep Learning的這一章節的5.9小節也有解釋,還給出了batch的典型值。
結合上面給出的中文解釋,再看這兩個小節,應該會對batch有所理解。