机器学习与模式识别程序员深度学习最好入门材料

GD(梯度下降)和SGD(随机梯度下降)

2016-04-26  本文已影响10359人  JxKing

相同点

在GD和SGD中,都会在每次迭代中更新模型的参数,使得代价函数变小。

不同点

GD

在GD中,每次迭代都要用到全部训练数据。
假设线性模型

Paste_Image.png

θ是参数

代价函数 :

Paste_Image.png

那么每次GD的更新算法为:

Paste_Image.png

由此算法可知,在对代价函数求偏导时,是需要用到全部的训练数据的。

SGD

在SGD中,每次迭代可以只用一个训练数据来更新参数。
回到GD的更新算法,假设此时我们此时训练数据就只有一条(x,y),

Paste_Image.png

所以此时的更新参数的算法变为:

Paste_Image.png

此时更新的算法,只用到了一个样本。
其实具象的理解下,就是来了一条训练数据,算下此时根据模型算出的值和实际值的差距,如果差距大,那么参数更新的幅度大,反之则小。

总结

当训练数据过大时,用GD可能造成内存不够用,那么就可以用SGD了,SGD其实可以算作是一种online-learning。另外SGD收敛会比GD快,但是对于代价函数求最小值还是GD做的比较好,不过SGD也够用了。

上一篇下一篇

猜你喜欢

热点阅读