天天看點

機器學習—梯度下降—批量梯度下降法、随機梯度下降法、小批量梯度下降法

一、批量梯度下降法(Batch Gradient Descent,BGD)

有N個樣本,求梯度的時候就用了N個樣本的梯度資料

優點:準确 缺點:速度慢

二、随機梯度下降法(Stochastic Gradient Descent,SGD)

和批量梯度下降法原理類似,差別在于求梯度時沒有用所有的N個樣本的資料,而是僅僅選取一個樣本來求梯度

優點:速度快 缺點:準确度低

三、小批量梯度下降法(Mini-batch Gradient Descent)

批量梯度下降法和随機梯度下降法的折衷,比如N=100

spark中使用的此方法

四、小結

1、

Adagrad、RMSprop、Adam等算法都是建立在偏導數之上的,他們并不關心上式中N的取值,N取1,取100,還是取N,Adagrad、RMSprop、Adam等算法都可以運作。

而随機梯度下降法(Stochastic Gradient Descent,SGD),批量梯度下降法(Batch Gradient Descent,BGD),小批量梯度下降法(Mini-batch Gradient Descent,Mini-batchGD)則是研究這裡的N的大小的。

如果N=1,此時為SGD,計算代價函數梯度的時候隻考慮一個樣本;

如果N=樣本容量,此時為BGD,計算代價函數梯度的時候考慮全部樣本;

如果N=m,1<m<N,此時為Mini-batchGD,計算代價函數梯度的時候考慮一小批樣本。

2、

SGD計算根據随機一個樣本構造出來的代價函數的梯度,這與計算根據全部樣本構造出來的代價函數的梯度肯定有偏差,也許是一個不好的梯度方向,下降時候并不沿着最有的方向下降,但是優點是可以快速的計算一個近似梯度,因為計算量縮減到原來的1/N。

BGD計算根據全部樣本的構造出來的代價函數的梯度,方向肯定是沿着目前最優的下降方向,但是計算代價較高,當資料集較大時,相當耗時。

Mini-batchGD是前兩者的折中。

大佬的詳細了解!!!

繼續閱讀