专栏首页DeepHub IMBAAdam 优化算法详解

Adam 优化算法详解

据牛津字典的定义,优化是指最好或最有效地利用一种情况或资源,或者简单地使自己的事物达到最佳状态的行为。通常,如果可以对某事进行数学建模,则很有可能可以对其进行优化。这在深度学习领域起着至关重要的作用(可能是整个人工智能),因为您选择的优化算法可能是在数分钟,数小时或数天(有时甚至是数周)内获得高质量结果的区别。

在这篇文章中,我们将阐述:

  1. 什么是Adam Optimizer?
  2. 在深度学习模型中使用Adam进行优化有什么好处?
  3. Adam如何工作?

什么是Adam Optimizer?

Adam Optimizer是对SGD的扩展,可以代替经典的随机梯度下降法来更有效地更新网络权重。

请注意,Adam这个名字并不是首字母缩写词,实际上,作者(OpenAI的Diederik P. Kingma和多伦多大学的Jimmy Lei Ba)在论文中指出,该论文首次在ICLR 2015上作为会议论文发表,标题为Adam: A method for Stochastic Optimization, that the name is derived from adaptive moment estimation.。

作者毫不犹豫地列出了将Adam应用于非凸优化问题的许多迷人好处,我将继续分享以下内容:

简单地实现(我们将在本文的稍后部分中实现Adam,并且您将直接看到如何利用强大的深度学习框架以更少的代码行使实现变得更加简单。)

  1. 计算效率高
  2. 很少的内存需求
  3. 梯度的对角线重缩放不变(这意味着亚当将梯度乘以仅带正因子的对角矩阵是不变的,以便更好地理解此堆栈交换)
  4. 非常适合数据和/或参数较大的问题
  5. 适用于非固定目标
  6. 适用于非常嘈杂和/或稀疏梯度的问题
  7. 超参数具有直观的解释,通常需要很少的调整(我们将在配置部分中对此进行详细介绍)

Adam是如何工作的

简而言之,Adam使用动量和自适应学习率来加快收敛速度。

Momentum (动量)

在解释动量时,研究人员和从业人员都喜欢使用比球滚下山坡而向局部极小值更快滚动的类比法,但从本质上讲,我们必须知道的是,动量算法在相关方向上加速了随机梯度下降,如 以及抑制振荡。

为了将动量引入我们的神经网络,我们将时间元素添加到过去时间步长的更新向量中,并将其添加到当前更新向量中。这样可以使球的动量增加一定程度。可以用数学表示,如下图所示。

动量更新方法,其中θ是网络的参数,即权重,偏差或激活值,η是学习率,J是我们要优化的目标函数,γ是常数项,也称为动量。Vt-1(注意t-1是下标)是过去的时间步长,而Vt(注意t是下标)是当前的时间步长。

动量项γ通常被初始化为0.9或类似于Sebastian Ruder的论文《An overview of gradient descent optimization algorithm》中提到的项。

适应性学习率

通过将学习率降低到我们在AdaGrad,RMSprop,Adam和AdaDelta中看到的预定义时间表(schedule),可以将自适应学习率视为训练阶段的学习率调整。这也称为学习率时间表 有关该主题的更多详细信息,Suki Lau撰写了一篇有关该主题的非常有用的博客文章,称为“ Learning Rate Schedules and Adaptive Learning Rate Methods for Deep Learning.”。

在不花太多时间介绍AdaGrad优化算法的情况下,这里将解释RMSprop及其在AdaGrad上的改进以及如何随时间改变学习率。

RMSprop(即均方根传播)是由Geoff Hinton开发的,如《An Overview of Gradient Descent Optimization Algorithms》所述,其目的是解决AdaGrad的学习率急剧下降的问题。简而言之,RMSprop更改学习速率的速度比AdaGrad慢,但是RMSprop仍可从AdaGrad(更快的收敛速度)中受益-数学表达式请参见下图

E [g²] t的第一个方程是平方梯度的指数衰减平均值。Geoff Hinton建议将γ设置为0.9,而学习率η的默认值为0.001

这可以使学习率随着时间的流逝而适应,这很重要,因为这种现象也存在于Adam中。当我们将两者(Momentum 和RMSprop)放在一起时,我们得到了Adam —下图显示了详细的算法。

如果你听过吴恩达老师的深度学习课程,吴恩达老师说过“Adam可以理解为加了Momentum 的 RMSprop” ,上图的公式就是吴恩达老师这句话的由来。

本文分享自微信公众号 - DeepHub IMBA(deephub-imba),作者:P**nHub兄弟网站

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python和R之间转换的基本指南:使用Python或R知识来有效学习另一种方法的简单方法

    这里介绍的方法与我们自学习外语的时候使用的方法是有共同之处的,例如我们要学习英语,可以使用以下三个关键的练习帮助我从笨拙地将中文单词翻译成英语,转变为直接用英语...

    deephub
  • 极限学习机 Extreme Learning Machines 介绍

    极限学习机(ELM, Extreme Learning Machines)是一种前馈神经网络,最早由新加坡南洋理工大学黄广斌教授于2006年提出。其发表的文章中...

    deephub
  • Python和VizViewer进行自动驾驶数据集可视化

    使用可视化工具包探索Lyft预测数据集介,可视化动图非常消耗流量,请在wifi环境下查看本篇文章

    deephub
  • 风险对架构设计的驱动力

    我在博客文章《以RAID分析作为架构驱动力》中介绍了RAID分析方法。这个方法将风险作为其中的一个重要驱动力,指导我们进行架构设计,避免陷入未知的陷阱。 无独有...

    张逸
  • 教程 | 听说你了解深度学习最常用的学习算法:Adam优化算法?

    选自arXiv 机器之心编译 参与:蒋思源 深度学习常常需要大量的时间和机算资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练...

    机器之心
  • C语言定时关机小程序

    这个关机小程序的核心是对system函数的应用,大家可能感觉学了很久的C依然对着黑色的控制台程序,而system函数就比较意思了,其实说白了syst...

    7089bAt@PowerLi
  • Windows系统如何安装Tensorflow Object Detection API

    TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edg...

    OpenCV学堂
  • 为什么企业不应该担心公共云供应商的锁定

    根据富士通(Fujitsu)公司在2019年2月的一项调查,将近80%的受访者担心被供应商锁定的风险。调查还发现,有助于避免供应商锁定的采购灵活性已成为采用混合...

    静一
  • Python语言常用的49个基本概念及含义

    Python小屋屋主
  • 语音识别如何操作?这种语音转文字方法也太好用了吧,简单高效

    语音识别是现在很多人都想了解的概念,其实语音识别就是将语音转换成文字。目前的需求还是蛮大的,尤其是会议纪要、演讲采访、音频文件整理成文字等场景,使用需求非常大。

    鱼儿说科技

扫码关注云+社区

领取腾讯云代金券