深度学习——sgd等优化方法比较

SGD

SGD(stochastic gradient descent)随机梯度下降,对于训练数据集,我们首先将其分成n个batch,每个batch包含m个样本。我们每次更新都利用一个batch的数据,而非整个训练集。

优点是:当训练数据太多时,利用整个数据集更新往往时间上不显示。batch的方法可以减少机器的压力,并且可以更快地收敛;当训练集有很多冗余时(类似的样本出现多次),batch方法收敛更快。

Momentum

momentum即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力。

Nesterov Momentum

这是对传统momentum方法的一项改进。

首先,按照原来的更新方向更新一步,然后在该位置计算梯度值,用这个梯度值修正最终的更新方向。

Adagrad

Adagrad自适应地为各个参数分配不同学习率的算法。对于每个参数,随着其更新的总距离增多,其学习速率也随之变慢。

Adadelta

Adadelta是基于Adagrad算法,为了完美解决Adagrad算法学习率是单调递减、手工设置一个全局初始学习率等问题产生。

几种方法比较

Karpathy做了一个这几个方法在MNIST上性能的比较,其结论是: 

1、adagrad相比于sgd和momentum更加稳定,即不需要怎么调参。

2、精调的sgd和momentum系列方法无论是收敛速度还是precision都比adagrad要好一些

3、在精调参数下,一般Nesterov优于momentum优于sgd。

4、adagrad一方面不用怎么调参,另一方面其性能稳定优于其他方法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值