各种优化方法的比较

122 篇文章 4 订阅
5 篇文章 0 订阅

GD:

每一个数据都要单独算一次梯度,每一个的梯度都会加进去下降,因此速度会很慢,而且容易陷入局部最优解。

BGD:

拿一批数据进来,算这一批的平均梯度,沿着平均梯度来下降。

SGD:

对于一批数据随机选一个数据的梯度来下降。

红色的是BGD,紫色的是SGD,虽然SGD震荡比较厉害,但是速度会比较快,虽然某一次不正确,但是最终还是会到达。

Momentum(使用动量的梯度下降):

在梯度下降的基础之上加了一个动量,模拟物体运动时的惯性,就是积累以前的梯度信息:

因此它的好处就是将少震荡,保持惯性,使得梯度往一个方向走,但缺点是由于累计历史梯度,因此即使到了最优点时也会继续往后走:

NAG(牛顿加速梯度算法):

为了防止由于动量造成的来回震荡,NAG的思想是先计算下一次的梯度,计算完之后再减去这个动量。在前面梯度大而动量小,所以减去之后收敛还是很快,但是后面梯度小而动量大,减去之后收敛就慢下来了。

Adagrad:

是一种自适应学习率算法,它也会累加以前的梯度信息,但作用不是用来更新参数而是用于更新学习率。

RMSProb:

Adagrad虽然能做到自适应学习率,但是它的问题是分母是梯度的平方和,会越来越大,最后导致分母趋向于正无穷,最终的结果就是学习率趋向0,从而无法更新参数。而RMSProb的最大改进就在于此:

AdaDelta:

Adam:

优点:对内存需求较小(适用于大数据集和高纬空间)
不同参数有独自适应学率(通过计算梯度的一阶矩估计和2阶矩估计)
解决梯度稀疏和噪声问题

如果数据是稀疏的就选择自适应方法,它的好处是收敛快,如果需要更稳定就选择GD,但是它很容易掉入鞍点。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值