1.Adam是啥

前面铺垫了这么多,终于铺垫到Adam了。作为最常用的优化器之一,很多同学可能都听说过Adam的名字,但是Adam是什么意思可能并不清楚。Adam其实包括两部分:Ada+M。其中,Ada就是我们前面提到的Adaptive,而M是我们一直在讲的Momentum。

结合我们前面提到的内容,SGD中的一阶动量计算方式:
mt=β1mt−1+(1−β1)gtm_t = \beta_1 m_{t-1} + (1-\beta_1)g_tmt​=β1​mt−1​+(1−β1​)gt​
而在AdaDelta中,二阶动量为
Vt=β2Vt−1+(1−β2)gt2V_t = \beta_2 V_{t-1} + (1-\beta_2)g_t^2Vt​=β2​Vt−1​+(1−β2​)gt2​

2.结合源码分析

class Adam(Optimizer):"""Adam optimizer.Default parameters follow those provided in the original paper.Arguments:lr: float >= 0. Learning rate.beta_1: float, 0 < beta < 1. Generally close to 1.beta_2: float, 0 < beta < 1. Generally close to 1.epsilon: float >= 0. Fuzz factor. If `None`, defaults to `K.epsilon()`.decay: float >= 0. Learning rate decay over each update.amsgrad: boolean. Whether to apply the AMSGrad variant of this algorithmfrom the paper "On the Convergence of Adam and Beyond"."""def __init__(self,lr=0.001,beta_1=0.9,beta_2=0.999,epsilon=None,decay=0.,amsgrad=False,**kwargs):super(Adam, self).__init__(**kwargs)with K.name_scope(self.__class__.__name__):self.iterations = K.variable(0, dtype='int64', name='iterations')self.lr = K.variable(lr, name='lr')self.beta_1 = K.variable(beta_1, name='beta_1')self.beta_2 = K.variable(beta_2, name='beta_2')self.decay = K.variable(decay, name='decay')if epsilon is None:epsilon = K.epsilon()self.epsilon = epsilonself.initial_decay = decayself.amsgrad = amsgrad
...

以上为tensorflow中Adam的源码。可以看出,β1,β2\beta_1, \beta2β1​,β2等参数值均按原始论文给出。

lrlrlr:学习率,默认值0.001
β1\beta_1β1​:控制一阶动量,默认值0.9
β2\beta_2β2​:控制二阶动量,默认值0.999
ϵ\epsilonϵ: Fuzz factor,默认值1e-7

到此为止,我们平时常用的β1,β2\beta_1, \beta_2β1​,β2​参数是彻底搞清楚具体什么意思了。

深度学习优化算法大全系列6:Adam相关推荐

  1. 深度学习优化算法实现(Momentum, Adam)

    目录 Momentum 初始化 更新参数 Adam 初始化 更新参数 除了常见的梯度下降法外,还有几种比较通用的优化算法:表现都优于梯度下降法.本文只记录完成吴恩达深度学习作业时遇到的Momentum ...

  2. Adam 那么棒,为什么还对 SGD 念念不忘?一个框架看懂深度学习优化算法

    作者|Juliuszh 链接 | https://zhuanlan.zhihu.com/juliuszh 本文仅作学术分享,若侵权,请联系后台删文处理 机器学习界有一群炼丹师,他们每天的日常是: 拿来 ...

  3. 2017年深度学习优化算法最新进展:改进SGD和Adam方法

    2017年深度学习优化算法最新进展:如何改进SGD和Adam方法 转载的文章,把个人觉得比较好的摘录了一下 AMSGrad 这个前期比sgd快,不能收敛到最优. sgdr 余弦退火的方案比较好 最近的 ...

  4. 2017年深度学习优化算法最新进展:如何改进SGD和Adam方法?

    2017年深度学习优化算法最新进展:如何改进SGD和Adam方法? 深度学习的基本目标,就是寻找一个泛化能力强的最小值,模型的快速性和可靠性也是一个加分点. 随机梯度下降(SGD)方法是1951年由R ...

  5. 深度学习优化算法,Adam优缺点分析

    优化算法 首先我们来回顾一下各类优化算法. 深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -& ...

  6. Adam那么棒,为什么还对SGD念念不忘?一个框架看懂深度学习优化算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者|Juliuszh,https://zhuanlan.zhih ...

  7. 深度学习优化算法的总结与梳理(从 SGD 到 AdamW 原理和代码解读)

    作者丨科技猛兽 转自丨极市平台 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam https://zhuanlan.zhihu.com/ ...

  8. 大梳理!深度学习优化算法:从 SGD 到 AdamW 原理和代码解读

    ‍ 作者丨知乎 科技猛兽  极市平台 编辑 https://zhuanlan.zhihu.com/p/391947979 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 ...

  9. Pytorch框架的深度学习优化算法集(优化中的挑战)

    个人简介:CSDN百万访问量博主,普普通通男大学生,深度学习算法.医学图像处理专攻,偶尔也搞全栈开发,没事就写文章,you feel me? 博客地址:lixiang.blog.csdn.net Py ...

  10. 深度学习优化算法之动量法[公式推导](MXNet)

    我们在前面的文章中熟悉了梯度下降的各种形态,深度学习优化算法之(小批量)随机梯度下降(MXNet),也了解了梯度下降的原理,由每次的迭代,梯度下降都根据自变量的当前位置来更新自变量,做自我迭代.但是如 ...

最新文章

  1. kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)
  2. python入门之函数调用第二关_猪行天下之Python基础——5.1 函数(上)
  3. TEA加密算法的C/C++实现
  4. 如何通俗理解beta分布?
  5. python日期函数_python 时间相关函数
  6. Activiti工作流的简单介绍
  7. java 包装类缺点_Java 自动拆箱和自动装箱学习笔记
  8. c语言数据结构用矩阵存储图,数据结构之---C语言实现图的数组(邻接矩阵)存储表示...
  9. SpringBoot2 Spring Cloud Config Server和Config Client分布式配置中心使用教程
  10. Win 10 下载与安装 Oracle 12c 详细图解 与 Oracle 12c 卸载
  11. C语言程序设计(第三版)何钦铭著 习题2-2
  12. linux几个工具的安装
  13. C语言--fseek()
  14. ftp传输工具 3款免费的ftp传输工具(ftp客户端定时上传下载新体验)
  15. python用schedule库实现定时功能,可每天定时运行程序。
  16. 分页插件之--kaminari
  17. 群晖用php装aria2,在群晖安装整套下载管理工具“Aria2 + AriaNg + File Manager”
  18. 微信小程序 --长按复制、点击复制实现
  19. vue 实现百度下拉提示搜索功能
  20. 装机日记 200元预算宿舍主机改造

热门文章

  1. [数据结构]链表的实现在PHP中
  2. CentOS7安装dnf报错:No package dnf available
  3. Dawn 阿里开源前端开发构建工具
  4. 极限编程的12个实践原则
  5. [BZOJ 4403]序列统计(Lucas定理)
  6. Android的ADT的安装
  7. 无盘工作站与VMware View虚拟桌面对比
  8. 字符HTML编码类(转)
  9. 为什么环境变量中设置了JDK版本为1.7,但是在cmd中java -version 是1.8版本
  10. redis scan命令详解