BGD SGD MBGD 梯度下降演算法

2021-08-17 03:05:33 字數 1175 閱讀 4754

bgd(batch gradient descent)

批量梯度下降法是

梯度下降法最原始的形式,它的具體思路是在

更新每一引數時都使用所有的樣本來進行更新

它得到的是乙個全域性最優解,批量梯度下降法在更新每乙個引數時,即每迭代一步,

都要用到訓練集所有的資料,訓練過程會隨著樣本數量的加大而變得異常的緩慢。

優點:全域性最優解;易於並行實現;

缺點:當樣本數目很多時,訓練過程會很慢。

從迭代的次數上來看,bgd迭代的次數相對較少。其迭代的收斂曲線示意圖可以表示如下:

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

優點:訓練速度快;

缺點:準確度下降,並不是全域性最優;不易於並行實現。

從迭代的次數上來看,sgd迭代的次數較多,在解空間的搜尋過程看起來很盲目。其迭代的收斂曲線示意圖可以表示如下:

小批量梯度下降法介於bgd和sgd之間的一種優化演算法。每次選取一定量的訓練樣本進行迭代。速度比bgd快,比sgd慢,精度比bgd低,比sgd高,演算法過程如下:

(1)選擇n個訓練樣本(n

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

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

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

參考部落格

梯度下降 BGD,SGD,MBGD

梯度下降 引入 當我們得到乙個目標函式之後要對其進行求解。常規套路就是,交給機器一堆資料,並告訴他什麼樣的學習方式 目標函式 然後讓他朝著這個方向去做。優化 需要一步一步的完成迭代。目標函式 我們的目標就是找到 0和 1,是的目標函式的值盡可能的小。如何找到目標函式的最小值 1.找到當前最適合的方向...

gradient descent 梯度下降演算法

今天給大家介紹乙個machine learning中非常基礎又非常重要的演算法 gradient descent 梯度下降演算法。其實在寫這篇文章之前,我前面的文章中就有提到gradient descent,它實在是太 氾濫 了,幾乎到處都能看到它的身影。那麼,它到底是什麼?能幹什麼?它是一種優化演...

SparkMLlib SGD隨機梯度下降演算法

package mllib import org.apache.log4j.import org.apache.spark.import scala.collection.mutable.hashmap 隨機梯度下降演算法 created by 汪本成 on 2016 8 5.object sgd ...