常用优化器算法归纳介绍

   www.gaoxiao88.net

优化器是神经网络训练过程中,进行梯度下降以寻找最优解的优化方法。不同方法通过不同方式(如附加动量项,学习率自适应变化等)侧重于解决不同的问题,但最终大都是为了加快训练速度。

这里就介绍几种常见的优化器,包括其原理、数学公式、核心思想及其性能;

核心思想: 即针对每次输入的训练数据,计算输出预测与真值的Loss的梯度;

从表达式来看,网络中参数的更新,是不断向着最小化Loss函数的方向移动的:

优点:
简单易懂,即对于相应的最优解(这里认为是Loss的最小函数),每次变量更新都是沿着局部梯度下降最快的方向,从而最小化损失函数。

缺点:

不同于标准梯度下降法(Gradient Descent)一次计算所有数据样本的Loss并计算相应的梯度,批量梯度下降法(BGD, Batch Gradient Descent)每次只取一个小批次的数据及其真实标签进行训练,称这个批次为mini-batch;

优点:

缺点:
随机梯度下降法的 batch size 选择不当可能导致模型难以收敛;由于这种方法是在一次更新中,就对整个数据集计算梯度,所以计算起来非常慢,遇到很大量的数据集也会非常棘手,而且不能投入新数据实时更新模型。

我们会事先定义一个迭代次数 epoch,首先计算梯度向量 params_grad,然后沿着梯度的方向更新参数 params,learning rate 决定了我们每一步迈多大。

Batch gradient descent 对于凸函数可以收敛到全局极小值,对于非凸函数可以收敛到局部极小值。

和 BGD 的一次用所有数据计算梯度相比,SGD 每次更新时对每个样本进行梯度更新,对于很大的数据集来说,可能会有相似的样本,这样 BGD 在计算梯度时会出现冗余,而 SGD 一次只进行一次更新,就没有冗余,而且比较快,并且可以新增样本。

即训练时,每次只从一批训练样本中随机选取一个样本进行梯度下降;对随机梯度下降来说,只需要一次关注一个训练样本,一点点把参数朝着全局最小值的方向进行修改了。

整体数据集是个循环,其中对每个样本进行一次参数更新

缺点:

梯度下降速度比较慢,而且每次梯度更新时往往只专注与局部最优点,而不会恰好指向全局最优点;

单样本梯度更新时会引入许多噪声(跟训练目标无关的特征也会被归为该样本分类的特征);

SGD 因为更新比较频繁,会造成 cost function 有严重的震荡。

BGD 可以收敛到局部极小值,当然 SGD 的震荡可能会跳到更好的局部极小值处。

当我们稍微减小 learning rate,SGD 和 BGD 的收敛性是一样的。

优点:

当处理大量数据时,比如SSD或者faster-rcnn等目标检测模型,每个样本都有大量候选框参与训练,这时使用随机梯度下降法能够加快梯度的计算。

随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况,那么可能只用其中部分的样本,就已经将 迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。缺点是SGD的噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。所以虽然训练速度快,但是准确度下降,并不是全局最优。虽然包含一定的随机性,但是从期望上来看,它是等于正确的导数的。

梯度更新规则:

MBGD 每一次利用一小批样本,即 n 个样本进行计算,这样它可以降低参数更新时的方差,收敛更稳定,另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。

和 SGD 的区别是每一次循环不是作用于每个样本,而是具有 n 个样本的批次。

超参数设定值: n 一般取值在 50~256

缺点:(两大缺点)

鞍点就是:一个光滑函数的鞍点邻域的曲线,曲面,或超曲面,都位于这点的切线的不同边。例如这个二维图形,像个马鞍:在x-轴方向往上曲,在y-轴方向往下曲,鞍点就是(0,0)。

为了应对上面的两点挑战就有了下面这些算法

核心思想:

不使用动量优化时,每次训练的梯度下降方向,都是按照当前批次训练数据计算的,可能并不能代表整个数据集,并且会有许多噪声,下降曲线波动较大:

添加动量项之后,能够有效减小波动,从而加快训练速度:

当我们将一个小球从山上滚下来时,没有阻力的话,它的动量会越来越大,但是如果遇到了阻力,速度就会变小。
加入的这一项,可以使得梯度方向不变的维度上速度变快,梯度方向有所改变的维度上的更新速度变慢,这样就可以加快收敛并减小震荡。

优点:

通过动量更新,参数向量会在有持续梯度的方向上增加速度;
使梯度下降时的折返情况减轻,从而加快训练速度;

缺点:

如果数据集分类复杂,会导致 和 时刻梯度 向量方向相差较大;在进行向量求和时,得到的 会非常小,反而使训练速度大大下降甚至模型难以收敛。

这种情况相当于小球从山上滚下来时是在盲目地沿着坡滚,如果它能具备一些先知,例如快要上坡时,就知道需要减速了的话,适应性会更好。

目前为止,我们可以做到,在更新梯度时顺应 loss function 的梯度来调整速度,并且对 SGD 进行加速。

核心思想:

自适应学习率优化算法针对于机器学习模型的学习率,采用不同的策略来调整训练过程中的学习率,从而大大提高训练速度。

这个算法就可以对低频的参数做较大的更新,对高频的做较小的更新,也因此,对于稀疏的数据它的表现很好,很好地提高了 SGD 的鲁棒性,例如识别 Youtube 视频里面的猫,训练 GloVe word embeddings,因为它们都是需要在低频的特征上有更大的更新。

Adagrad 的优点是减少了学习率的手动调节

式中, 表示第 个分类, 表示第 迭代同时也表示分类 累计出现的次数。 表示初始的学习率取值(一般为0.01)

AdaGrad的核心思想: 缩放每个参数反比于其所有梯度历史平均值总和的平方根。具有代价函数最大梯度的参数相应地有较大的学习率,而具有小梯度的参数又较小的学习率。

缺点:

它的缺点是分母会不断积累,这样学习率就会收缩并最终会变得非常小。

这个算法是对 Adagrad 的改进,

和 Adagrad 相比,就是分母的 换成了过去的梯度平方的衰减平均值,指数衰减平均值

这个分母相当于梯度的均方根 root mean squared (RMS),在数据统计分析中,将所有值平方求和,求其均值,再开平方,就得到均方根值 ,所以可以用 RMS 简写:

其中 的计算公式如下, 时刻的依赖于前一时刻的平均和当前的梯度:

梯度更新规则:

此外,还将学习率 换成了 RMS[Δθ],这样的话,我们甚至都不需要提前设定学习率了:

超参数设定值: 一般设定为 0.9

RMSprop 是 Geoff Hinton 提出的一种自适应学习率方法。

RMSprop 和 Adadelta 都是为了解决 Adagrad 学习率急剧下降问题的,

梯度更新规则:

RMSprop 与 Adadelta 的第一种形式相同:(使用的是指数加权平均,旨在消除梯度下降中的摆动,与Momentum的效果一样,某一维度的导数比较大,则指数加权平均就大,某一维度的导数比较小,则其指数加权平均就小,这样就保证了各维度导数都在一个量级,进而减少了摆动。允许使用一个更大的学习率η)

超参数设定值:

Hinton 建议设定 为 0.9, 学习率 为 0.001。

这个算法是另一种计算每个参数的自适应学习率的方法。相当于 RMSprop + Momentum

除了像 Adadelta 和 RMSprop 一样存储了过去梯度的平方 vt 的指数衰减平均值 ,也像 momentum 一样保持了过去梯度 mt 的指数衰减平均值:

如果 和 被初始化为 0 向量,那它们就会向 0 偏置,所以做了偏差校正,通过计算偏差校正后的 和 来抵消这些偏差:

梯度更新规则:

超参数设定值:
建议

示例一

示例二

示例三

上面情况都可以看出,Adagrad, Adadelta, RMSprop 几乎很快就找到了正确的方向并前进,收敛速度也相当快,而其它方法要么很慢,要么走了很多弯路才找到。

由图可知自适应学习率方法即 Adagrad, Adadelta, RMSprop, Adam 在这种情景下会更合适而且收敛性更好。

如果数据是稀疏的,就用自适用方法,即 Adagrad, Adadelta, RMSprop, Adam。

RMSprop, Adadelta, Adam 在很多情况下的效果是相似的。

Adam 就是在 RMSprop 的基础上加了 bias-correction 和 momentum,

随着梯度变的稀疏,Adam 比 RMSprop 效果会好。

整体来讲,Adam 是最好的选择。

很多论文里都会用 SGD,没有 momentum 等。SGD 虽然能达到极小值,但是比其它算法用的时间长,而且可能会被困在鞍点。

如果需要更快的收敛,或者是训练更深更复杂的神经网络,需要用一种自适应的算法。

各种优化器Optimizer原理:从SGD到AdamOptimizer

深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)



相关参考:

在大规模模型训练的过程中,优化算法有哪些?
在大模型训练过程中,常用的优化算法主要包括以下几种:1. 梯度下降法:用于优化神经网络的损失函数,通过逐步更新神经网络的参数,以最小化损失函数。2. 随机梯度下降法:在训练大模型时,可能会出现梯度消失或爆炸的问题,随机梯度下降法通过在每次更新时加入随机性,避免了这个问题的发生。3. Adam优化...

优化器-optimizer 汇总
优化算法的两大支柱是损失函数,它评估模型的性能,和优化策略,决定了模型参数的调整方向和方式。众多优化器如SGD(随机梯度下降)、BGD(批量梯度下降)、MBGD(小批量梯度下降)以及Momentum、NAG等,各有其独特之处。首先,SGD以速度见长,每一步仅基于单个样本计算梯度,适合大规模数据集,但可能会产生...

优化方法总结
回头看最初的优化框架,已经分别在一阶动量和二阶动量做了研究。还剩下当前的梯度可以进行尝试。参考前面的NAG,Nadam就是Adam+Nesterov。 在Adam的基础上保持其他计算公式不变,更改当前梯度的计算公式为 从前面的介绍可以看出,Adam系列的算法表面上更优秀,针对原本的SGD的缺点做了各种改变。但是对于A...

常见最优化方法总结(非深度)
拟牛顿法:迈向高效的新高度牛顿法的亲兄弟们,拟牛顿方法,特别是W.C.Davidon的发明和Fletcher-Powell的验证,为非线性优化开辟了新路。它们通过使用正定矩阵近似Hessian的逆,极大地简化了运算,实现了超线性收敛。DFP和BFGS算法就是这片领域中的璀璨明珠,它们灵活适应各种问题,但非正定性Hessian可能导致...

优化算法笔记(二)优化算法的分类
一天=优化算法中的一个迭代; 这群原始人最终的定居位置=优化算法所得的解。 优化算法的流程图如下: 对优化算法分类得有个标准,按照不同的标准分类也会得到不一样的结果。首先说一下我所使用的分类标准(动态更新,有了新的感悟再加): 按由来分类比较好理解,就是该算法受何种现象启发而发明,本质是对现象分类。

最优化算法总结
RMSProp: 使用指数加权移动平均,更新公式涉及MS向量,参数更新时需要人工设定参数。Adam: 结合了动量和RMSProp,m和v向量初始化,更新公式包含指数移动平均,防止除以零问题。相较于梯度下降,二阶优化算法如牛顿法虽更精确,但代价是计算Hessian矩阵的复杂度和存储需求。在小批量处理中,二阶导数的估计误差...

Adam优化器
(1)SGD (2)mini-batch SGD 这种算法能够带来很好的训练速度,但是在到达最优点的时候并不能够总是真正到达最优点,而是在最优点附近徘徊;另一个缺点就是这种算法需要我们挑选一个合适的学习率:当我们采用小的学习率的时候,会导致网络在训练的时候收敛太慢;当我们采用大的学习率的时候,会导致在...

机器学习中有哪些重要的优化算法?
接下来我们介绍几种梯度下降算法的优化方法。 Momentum Momentum是动量的意思。这个算法的思想就是借助了动力学的模型:每次算法的迭代会使用到上一次的速度作为依据。 算法的公式如下: [v^t = \\gamma v^{t - 1} + \\lambda \\nabla f(\\theta) \\ \\theta = \\theta - v_t] 对比式7可以看出,这个算法的主要...

电力系统优化算法
电力系统优化算法实际应用介绍 优化问题可以分成凸(convex)问题和非凸问题。凸问题都是可以找到最优解的,只是算力问题,小问题可以用现有的解法器非常快的找到最优解,大型问题则一般要用一些定制的分解算法。非凸问题则要具体情况具体讨论,如果只是带有整数变量的话一般也可以找到不错的解。电力系统这边...

Optimization - Optimize Algorithm & ML\/OR Modeling
注意,实际运用这些算法中,既有Numerical的,也有Analytical的。在OR与ML中,都有不同种的算法被运用,譬如Linear Regression中解析解与牛顿法迭代或者随机梯度下降类的算法都能得到一致的解。机器学习中的优化器Optimizer(适用于ML,具体实现了特定的优化算法):其实就是一系列“无约束非凸优化问题的求解...

相关评论

  • 农使6667: 几种常用的算法简介 -
    17892729603: 1、穷举法穷举法是最基本的算法设计策略,其思想是列举出问题所有的可能解,逐一进行判别,找出满足条件的解. 穷举法的运用关键在于解决两个问题: 在运用穷举法时,容易出现的问题是可能解过多,导致算法效率很低,这就需要对列举...

  • 农使6667: 网站怎么优化,有优化软件介绍一下吗?
    17892729603: 增加链接策略:快速的、合理的、持续不断的增加反向链接,不同的网站也需要不同的策略,制定好增加链接策略,然后有计划有目的的去执行,方能达到最好的效果seo项目管理与执行策略:企业网站、行业网站、门户网站、电子商务网站等等,不同的网站技术基础不同,所以执行和管理的策略也不同,增加外链的最好工具就是旺道营销软件. SEO由于容易入门,见效比较明显,已经变得家喻户晓.不过这个东西有的时候却让人捉摸不透,因为每次算法的调整都可能引起一些无法解释的现象,这样导致有些时候,SEO的效果被抹杀,但最根本的优化算法还是不会有过大变化,所以如果想优化有长久效果,可以用旺道营销软件. www.wtoceo.net

  • 农使6667: Oracle优化器有哪些优化方式?
    17892729603: 1、Oracle优化器的优化方式 Oracle优化器共有两种的优化方式,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based ...

  • 相关话题

    ap在线精英在线最新简短笑话,好笑的段子,搞笑句子,男女朋友校园冷笑话,搞笑歌词对白台词,夫妻搞笑对话,手机流行笑话,逗人笑的动物经典笑话,最新幽默搞笑图文,好笑的视频分享给朋友
    若有事情,请联系电邮
    © <搞笑吧