【重磅】批量梯度下降、隨機梯度下降、小批量梯度下降
梯度下降有三種
1. 批量梯度下降(Batch Gradient Descent,BGD)
2. 隨機梯度下降(Gradient Descent,SGD)
3. 小批量梯度下降(Mini-Batch Gradient Descent,MBGD)
不同點在於損失函式使用的樣本量的不同,其根本流程是一毛一樣的啊!
各有優缺點。
方法 | 說明 | 優點 | 缺點 | 適用例項 |
---|---|---|---|---|
批量梯度下降 BGD | 最原始方法,每次跟新引數時,使用所有樣本,即損失函式由所有樣本構成。 |
1. 全域性最優解; 2. 易於並行實現。 |
1. 樣本多時,訓練時間慢 | 樣本量比較小 |
隨機梯度下降 SGD | 損失函式使用一個樣本,噪聲比BGD要多 | 1. 訓練速度快 |
1. 準確度降低,經常非全域性最優 2. 不易於並行實現 |
樣本量比較大,或者線上學習演算法 |
小批量梯度下降 MBGD | 損失函式使用一部分樣本 | 綜合BGD、SGD | 綜合BGD、SGD | 一般情況 |
傳統普通梯度下降
或: 批量梯度下降(Batch Gradient Descent,BGD)
根據李航《統計學習方法》改編
梯度下降為最優化演算法,顧名思義,優化,需要迭代才能找出最優值。
這裡未知,所以梯度下降整個過程 其實就是求
輸入:損失函式, 為向量,,n個特徵
輸出:的最優值,用表示,
設 損失函式為
說明:一般為平方損失、log對數損失等 能求導的 損失函式,0-1損失等不能求導則不能用梯度下降
(圖片)
說明:
1. k=0,是為了方便,有需要可以輸出迭代次數,這樣可以比較不同優化演算法中的速率。
2. 也是自己為了方便設定的,當然也可以設別的初值,或者設定不同初值重複多次試驗,對比最優值結果。不同初值可能會得出不同的優化結果,這是由於進入的區域性最優值的情況,但是!如果損失函式為凸函式,那麼最優值只有一個!只有一個!可以放心設定初值,只是時間不同而已,多迭代幾次便是了。
3. 是一個大於0,但非常接近0的一個數,比如0.000001,用來做最後的參考,比如兩個函式值的差值小於,那麼就可以判定兩個函式值相等,那麼基本收斂了,數學分析的收斂知識點就這玩意兒。當然根據實際需求,,也是可以的。
4. 在第(1)步 求梯度中,需要注意的是,這裡需要求n個方程,因為有n個引數(或者說係數),目前我的理解是 先對n個求偏導數,然後在睇(4)步迭代時,同時對n個引數進行更新。(如果我的理解不對請和我聯絡,我將虛心改正。)
5. 第(3)步,求步長,可以理解為遍歷所有正數,在一定的方向(梯度即方向),求出 使得損失函式下降最多時 的。
6. 也有人不求,直接自己設定,比如等等,李航大佬求出來也是蠻6的,這得求多久。或者其實大部分都是自己設定然後看效果罷了。反正就是整出個 步長(也稱學習率)。
7. 梯度下降中,損失函式不同,梯度(導數)就不同。
隨機梯度下降
在傳統的普通梯度下降中,我們可以從
參考:
李航《統計學習方法》