1. 程式人生 > >累積梯度下降,隨機梯度下降,基於mini-batch 的隨機梯度下降

累積梯度下降,隨機梯度下降,基於mini-batch 的隨機梯度下降

1、批量梯度下降的求解思路如下:

(1)將J( θ)對theta求偏導,得到每個 θ對應的的梯度

   

(2)由於是要最小化風險函式,所以按每個引數theta的梯度負方向,來更新每個theta


(3)從上面公式可以注意到,它得到的是一個全域性最優解,但是每迭代一步,都要用到訓練集所有的資料,如果m很大,那麼可想而知這種方法的迭代速度!!所以,這就引入了另外一種方法,隨機梯度下降。

2、隨機梯度下降的求解思路如下:

(1)上面的風險函式可以寫成如下這種形式,損失函式對應的是訓練集中每個樣本的粒度,而上面批量梯度下降對應的是所有的訓練樣本:


(2)每個樣本的損失函式,對theta求偏導得到對應梯度,來更新theta

(3)隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬),那麼可能只用其中幾萬條或者幾千條的樣本,就已經將theta迭代到最優解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次。但是,SGD伴隨的一個問題是噪音較BGD要多,使得SGD並不是每次迭代都向著整體最優化方向。

3、Mini-batch Gradient Descent

 此演算法是將批量梯度下降法中m替換成mini-batch,在此將mini-bach的size遠小於m的大小

(1)這是介於BSD和SGD之間的一種優化演算法。每次選取一定量的訓練樣本進行迭代。

(2)從公式上似乎可以得出以下分析:速度比BSD快,比SGD慢;精度比BSD低,比SGD高。

4、帶Mini-batch的SGD

(1)選擇n個訓練樣本(n<m,m為總訓練集樣本數)

(2)在這n個樣本中進行n次迭代,每次使用1個樣本

(3)對n次迭代得出的n個gradient進行加權平均再並求和,作為這一次mini-batch下降梯度

(4)不斷在訓練集中重複以上步驟,直到收斂。

內容擷取自部落格:http://blog.csdn.net/losteng/article/details/50848407