热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

优化算法_Adam优化算法

本文由编程笔记#小编为大家整理,主要介绍了Adam优化算法相关的知识,希望对你有一定的参考价值。深度学习常常需要大量的时间和计算机资源进行训练,这也是困扰深度学习算法开发的重大
本文由编程笔记#小编为大家整理,主要介绍了Adam优化算法相关的知识,希望对你有一定的参考价值。


深度学习常常需要大量的时间和计算机资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但需要的计算资源并没有丝毫减少。而唯有需要资源更少、令模型收敛更快的最优化算法,才能从根本上加速机器的学习速度和效果,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个样本的小批量,对应目标为。

         计算梯度:

        

         更新有偏一阶矩估计:技术分享图片

 

         更新有偏二阶矩估计:技术分享图片

 

         修正一阶矩的偏差:技术分享图片

 

         修正二阶矩的偏差:技术分享图片

 

         计算更新:技术分享图片

 

         应用更新:技术分享图片

 

end while

 

实例:

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

技术分享图片

 



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 代码如下:#coding:utf-8importstring,os,sysimportnumpyasnpimportmatplotlib.py ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • navicat生成er图_实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题
    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题。本文对ACL2020KBQA基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
author-avatar
Caroline19921009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有