批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
批量梯度下降(BGD)、隨機梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
</h1><div class="clear"></div><div class="postBody">
??梯度下降法作為機器學習中較常使用的優化算法,其有著三種不同的形式:批量梯度下降(Batch Gradient Descent)、隨機梯度下降(Stochastic Gradient Descent)以及小批量梯度下降(Mini-Batch Gradient Descent)。其中小批量梯度下降法也常用在深度學習中進行模型的訓練。接下來,我們將對這三種不同的梯度下降法進行理解。
??為了便于理解,這里我們將使用只含有一個特征的線性回歸來展開。此時線性回歸的假設函數為:
??????(for j =0,1)
????}
??}
??優點:
??(1)通過矩陣運算,每次在一個batch上優化神經網絡參數并不會比單個數據慢太多。
??(2)每次使用一個batch可以大大減小收斂所需要的迭代次數,同時可以使收斂到的結果更加接近梯度下降的效果。(比如上例中的30W,設置batch_size=100時,需要迭代3000次,遠小于SGD的30W次)
??(3)可實現并行化。
??缺點:
??(1)batch_size的不當選擇可能會帶來一些問題。
??batcha_size的選擇帶來的影響:
??(1)在合理地范圍內,增大batch_size的好處:
????a. 內存利用率提高了,大矩陣乘法的并行化效率提高。
????b. 跑完一次 epoch(全數據集)所需的迭代次數減少,對于相同數據量的處理速度進一步加快。
????c. 在一定范圍內,一般來說 Batch_Size 越大,其確定的下降方向越準,引起訓練震蕩越小。
??(2)盲目增大batch_size的壞處:
????a. 內存利用率提高了,但是內存容量可能撐不住了。
????b. 跑完一次 epoch(全數據集)所需的迭代次數減少,要想達到相同的精度,其所花費的時間大大增加了,從而對參數的修正也就顯得更加緩慢。
????c. Batch_Size 增大到一定程度,其確定的下降方向已經基本不再變化。
??下圖顯示了三種梯度下降算法的收斂過程:
引用及參考:
[1] https://www.cnblogs.com/maybe2030/p/5089753.html
[2] https://zhuanlan.zhihu.com/p/37714263
[3] https://zhuanlan.zhihu.com/p/30891055
[4] https://www.zhihu.com/question/40892922/answer/231600231
寫在最后:本文參考以上資料進行整合與總結,文章中可能出現理解不當的地方,若有所見解或異議可在下方評論,謝謝!
若需轉載請注明:https://www.cnblogs.com/lliuye/p/9451903.html
<div id="blog_post_info">
好文要頂 關注我 收藏該文
LLLiuye關注 - 8
粉絲 - 54 +加關注 18 0
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/lliuye/p/9449190.html" class="p_n_p_prefix">? </a> 上一篇: <a href="https://www.cnblogs.com/lliuye/p/9449190.html" title="發布于 2018-08-09 15:23">Ubuntu下tensorboard的使用</a>
<br>
<a href="https://www.cnblogs.com/lliuye/p/9471231.html" class="p_n_p_prefix">? </a> 下一篇: <a href="https://www.cnblogs.com/lliuye/p/9471231.html" title="發布于 2018-08-13 21:49">學習率(Learning rate)的理解以及如何調整學習率</a>
posted @ 2018-08-10 11:57? LLLiuye? 閱讀(41513)? 評論(17)? 編輯? 收藏

總結
以上是生活随笔為你收集整理的批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奇异值分解与最小二乘问题 线性回归
- 下一篇: 路遥知马力——Momentum动量梯度