批量梯度下降,隨機梯度下降,小批量梯度下降

2022-08-21 18:33:09 字數 1411 閱讀 8992

在機器學習領域中,梯度下降的方式有三種,分別是:批量梯度下降法bgd、隨機梯度下降法sgd、小批量梯度下降法mbgd,並且都有不同的優缺點。

下面我們以線性回歸演算法(也可以是別的演算法,只是損失函式(目標函式)不同而已,它們的導數的不同,做法是一模一樣的)為例子來對三種梯度下降法進行比較。

假設 特徵 和 結果 都滿足線性。即不大於一次方。這個是針對 收集的資料而言。

收集的資料中,每乙個分量,就可以看做乙個特徵資料。每個特徵至少對應乙個未知的引數。這樣就形成了乙個線性模型函式,向量表示形式:

這個就是乙個組合問題,已知一些資料,如何求裡面的未知引數,給出乙個最優解。 乙個線性矩陣方程,直接求解,很可能無法直接求解。有唯一解的資料集,微乎其微。

基本上都是解不存在的超定方程組。因此,需要退一步,將引數求解問題,轉化為求最小誤差問題,求出乙個最接近的解,這就是乙個鬆弛求解。

求乙個最接近解,直觀上,就能想到,誤差最小的表達形式。仍然是乙個含未知引數的線性模型,一堆觀測資料,其模型與資料的誤差最小的形式,模型與資料差的平方和最小:

2. 引數更新

對目標函式進行求導,導數如下:

利用梯度下降跟新引數,引數更新方式如下:

(1)3. 批量梯度下降法(batch gradient descent,簡稱bgd)是梯度下降法最原始的形式,它的具體思路是在更新每一引數時都使用所有的樣本來進行更新,也就是方程(1)中的m表示樣本的所有個數。

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

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

4. 隨機梯度下降法:它的具體思路是在更新每一引數時都使用乙個樣本來進行更新,也就是方程(1)中的m等於1。每一次跟新引數都用乙個樣本,更新很多次。如果樣本量很大的情況(例如幾十萬),那麼可能只用其中幾萬條或者幾千條的樣本,就已經將theta迭代到最優解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次,這種跟新方式計算複雜度太高。

但是,sgd伴隨的乙個問題是噪音較bgd要多,使得sgd並不是每次迭代都向著整體最優化方向。

優點:訓練速度快;

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

從迭代的次數上來看,sgd迭代的次數較多,在解空間的搜尋過程看起來很盲目。

5.小批量梯度下降法(mini-batch gradient descent,簡稱mbgd):它的具體思路是在更新每一引數時都使用一部分樣本來進行更新,也就是方程(1)中的m的值大於1小於所有樣本的數量。為了克服上面兩種方法的缺點,又同時兼顧兩種方法的有點。

6.三種方法使用的情況:

小批量梯度下降演算法 python

coding utf 8 created on tue mar 13 20 49 03 2018 author import numpy as np from scipy import stats import matplotlib.pyplot as plt 產生訓練資料,生成模型為2 x 5 r...

線性回歸 小批量隨機梯度下降演算法

先貼 import torch import numpy as np import random trainsetshape 100,2 true w torch.tensor 2.00 3.4 dtype torch.float64 true b 4.2def data iter features...

小批量梯度下降演算法步驟 優化演算法之梯度下降演算法

在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。1.批量梯度下降法bgd 現在下面以lr演算法為例對這三種演算法從原理到 進行講解 由lr演算法可知lr演算法的損失函式為 損失函式j 最小值時的 則...