深度学习 优化算法

优化算法

概念

优化算法的功能是通过改善训练方式来最大化或者最小化损失函数。模型内部有些参数,是用来计算测试集中目标值 Y Y Y的真实值和预测值的偏差程序,基于这些参数就形成了损失函数 E ( x ) E(x) E(x)。在有效地训练模型并产生准确结果时,模型的内部参数起到了非常重要的作用。

动量

在这里插入图片描述

动量内容可以参考: 动量EMA指数移动平均

动量特点:

  • 下降初期时,使用上一次参数更新,下降方向一致,能够很好地进行加速。
  • 下降中后期,在局部最小值来回震荡,使得更新幅度增大,跳出局部最优
  • 在梯度改变方向时,能够减少更新。

在这里插入图片描述

框架

优化算法大致经历了SGD–>SGDM–>AdaGrad–>AdaDelta—>Adam—>Ndam的发展过程。以下是优化算法的框架:

设待优化参数为 ω \omega ω,目标函数为 f ω f{\omega} fω,初始化学习率为: l r lr lr。对于每个epoch t t t

  1. 计算目标梯度关于当前参数的梯度: g t = ▽ f ( ω t ) g_t = \bigtriangledown f(\omega_t) gt=f(ωt)
  2. 根据历史梯度计算一阶动量和二阶动量: m t = ϕ ( g 1 , g 2 , . . . g t ) ; V t = φ ( g 1 , g 2 , . . . , g t ) m_t=\phi(g_1, g2_,...g_t); V_t=\varphi(g_1, g_2, ..., g_t) mt=ϕ(g1,g2,...gt);Vt=φ(g1,g2,...,gt)
  3. 计算当前时刻下降梯度: η = a ∗ m t V t \eta=a*\frac{m_t}{\sqrt{V_t}} η=aVt mt
  4. 根据下降梯度进行更新: ω t + 1 = ω t − η t \omega_{t+1} = \omega_t-\eta_t ωt+1=ωtηt

SGD

​​在这里插入图片描述
为了避免SGD和标准梯度下降中存在的问题,一个改进的方法为小批量梯度下降,对每个批次中的n个训练样本,小批量梯度下降只执行一次更新。使用小批量梯度下降的优点是:

  • 减少参数频繁更新,得到更好的收敛效果
  • 可以使用最新的深层学习库中通用的矩阵优化方法,使计算小批量数据的梯度更加高效

使用SGD缺点:

  1. 很难选择合适的学习率。太小的学习率会导致网络收敛过去缓慢,而学习率太大会影响收敛,并导致损失函数在最小值波动,出现梯度发散
  2. 相同的学习率并不适用于所有的参数更新。如果训练集数据很稀疏,且特征频率非常不同,则不应该在相同的程度上进行参数更新。
  3. 在神经网络中,最小化非凸误差函数的另一个关键挑战是避免陷于多个其他局部最小值中。

Momentum

​​​​在这里插入图片描述

NAG

​​在这里插入图片描述

AdaGrad

Adagrad方法是通过参数来调整合适的学习率η,对稀疏参数进行大幅更新和对频繁参数进行小幅更新。因此,Adagrad方法非常适合处理稀疏数据。在时间步长中,Adagrad方法基于每个参数计算的过往梯度,为不同参数θ设置不同的学习率。
在这里插入图片描述

Adagrad方法的主要好处是,不需要手工来调整学习率。大多数参数使用了默认值0.01,且保持不变。Adagrad方法的主要缺点是,学习率η总是在降低和衰减。因为每个附加项都是正的,在分母中累积了多个平方梯度值,故累积的总和在训练期间保持增长。这反过来又导致学习率下降,变为很小数量级的数字,该模型完全停止学习,停止获取新的额外知识。因为随着学习速度的越来越小,模型的学习能力迅速降低,而且收敛速度非常慢,需要很长的训练和学习,即学习速度降低。因此AdaGrad需要改善学习率不断下降的问题。

RMSProp/AdaDelta

在这里插入图片描述

AdaDelta方法的另一个优点是,已经不需要设置一个默认的学习率。目前已完成的改进1) 为每个参数计算出不同学习率;2) 也计算了动量项momentum;3) 防止学习率衰减或梯度消失等问题的出现。
还可以做什么改进?在之前的方法中计算了每个参数的对应学习率,但是为什么不计算每个参数的对应动量变化并独立存储呢?这就是Adam算法提出的改良点。

Adam

在这里插入图片描述

Ndam

在这里插入图片描述

参考

  1. 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
  2. 深度学习中的优化算法串讲
  3. 深度学习最全优化方法总结比较:SGD,Adagrad,Adadelta,Adam,Adamax,Nadam
  • 6
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
梯度下降优化算法(Gradient Descent Optimization Algorithm,GDO)是一种常用于深度学习中的优化算法。它通过不断迭代来最小化目标函数,并找到使得目标函数值最小的参数值。 GDO的基本思想是,在每次迭代中,通过计算目标函数对参数的梯度,然后沿着梯度的反方向更新参数。这样做的目的是使目标函数在参数空间中以最快的速度下降,从而找到局部最优解或者全局最优解。 具体来说,GDO的步骤如下: 1. 初始化参数:根据问题的具体情况,初始化模型的参数。 2. 计算梯度:根据当前的参数值,计算目标函数对参数的梯度。梯度表示了目标函数在当前参数值处的变化率,即目标函数下降的方向。可以使用反向传播算法来计算梯度。 3. 更新参数:根据计算得到的梯度,通过更新规则来更新参数。常用的更新规则包括梯度乘以学习率,然后减去该值来更新参数。 4. 判断终止条件:判断是否达到了终止条件,终止条件可以是迭代次数达到了设定值,或者目标函数的变化小于设定的阈值等。 5. 如果没有达到终止条件,则返回第2步,继续进行迭代;否则,停止迭代,输出最终的参数值。 GDO的优点是简单易实现,并且在许多深度学习任务中表现良好。然而,它也存在一些问题,例如容易陷入局部最优解、学习率的选择问题等。因此,在实际应用中,可以使用一些改进的梯度下降算法,如带动量的梯度下降、自适应学习率的梯度下降等,来提高优化的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值