相同點(diǎn)
在GD和SGD中,都會(huì)在每次迭代中更新模型的參數(shù),使得代價(jià)函數(shù)變小。
不同點(diǎn)
GD
在GD中,每次迭代都要用到全部訓(xùn)練數(shù)據(jù)。
假設(shè)線性模型

Paste_Image.png
θ是參數(shù)
代價(jià)函數(shù) :

Paste_Image.png
那么每次GD的更新算法為:

Paste_Image.png
由此算法可知,在對(duì)代價(jià)函數(shù)求偏導(dǎo)時(shí),是需要用到全部的訓(xùn)練數(shù)據(jù)的。
SGD
在SGD中,每次迭代可以只用一個(gè)訓(xùn)練數(shù)據(jù)來更新參數(shù)。
回到GD的更新算法,假設(shè)此時(shí)我們此時(shí)訓(xùn)練數(shù)據(jù)就只有一條(x,y),

Paste_Image.png
所以此時(shí)的更新參數(shù)的算法變?yōu)椋?/p>

Paste_Image.png
此時(shí)更新的算法,只用到了一個(gè)樣本。
其實(shí)具象的理解下,就是來了一條訓(xùn)練數(shù)據(jù),算下此時(shí)根據(jù)模型算出的值和實(shí)際值的差距,如果差距大,那么參數(shù)更新的幅度大,反之則小。
總結(jié)
當(dāng)訓(xùn)練數(shù)據(jù)過大時(shí),用GD可能造成內(nèi)存不夠用,那么就可以用SGD了,SGD其實(shí)可以算作是一種online-learning。另外SGD收斂會(huì)比GD快,但是對(duì)于代價(jià)函數(shù)求最小值還是GD做的比較好,不過SGD也夠用了。