机器学习模型优化器比较
作者头像
  • 向婷婷
  • 2019-12-05 16:39:50 1

神经网络在训练过程中,每一时刻都会有一定的损失或误差,这些数据是通过成本函数(也称为损失函数)计算得出的。该函数显示了网络参数基于训练或验证数据的“错误”程度。理想情况下,我们希望损失尽可能低。然而,成本函数通常是非凸的,这意味着它们不仅有一个最小值,而是有许多局部最小值。

为了减少神经网络的损失,通常会使用一种叫做反向传播的算法。反向传播算法计算神经网络中参数的成本函数导数,从而找到更新参数的方向,以提高模型性能。这个方向被称为神经网络的梯度。

在使用梯度更新模型之前,通常会将梯度乘以一个学习率,以生成实际的更新。如果学习率过高,可能会错过最小值,导致模型无法达到最佳效果。而学习率过低,则会导致优化过程非常缓慢,甚至可能陷入局部最小值。

许多优化器会自动计算学习率,一个好的优化器能够快速训练机器学习模型,同时避免陷入局部最小值。

常用优化器

SGD(随机梯度下降)

SGD是最简单的优化算法之一。在整个训练过程中,它使用一个固定的学习率。尽管学习率是固定的,但在接近最优值时,梯度会逐渐减小。

AdaGrad

AdaGrad与SGD类似,但有一个关键区别:AdaGrad使用自适应梯度,为神经网络中的每个参数设置不同的学习率。由于不同参数的重要性不同,这样更新它们是合理的。

AdaGrad根据参数的更新频率调整学习率。频繁更新的参数将以较低的学习率仔细训练,而不常更新的参数则以较高的学习率训练,以提高效率。

RMSProp

AdaGrad的一个问题是学习率会在几次批次后降低,导致训练时间延长。RMSProp通过引入指数衰减的学习率来解决这个问题。

RMSProp和AdaGrad都使用动量来更新参数。这可以类比为将一个小球沿着成本函数图滚下山坡,小球在某个方向上运动的时间越长,速度就越快,赋予小球更多的动量。

Adam

Adam结合了AdaGrad和RMSProp的优点,不仅使用过去的学习率,还利用过去梯度来加速学习过程。

性能对比

通过一系列实验,我们发现优化器在不同数据集上的表现有所不同。例如,在较小的数据集(如MNIST)上,SGD的表现较差,而RMSProp和Adam的表现几乎相同。而在较大的数据集(如CIFAR10)上,SGD的表现波动较大,AdaGrad的学习率在几个epoch后会增加,而Adam和RMSProp的表现仍然非常相似。

结论

综上所述,在启动新的深度学习项目时,建议优先考虑使用Adam或RMSProp作为优化器。在所有测试的任务中,Adam都取得了最高的训练和验证准确性。

    本文来源:图灵汇
责任编辑: : 向婷婷
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
模型优化机器比较学习
    下一篇