隨機梯度下降與梯度下降的區別?

2022-08-05 14:12:11 字數 2670 閱讀 4093

如果你還不了解梯度下降請參考:知乎@ai醬:梯度下降是個啥?。

假設你已經懂了梯度下降的原理與公式。接下來我會舉個例子來講隨機梯度下降與梯度下降的區別。

假如損失(誤差)函式對引數w的導數是x(w

x−la

bel)

x(wx

−lab

el),然後我們需要更新的引數是w

w,學習率是αα。

現在有一堆資料(x1

,lab

el1)

,(x2

,lab

el2)

,(xi

,lab

eli)

,(xn

,lab

eln)

(x1​

,lab

el1​

),(x

2​,l

abel

2​),

(xi​

,lab

eli​

),(x

n​,l

abel

n​).

那麼梯度下降會這麼更新引數w:w=

w−α∗

∑i=1

n(xi

(wxi

−lab

el))

w=w−

α∗∑i

=1n​

(xi​

(wxi

​−la

bel)

)而隨機梯度下降會這麼做:

遍歷i從1到n

可以看到梯度下降中的導數部分是把所有樣本代入到導數中,然後累加,然後更新引數。而隨機梯度下降則是選乙個樣本計算乙個導數,然後馬上更新引數

下面我用偽**表示下隨機梯度下降與梯度下降之間的區別:

梯度下降

x =[.

..]lable =[.

..]w =

0.666

learning_rate =

0.001

for(迴圈很多次)

隨機梯度下降

x =[.

..]lable =[.

..]w =

0.666

learning_rate =

0.001

for(迴圈很多次)

然後隨機梯度下降有很多變種,比如增加動量來加速收斂。

本來是w=w

+α∗f

′(w)

w=w+

α∗f′

(w),然後加了動量的就變成了:v=

γvv=

γvw=

w+v+

α∗f′

(w)w

=w+v

+α∗f

′(w)

import math  

deff

(x):

return x**3-

2*x -

10+x**

2def

derivative_f

(x):

return3*

(x**2)

+2*-

2

x=0.0

y=0.0

learning_rate =

0.001

gradient=

0 e=

0.00000001

b1 =

0.9

b2 =

0.995

m =0 v =

0 t =

0for i in

range

(10000):

print

('x = , f(x) = ,gradient='

.format

(x,y,gradient))if

(abs

(gradient)

>

0.00001

and(

abs(gradient)

<

0.0001))

:print

("break at "

+str

(i))

break

else

:

gradient = derivative_f(x)

t=t+

1'mt ← β1 · mt−1 + (1 − β1) · gt '

m = b1*m +(1

-b1)

*gradient

'vt ← β2 · vt−1 + (1 − β2) · g2'

v = b2*v +(1

-b2)

*(gradient**2)

'mt ← mt/(1 − βt1)'

mt = m/(1

-(b1**t)

)'vbt ← vt/(1 − βt2)'

vt = v/(1

-(b2**t)

)

x = x- learning_rate * mt/

(math.sqrt(vt)

+e)

y=f(x)

隨機梯度下降與梯度下降的區別?

如果你還不了解梯度下降請參考 知乎 ai醬 梯度下降是個啥?假設你已經懂了梯度下降的原理與公式。接下來我會舉個例子來講隨機梯度下降與梯度下降的區別。假如損失 誤差 函式對引數w的導數是x w x la bel x wx label x wx l abel 然後我們需要更新的引數是w ww,學習率是 ...

梯度下降 隨機梯度下降 批梯度下降

下面的h x 是要擬合的函式,j 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函式h 就出來了。其中m是訓練集的記錄條數,j是引數的個數。梯度下降法流程 1 先對 隨機賦值,可以是乙個全零的向量。2 改變 的值,使j 按梯度下降的方向減少。以上式為例 1 對於我們的...

stanford 梯度 梯度下降,隨機梯度下降

一 梯度gradient 在標量場f中的一點處存在乙個向量g,該向量方向為f在該點處變化率最大的方向,其模也等於這個最大變化率的數值,則向量g稱為標量場f的梯度。在向量微積分中,標量場的梯度是乙個向量場。標量場中某一點上的梯度指向標量場增長最快的方向,梯度的長度是這個最大的變化率。更嚴格的說,從歐氏...