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

作者: JxKing | 来源:发表于2016-04-26 19:04 被阅读10359次

    相同点

    在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也够用了。

    相关文章

      网友评论

        本文标题:GD(梯度下降)和SGD(随机梯度下降)

        本文链接:https://www.haomeiwen.com/subject/ypaqrttx.html