BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #12951同步于 2014/4/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖

关于梯度下降算法的一点细节

a27400
2014/4/14镜像同步8 回复
比如说我有个目标函数http://latex.codecogs.com/svg.latex?J(\theta),m个样本http://latex.codecogs.com/svg.latex?x_{1},y_{1},...,x_{m},y_{m} 然后已经算出来: http://latex.codecogs.com/svg.latex?\frac{\partial}{\partial\theta}J(\theta)=\frac{1}{m} \sum f(x_{i},y_{i}) 其中f为通过J(theta)求导出来的某函数。 那么我对theta更新的时候,是来一个样本更新一次,还是对整个样本集进行累加然后对theta更新一次?有什么区别? 求指点0 0
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
chentingpc机器人#1 · 2014/4/15
一个样本更新一次 -- 一种SGD,还是对整个样本集进行累加然后对theta更新一次 -- GD. GD求出来的才是J函数在完整数据集上的真实导数,SGD只是一种估计,并不是准确的导数。但是很多情况下SGD也能够很好的模拟GD,收敛到类似的点,而SGD比GD会快不少。
a27400机器人#2 · 2014/4/16
【 在 chentingpc 的大作中提到: 】 : 一个样本更新一次 -- 一种SGD,还是对整个样本集进行累加然后对theta更新一次 -- GD. GD求出来的才是J函数在完整数据集上的真实导数,SGD只是一种估计,并不是准确的导数。但是很多情况下SGD也能够很好的模拟GD,收敛到类似的点,而SGD比GD会快不少。 学习了!十分感谢
phantomlyc机器人#3 · 2014/4/16
呀哈。。。刚看完。。。更新的时候只用一个随机的样本叫随机梯度下降。。。肯定速度会快不少。。。使用整个训练集去更新的话就是普通的梯度下降,这样理论上比较准确。。。 http://hi.baidu.com/dream_eagle/item/320c3439f9f246362e20c422
a27400机器人#4 · 2014/4/16
【 在 phantomlyc 的大作中提到: 】 : 呀哈。。。刚看完。。。更新的时候只用一个随机的样本叫随机梯度下降。。。肯定速度会快不少。。。使用整个训练集去更新的话就是普通的梯度下降,这样理论上比较准确。。。 : http://hi.baidu.com/dream_eagle/item/320c3439f9f246362e20c422 呀哈。。。我今天下午也看了下……发现自己写错了= =
w30215机器人#5 · 2014/4/17
batch gradient descend 和 sgd
cain机器人#6 · 2014/4/17
请问这两种梯度下降法估计出来的参数哪个最后的准确度会更高呢? 【 在 chentingpc 的大作中提到: 】 : 一个样本更新一次 -- 一种SGD,还是对整个样本集进行累加然后对theta更新一次 -- GD. GD求出来的才是J函数在完整数据集上的真实导数,SGD只是一种估计,并不是准确的导数。但是很多情况下SGD也能够很好的模拟GD,收敛到类似的点,而SGD比GD会快不少。
chentingpc机器人#7 · 2014/4/19
这个得根据具体的问题和具体的SGD算法(SGD有很多具体的算法)来考虑。我觉得一般GD会更好些,但是很慢,如果用GD,可能有限时间里面出来的结果就比SGD差。对于某些特定的问题,有人做出很牛的SGD算法,很可能又快又好,可以搜一些文献看看。 【 在 cain 的大作中提到: 】 : 请问这两种梯度下降法估计出来的参数哪个最后的准确度会更高呢? :
GentlyGuitar机器人#8 · 2014/5/3
【 在 a27400 的大作中提到: 】 : 比如说我有个目标函数,m个样本 : 然后已经算出来: : : ................... Andrew Ng还专门说过这两种的区别~来一个样本算一次的话,虽然快,但是不一定到得了局部极小值,可能会一直在周边打转