Adam优化算法「建议收藏」

Adam优化算法「建议收藏」深度学习常常需要大量的时间和计算机资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但需要的计算资源并没有丝毫减少。而唯有需要资源更少、令模型收敛更快的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

深度学习常常需要大量的时间和计算机资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但需要的计算资源并没有丝毫减少。而唯有需要资源更少、令模型收敛更快的最优化算法,才能从根本上加速机器的学习速度和效果,Adam算法正为此而生!

Adam优化算法是随机梯度下降算法的扩展式,进来其广泛的应用与深度学习的应用中,尤其是计算机视觉和自然语言处理等任务。本文分为两部分,前一部分简要介绍了Adam优化算法的特性和其在深度学习中的应用,后一部分从Adam优化算法的原论文出发,详细解释和推导了他的算法过程和更新规则,我们希望读者在苏皖这两部分后能了解掌握以下几点:

1)  Adam算法是什么,他为优化深度学习模型带来了哪些优势

2)  Adam算法的原理机制是怎样的,它与相关的AdaGrad和RMSProp方法有什么区别

3)  Adam算法应该如何调参,它常用的配置参数是怎么样的

4)  Adam的实现优化的过程和权重更新规则

5)  Adam的初始化偏差修正的推导

6)  Adam的扩展形式:AdaMax

1、  什么是Adam优化算法?

Adam是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代的更新神经网络权重。

首先该算法名【Adam】,其并不是首字母缩写,也不是人名。他的名称来源于自适应矩估计(adaptive moment estimation)。在介绍这个算法时,原论文列举了将Adam优化算法应用在非凸优化问题中所获得的优势:

1) 直截了当的实现

2) 高效的计算

3) 所需内存少

4) 梯度对角缩放的不变性

5) 适合解决含大规模数据和参数的优化问题

6) 使用于非稳态目标

7) 适用于解决包含很高噪声或稀疏梯度的问题

8) 超参数可以很直观地解释,并且基本上只需要极少量的调参

2、  Adam优化算法的基本机制

Adam算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率(即alpha)更新所有的权重,学习率在训练过程中并不会改变Adam通过随机梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

Adam算法的提出者描述其为两种随机梯度下降扩展式的优点集合,即:

1)  适应梯度算法(AdaGrad)为每一个参数保留一个学习率以提升在稀疏梯度(即自然语言和计算机视觉问题)上的性能

2)  均方根传播基于权重梯度最近量级的均值为每一个参数适应性的保留学习率。这意味着算法在非稳态和在线问题上有很优秀的性能

3)  Adam算法同时获得了AdaGrad和RMSProp算法的优点。Adam不仅如RMSProp算法那样基于一阶矩阵计算适应性参数学习率,它同时还充分利用了梯度的二阶矩均值(即有偏方差)。具体来说,算法计算了梯度的指数移动均值,超参数beta1和beta2控制了这些移动均值的衰减率。

4)  移动均值的初始值和beta1、beta2值接近于1(推荐值),因此矩估计的偏差接近于0,该偏差通过首先计算带偏差的估计而后计算偏差修正后的估计而得到提升。如果对具体的实现细节和推导过程感兴趣,可以继续阅读第二部分和原论文

3、  Adam算法的高效性

Adam在深度学习领域十分流行,因为他能很快地实现优良的结果,经验性结果证明Adam算法在实践中性能优异,相对于其他种类的随机优化算法具有很大的优势。

在原论文中,作者经验性的证明了Adam算法的收敛性符合理论性的分析。Adam算法可以在MINIST手写字符识别和IMDB情感分析数据集上由于logistic回归算法,也可以在MINIST数据集上应用于多层感知机算法和CIFAR-10图像识别数据集上应用于卷积神经网络。他们总结道:在使用大型模型和数据集的情况下,我们证明了Adam优化算法在解决局部深度学习问题上的高效性

Adam优化算法和其他优化算法在多层感知机模型中的对比

事实上,Insofar、RMSProp、Adadelata和Adam算法都是比较类似的优化算法,他们在类似的情境下都可以执行的非常好。但是Adam算法的偏差修正令其在梯度变得稀疏时要比RMSProp算法更优秀更快速Insofar和Adam优化算法基本是最好的全局选择。同样在CS21n课程中,Adam算法也推荐作为默认的优化苏纳法

虽然Adam算法在实践中要比RMSProp更加优秀,但同时我们也可以尝试SGD+Nesterov动量作为Adam的替代。即我们通常推荐在深度学习模型中使用Adam算法或SGD+Nesterov动量法。

4、  Adam的参数配置

alpha同样也称为学习率或步长因子,它控制了权重的更新比率(如0.001).较大的值(如0.3)在学习率更新前会更快的初始学习,而较小的值(如1E-5)会令训练收敛到更好的性能

beta1一阶矩估计的指数衰减率(如0.9)

beta2二阶矩估计的指数衰减率(如0.99).该超参数在系数梯度(如在NLP或计算机视觉任务中)中应该设置接近1的数

epsilon该参数是非常小的数,其为了防止在实现中除以零(如1E-8)

另外,学习率衰减同样可以应用到Adam中,原论文使用衰减率alpha=alpha/sqrt(t)在logistic回归中每个epoch(t)中都得到更新

5、  Adam论文建议参数设定

测试机器学习问题比较好的默认参数设定为:alpha=0.001,beta1=0.9,beta2=0.999和epsilon=10E-8.

我们也可以看到流行深度学习库采用了改论文推荐的参数设置:
TensorFlow:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08.

Keras:lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0.

Blocks:learning_rate=0.002, beta1=0.9, beta2=0.999, epsilon=1e-08, decay_factor=1.

Lasagne:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08

Caffe:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08

MxNet:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8

Torch:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8

总结:在第一部分中,我们讨论了Adam优化算法在深度学习中的基本特性和原理:

Adam是一种在深度学习模型中用来替代随机梯度下降的优化算法。

Adam结合了AdaGrad和RMSProp算法最优的性能,它还是能提供解决稀疏梯度和噪声问题的优化方法

Adam的调参相对简单,默认参数就可以处理绝大部分的问题

 

我们提出了Adam算法,即一种对随机目标函数执行yi接梯度优化的算法,该算法基于适应性低阶矩估计,Adam算法很容易实现,并且有很高的计算效率和较低的内存需求

Adam算法梯度的对角缩放具有不变性,因此很适合求解带有大规模数据或参数的问题。该算法同样适用于解决大噪声和稀疏梯度的非稳态问题。超参数可以很直观的解释,并只需要少量调整。本论文还讨论了Adam算法和其他区相类似的算法。我们分析了Adam算法的理论收敛性,并提供了收敛的区间,我们证明收敛的速度在线凸优化框架下达到了最优。经验结果也展示了Adam算法在实践上比得上其他随机优化方法。最后,我们讨论了AdaMax,即一种基于无穷范数的Adam变体。

Adam 算法

require:步长alpha:(建议默认为:0.001)

require:矩估计的指数衰减率,beta1、beta2在区间[0,1]内。(建议默认为:分别为0.9和0.999)

require:用于数值稳定的小常数epsilon(建议默认为:1E-8)

require:初始参数为

         初始化一阶和二阶变量s=0,r=0

         初始化时间步t=0

while 没有达到停止标准 do

         从训练集中采包含m个样本的小批量,对应目标为。

         计算梯度:

        

         更新有偏一阶矩估计:Adam优化算法「建议收藏」

 

         更新有偏二阶矩估计:Adam优化算法「建议收藏」

 

         修正一阶矩的偏差:Adam优化算法「建议收藏」

 

         修正二阶矩的偏差:Adam优化算法「建议收藏」

 

         计算更新:Adam优化算法「建议收藏」

 

         应用更新:Adam优化算法「建议收藏」

 

end while

 

实例:

在学习tensorflow例子的时候代码里面给出的优化方案默认很多情况下都是直接用的AdamOptimizer优化算法,如下:

Adam优化算法「建议收藏」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166834.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月1日 上午7:36
下一篇 2022年8月1日 上午7:46


相关推荐

  • Ai智慧社区_AI社区医院

    Ai智慧社区_AI社区医院前言前不久进入了智慧社区、智慧园区和智慧校园行业,于是打算就智慧社区下的智慧小区写两篇文章,一篇是介绍智慧小区,一篇是关于如何构建智慧小区管理系统。本篇是智慧小区文章的第一篇,纯介绍性,如果对智慧小区有一定了解的可以移步。为什么我会讲智慧小区而非智慧社区,原因之一是智慧社区有很多社会属性的单位,比如医疗卫生、派出所、城管、社区居委会等等,涉及到政务、治安、党建、医疗、市政等很多方面,…

    2022年10月17日
    5
  • SQLyog使用教程

    SQLyog使用教程SQLyog 使用教程准备工作链接本地数据库准备工作 1 安装 MySQL 数据库 我的博文里面有教程 2 安装 SQLyog 教程见我的博文 链接本地数据库打开 SQLyog 应用 将会出现下面的页面点击新建 输入链接名输入密码 点击连接按钮如果出现连接出错 且错误号为 2058 那是因为 MySQL 密码加密方法变了 你只需要修改一下 MySQL 的密码就行了 在 cmd 中登陆数据库后键入 ALT

    2026年3月19日
    3
  • Charle抓包与wireshark使用

    Charle抓包与wireshark使用今天就来看一下 Mac 上如何进行抓包 之前有一篇文章介绍了使用 Fidder 进行抓包 http blog csdn net jiangwei0 article details 不过可惜的是 Fidder 使用 C 开发的 所以就不能在 Mac 上使用了 不过还有另外一个抓包神器 就是 Charles 它是 Java 开发的 所以跨平台 不仅可以在 Mac 上使用 Linux 以

    2026年3月17日
    1
  • siger获取 本机信息

    siger获取 本机信息sigar x86 winnt dll 文件拷贝到 Java nbsp SDK 目录的 binpublic nbsp static nbsp void nbsp main String nbsp args nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp try nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp System 信息 从 jvm 获取 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp System setProperty java library path nbsp so

    2026年3月19日
    1
  • 过滤器与拦截器详解图_过滤器 拦截器

    过滤器与拦截器详解图_过滤器 拦截器过滤器详解依赖于servlet容器,实现基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,过滤器一般用于登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换等等操作,便于代码重用,不必每个servlet中进行冗余操作。Java中的Filter并不是一个标准的Servlet,它…

    2022年8月23日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号