美文网首页
机器学习之优化算法学习总结

机器学习之优化算法学习总结

作者: 仰望星空的小狗 | 来源:发表于2020-01-14 13:46 被阅读0次

优化算法演化历程

机器学习和深度学习中使用到的优化算法的演化历程如下:
SGD --> Momentum --> Nesterov --> Adagrad --> Adadelta --> Adam --> Nadam
表1 \space\space优化算法演化过程及其原因

演化过程 原因
SGD --> Momentum 由于SGD在优化过程中容易产生震荡,为减小震荡,Momentum在梯度下降过程中引入了动量,使之具有惯性
Momentum --> Nesterov 对梯度项进行矫正,使梯度下降方向由积累的动量和假设走到下一步的梯度两部分决定的
Nesterov --> Adagrad Adagrad中引入二阶动量,使之能够自适应调节学习率
Adagrad --> Adadelta 由于Adagrad 使用了之前所有梯度的平方,会导致训练到后面梯度为0,因此,在Adadelta中只用前面一段时间的下降梯度的配方
Adadelta --> Adam 在梯度更新中,使用了动量,并且能够自适应调节学习率
Adam --> Nadam 引入了Nesterov 动量项

各优化算法的公式与特点

SGD

公式:

  • \theta=\theta-\eta\nabla_\theta J(\theta)

特点:

  • 仅由当前所在的梯度来决定参数如何更新
  • 梯度下降过程中容易出现震荡

Momentum

公式:

  • m_t=\mu*m_{t-1}+\eta\nabla_\theta J(\theta)
  • \theta_t=\theta_{t-1}-m_t

特点:

  • 引入动量,减小SGD在梯度下降过程中的震荡
  • 梯度下降过程中,之前的动量也对当前运动有影响

Nesterov

公式:

  • m_t=\mu*m_{t-1}+\eta\nabla_\theta J(\theta-\mu*m_{t-1})
  • \theta_t=\theta_{t-1}-m_t

特点:

  • 在Momentum优化算法的基础上,对当前梯度值进行矫正
  • 矫正方式为,假设参数往积累的动量方向走了一步时所在位置的梯度作为当前的梯度值

Adagrad

公式:

  • g_t=\nabla_\theta J(\theta)
  • n_t=n_{t-1}+(g_t)^2
  • \theta_t=\theta_{t-1}-\dfrac{\eta}{\sqrt{n_t+\epsilon}}*g_t

特点:

  • 适合用于稀疏梯度
  • 前期梯度下降较快,后期梯度下降较慢
  • 具有自适应学习率
  • 训练后期,由于梯度累计较大,会使训练提前结束

Adadelta

公式:

  • g_t=\nabla_\theta J(\theta)
  • n_t=v*n_{t-1}+(1-v)*(g_t)^2
  • \theta_t=\theta_{t-1}-\dfrac{\eta}{\sqrt{n_t+\epsilon}}*g_t

特点:

  • 在Adagrad基础上,减小提前结束训练的风险

Adam

公式:

  • m_t=\mu*m_{t-1}+(1-\mu)\nabla_\theta J(\theta)
  • n_t=v*n_{t-1}+(1-v)*(g_t)^2
  • \hat{m_t}=\dfrac{m_t}{1-\mu^t}
  • \hat{n_t}=\dfrac{n_t}{1-v^t}
  • \theta_t=\theta_{t-1}-\dfrac{\hat{m_t}*\eta}{\sqrt{\hat{n_t}+\epsilon}}*g_t

特点:

  • Adam梯度经过偏置校正后,每一次迭代学习率都有一个固定范围,使得参数比较平稳
  • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
  • 为不同的参数计算不同的自适应学习率
  • 也适用于大多非凸优化问题——适用于大数据集和高维空间

各优化算法的分类

表2 \space\space各优化算法的分类

梯度修正 优化算法
没进入动量,且不具有自适应学习率 BGD、SGD
引入动量 Momentum、Nesterov
自适应学习率 Adagrad、Adadelta、RMSprop
引入动量且自适应学习率 Adam、Adamx、Nadam

优化算法使用总结

  • 在不考虑优化算法的使用细节及其技巧的情况下,一般使用Adam
  • 虽然后面的优化算法都是在SGD上改进而来,但是目前很多paper依旧使用SGD
  • 一般在训练时,数据都要进行shuffle
  • 几种优化算法并不一定哪一个绝对好,视模型和数据而定

相关文章

  • 机器学习中常用的优化算法总结

    [TOC]优化算法是机器学习中的“方法论”,优化算法会告诉机器应该如何优化学习的进程,让自己能够更好地掌握学习到的...

  • 机器学习之优化算法学习总结

    优化算法演化历程 机器学习和深度学习中使用到的优化算法的演化历程如下:SGD --> Momentum --> N...

  • 机器学习

    机器学习等于矩阵+优化+算法+统计

  • iOS 机器学习(Core ML) -- (一)集成已有模型

    一、机器学习 机器学习就是通过对数据进行分析,来改进优化算法。机器学习有三个要数:数据、学习算法、模型。 数据:机...

  • 深度学习笔记

    构建机器学习算法 数据集 代价函数 优化算法 模型

  • 机器学习和算法

    机器学习算法 github主页:机器学习和算法 最近以来一直在学习机器学习和算法,然后自己就在不断总结和写笔记,记...

  • 2019-03-04

    总结一些机器学习算法步骤:

  • 优化算法总结

    简介 本文介绍一下机器学习和深度学习中常用的优化算法和优化器以及一些其他我知道的优化算法,部分算法我也没有搞懂,就...

  • 梯度下降优化方法概述

    梯度下降是优化神经网络和机器机器学习算法的首选优化方法。本文重度参考SEBASTIAN RUDER[https:/...

  • 优化问题记录

    优化问题可选解: optimizer优化算法总结 - CSDN博客 深度学习最全优化方法总结比较(SGD,Adag...

网友评论

      本文标题:机器学习之优化算法学习总结

      本文链接:https://www.haomeiwen.com/subject/tpxaactx.html