ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
所謂Mini-batch梯度下降法就是劃分訓練集和測試集為等分的數個子集,比如原來有500W個樣本,將其劃分為5000個baby batch,每個子集中有1000個樣本,然后每次對一個mini-batch進行梯度下降
mini-batch大小 = m:
極限情況下,當mini-batch的單個子集樣本數量和原集合大小一致都為m時,也就是說對原樣本只劃分一個子集,這意味著沒有劃分,此時的梯度下降法為原始的Batch梯度下降
batch方法意味著每次迭代對大量的數據進行處理,這意味著在進行深度神經網絡訓練海量數據的時候需要花費很多很多時間,當然在數據集較小的時候這種方法很精確
mini-batch大小 = 1:
另一種極限情況下,當mini-batch的單個子集樣本數量等于1的時候,也就是說對有m個樣本的原集合劃分m個子集的時候,此時的梯度下降法為隨機梯度下降法
隨機梯度下降法意味著失去了向量化運算帶來的加速效果,因為基本上這就等于每次運算1個樣本的數據。還有一個缺點在于,這種情況下的總體收斂方向是向中心的,但是由于每次訓練某一個樣本,所以會呈現波動的趨勢,最終也不會收斂于極小值點,而是在極小值點附近波動。
所以綜上所述,一般而言最好選擇不大不小的mini-batch的大小,這會帶來較好的學習速率。其原因在于mini-batch的單個子集比如1000個樣本可以進行向量化運算加快單次運算的速度,其次有可能不用等待所有樣本訓練完畢就可以收斂,因為此時單次操作的都是每個子集。
那么,如何選擇一個合適的mini-batch大小呢?
1.如果訓練集較小(通常來說其樣本數量m < 2000)直接使用batch,也就是說mini-batch大小等于m
2.典型的mini-batch大小:考慮到計算機運行方式將其設置為2的次方,如64、128、256、512、1024(較為少見),同時要考慮到mini-batch的大小應當小于CPU/GPU的內存(這在圖片處理等占用大量存儲空間的計算中很重要)
當然,在實際操作中還有一種比mini-batch表現更加高效的優化算法,稍后請參見我的day8.2博文
轉載于:https://www.cnblogs.com/NWNU-LHY/p/11193870.html
總結
以上是生活随笔為你收集整理的ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wchar用wcout输出正常cout是
- 下一篇: Superset配置hive数据源