深度学习优化算法大全系列6:Adam
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=β1mt−1+(1−β1)gt
而在AdaDelta中,二阶动量为
Vt=β2Vt−1+(1−β2)gt2V_t = \beta_2 V_{t-1} + (1-\beta_2)g_t^2Vt=β2Vt−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相关推荐
- 深度学习优化算法实现(Momentum, Adam)
目录 Momentum 初始化 更新参数 Adam 初始化 更新参数 除了常见的梯度下降法外,还有几种比较通用的优化算法:表现都优于梯度下降法.本文只记录完成吴恩达深度学习作业时遇到的Momentum ...
- Adam 那么棒,为什么还对 SGD 念念不忘?一个框架看懂深度学习优化算法
作者|Juliuszh 链接 | https://zhuanlan.zhihu.com/juliuszh 本文仅作学术分享,若侵权,请联系后台删文处理 机器学习界有一群炼丹师,他们每天的日常是: 拿来 ...
- 2017年深度学习优化算法最新进展:改进SGD和Adam方法
2017年深度学习优化算法最新进展:如何改进SGD和Adam方法 转载的文章,把个人觉得比较好的摘录了一下 AMSGrad 这个前期比sgd快,不能收敛到最优. sgdr 余弦退火的方案比较好 最近的 ...
- 2017年深度学习优化算法最新进展:如何改进SGD和Adam方法?
2017年深度学习优化算法最新进展:如何改进SGD和Adam方法? 深度学习的基本目标,就是寻找一个泛化能力强的最小值,模型的快速性和可靠性也是一个加分点. 随机梯度下降(SGD)方法是1951年由R ...
- 深度学习优化算法,Adam优缺点分析
优化算法 首先我们来回顾一下各类优化算法. 深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -& ...
- Adam那么棒,为什么还对SGD念念不忘?一个框架看懂深度学习优化算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者|Juliuszh,https://zhuanlan.zhih ...
- 深度学习优化算法的总结与梳理(从 SGD 到 AdamW 原理和代码解读)
作者丨科技猛兽 转自丨极市平台 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam https://zhuanlan.zhihu.com/ ...
- 大梳理!深度学习优化算法:从 SGD 到 AdamW 原理和代码解读
作者丨知乎 科技猛兽 极市平台 编辑 https://zhuanlan.zhihu.com/p/391947979 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 ...
- Pytorch框架的深度学习优化算法集(优化中的挑战)
个人简介:CSDN百万访问量博主,普普通通男大学生,深度学习算法.医学图像处理专攻,偶尔也搞全栈开发,没事就写文章,you feel me? 博客地址:lixiang.blog.csdn.net Py ...
- 深度学习优化算法之动量法[公式推导](MXNet)
我们在前面的文章中熟悉了梯度下降的各种形态,深度学习优化算法之(小批量)随机梯度下降(MXNet),也了解了梯度下降的原理,由每次的迭代,梯度下降都根据自变量的当前位置来更新自变量,做自我迭代.但是如 ...
最新文章
- kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)
- python入门之函数调用第二关_猪行天下之Python基础——5.1 函数(上)
- TEA加密算法的C/C++实现
- 如何通俗理解beta分布?
- python日期函数_python 时间相关函数
- Activiti工作流的简单介绍
- java 包装类缺点_Java 自动拆箱和自动装箱学习笔记
- c语言数据结构用矩阵存储图,数据结构之---C语言实现图的数组(邻接矩阵)存储表示...
- SpringBoot2 Spring Cloud Config Server和Config Client分布式配置中心使用教程
- Win 10 下载与安装 Oracle 12c 详细图解 与 Oracle 12c 卸载
- C语言程序设计(第三版)何钦铭著 习题2-2
- linux几个工具的安装
- C语言--fseek()
- ftp传输工具 3款免费的ftp传输工具(ftp客户端定时上传下载新体验)
- python用schedule库实现定时功能,可每天定时运行程序。
- 分页插件之--kaminari
- 群晖用php装aria2,在群晖安装整套下载管理工具“Aria2 + AriaNg + File Manager”
- 微信小程序 --长按复制、点击复制实现
- vue 实现百度下拉提示搜索功能
- 装机日记 200元预算宿舍主机改造