11迴歸演算法-BGD、SGD、MBGD梯度下降
=== 名詞解釋 ===
BGD: 批量 – 梯度下降演算法
SGD: 隨機 – 梯度下降演算法
__MBGD:__小批量 – 梯度下降演算法
=== 批量梯度下降演算法 BGD ===
在上一章10 迴歸演算法 – 梯度下降中講述的梯度下降演算法是針對某一個樣本進行的。實際上,我們擁有m個樣本,針對每一個樣本我們都應該有一個對應的梯度下降。
所以引入可批量梯度下降演算法(BGD),這是一個$color{red}{求解相對精確}$ ,但是計算時$color{red}{迭代速度相對比較慢}$的演算法。
原因如下:
如上公式所示,批量梯度演算法BGD,是對__所有樣本的梯度__進行了__求和__的操作。
公式化簡後:
=== 隨機梯度下降演算法 SGD===
隨機梯度下降演算法:不再考慮樣本梯度的求和了,而是來一個新的樣本,我就更新一次θ。
如果有m條資料,我就更新m次。
但是在批量梯度下降演算法 BGD中,對於θ我只更新了1次 (全部樣本都計算完後求和)
所以在隨機梯度下降演算法中,迭代更新的速度會更快。
實際生產當中,我們選擇隨機梯度下降的場景會更多。
畢竟,如果我有上百萬條資料,如果一次性全遍歷完後再得到θ的值,這樣太慢了。
總結一下BGD和SGD的區別:
1、SGD速度比BGD快(迭代次數少)
2、SGD在某些情況下(全域性存在多個相對最優解,或 J(θ)是一個二次以上的函式 ),SGD有可能跳出某些小的區域性最優解,所以不會比BGD壞。
3、BGD一定能夠得到一個區域性最優解(線上性迴歸模型中一定是一個全域性最優解),SGD由於隨機性的存在,可能導致最終結果比BGD差。
優先選擇:SGD
=== 小批量梯度下降法 MBGD===
如果既需要保證演算法訓練速度,又需要保證引數訓練的準確率,使用MBGD。
MBGD中不是每拿一個樣本就更新一次梯度,而是拿b個樣本(一般取10個)的平均梯度作為更新方向。
MBGD是BGD和SGD的結合:
隨機抽若干個樣本,求和。再不斷更新引數。
PS 回答幾個問題:
1、學習率(步長)的選擇:
學習率都是人為設定的,或者可以理解為不斷得嘗試。根據迭代速度和結果進行不斷得調整。
學習率沒有一個明確的設定範圍,一般可以選擇1左右的數字進行嘗試,如果迭代的速度還可以,且結果能夠獲得即可。
2、一般生產中,在深度學習中,對於損失函式的求解我們會自己去寫。
但在機器學習中我們可以直接使用sklearn的LinearRegression進行最小二乘來求解θ:
$θ=(X^TX)$-1$X^TY$
相關文章
- 三種梯度下降演算法的區別(BGD, SGD, MBGD)梯度演算法
- 邏輯迴歸:損失函式與梯度下降邏輯迴歸函式梯度
- 使用梯度下降法實現多項式迴歸梯度
- ML-梯度下降程式碼-線性迴歸為例梯度
- 機器學習--線性迴歸--梯度下降的實現機器學習梯度
- 梯度下降演算法梯度演算法
- 什麼是機器學習迴歸演算法?【線性迴歸、正規方程、梯度下降、正則化、欠擬合和過擬合、嶺迴歸】機器學習演算法梯度
- numpy梯度回傳線性迴歸梯度
- 梯度下降、過擬合和歸一化梯度
- 梯度下降演算法 Gradient Descent梯度演算法
- 梯度下降法實現最簡單線性迴歸問題python實現梯度Python
- 梯度下降優化演算法概述梯度優化演算法
- 機器學習(二):理解線性迴歸與梯度下降並做簡單預測機器學習梯度
- 梯度下降梯度
- 機器學習——梯度下降演算法機器學習梯度演算法
- 003.01 梯度下降梯度
- 對梯度下降演算法的理解和實現梯度演算法
- 梯度下降與excel梯度Excel
- 實現梯度下降梯度
- 邏輯迴歸演算法邏輯迴歸演算法
- 線性迴歸演算法演算法
- 機器學習筆記(1): 梯度下降演算法機器學習筆記梯度演算法
- 1. 梯度下降法梯度
- 深度學習-Tensorflow2.2-梯度下降演算法概述-03深度學習梯度演算法
- 03 迴歸演算法 - 線性迴歸求解 θ(最小二乘求解)演算法
- 2.3 邏輯迴歸演算法邏輯迴歸演算法
- 什麼是梯度下降法?梯度
- 【機器學習】梯度下降機器學習梯度
- 簡明線性迴歸演算法演算法
- 線性迴歸——lasso迴歸和嶺迴歸(ridge regression)
- 梯度下降求解最小二乘梯度
- 機器學習之梯度下降機器學習梯度
- 【機器學習】梯度下降 II機器學習梯度
- 有監督學習——梯度下降梯度
- 梯度下降法原理及小結梯度
- 迴歸模型的演算法效能評價模型演算法
- 實驗11-使用keras完成邏輯迴歸Keras邏輯迴歸
- 迴歸