keras中的mini-batch gradient descent (转)
深度學習的優化算法,說白了就是梯度下降。每次的參數更新有兩種方式。
一、
第一種,遍歷全部數據集算一次損失函數,然后算函數對各個參數的梯度,更新梯度。這種方法每更新一次參數都要把數據集里的所有樣本都看一遍,計算量開銷大,計算速度慢,不支持在線學習,這稱為Batch gradient descent,批梯度下降。
二、
另一種,每看一個數據就算一下損失函數,然后求梯度更新參數,這個稱為隨機梯度下降,stochastic gradient descent。這個方法速度比較快,但是收斂性能不太好,可能在最優點附近晃來晃去,hit不到最優點。兩次參數的更新也有可能互相抵消掉,造成目標函數震蕩的比較劇烈。
三、
為了克服兩種方法的缺點,現在一般采用的是一種折中手段,mini-batch gradient decent,小批的梯度下降,這種方法把數據分為若干個批,按批來更新參數,這樣,一個批中的一組數據共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性。另一方面因為批的樣本數與整個數據集相比小了很多,計算量也不是很大。
基本上現在的梯度下降都是基于mini-batch的,所以Keras的模塊中經常會出現batch_size,就是指這個。batch_size指的是一個batch有多少個樣本,而不是由多少個batch。
順便說一句,Keras中用的優化器SGD是stochastic gradient descent的縮寫,但不代表是一個樣本就更新一回,還是基于mini-batch的。
?
------------------------------------------------
來源:
1、keras中文文檔: https://keras-cn.readthedocs.io/en/latest/for_beginners/concepts/
轉載于:https://www.cnblogs.com/hezhiyao/p/8405449.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的keras中的mini-batch gradient descent (转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智能音箱 之 平台方案简介
- 下一篇: c++中的多线程