首页 > 编程语言 >神经网络优化篇:详解Adam 优化算法(Adam optimization algorithm)

神经网络优化篇:详解Adam 优化算法(Adam optimization algorithm)

时间:2024-01-19 10:13:32浏览次数:37  
标签:algorithm text db 算法 beta Adam dW 优化

Adam 优化算法

在深度学习的历史上,包括许多知名研究者在内,提出了优化算法,并很好地解决了一些问题,但随后这些优化算法被指出并不能一般化,并不适用于多种神经网络,时间久了,深度学习圈子里的人开始多少有些质疑全新的优化算法,很多人都觉得动量(Momentum)梯度下降法很好用,很难再想出更好的优化算法。所以RMSprop以及Adam优化算法,就是少有的经受住人们考验的两种算法,已被证明适用于不同的深度学习结构,这个算法会毫不犹豫地推荐给,因为很多人都试过,并且用它很好地解决了许多问题。

Adam优化算法基本上就是将MomentumRMSprop结合在一起,那么来看看如何使用Adam算法。

使用Adam算法,首先要初始化,\(v_{dW} = 0\),\(S_{dW} =0\),\(v_{db} = 0\),\(S_{db} =0\),在第\(t\)次迭代中,要计算微分,用当前的mini-batch计算\(dW\),\(db\),一般会用mini-batch梯度下降法。接下来计算Momentum指数加权平均数,所以\(v_{dW}= \beta_{1}v_{dW} + ( 1 - \beta_{1})dW\)(使用\(\beta_{1}\),这样就不会跟超参数\(\beta_{2}\)混淆,因为后面RMSprop要用到\(\beta_{2}\)),使用Momentum时肯定会用这个公式,但现在不叫它\(\beta\),而叫它\(\beta_{1}\)。同样\(v_{db}= \beta_{1}v_{db} + ( 1 -\beta_{1} ){db}\)。

接着用RMSprop进行更新,即用不同的超参数\(\beta_{2}\),\(S_{dW}=\beta_{2}S_{dW} + ( 1 - \beta_{2}){(dW)}^{2}\),再说一次,这里是对整个微分\(dW\)进行平方处理,\(S_{db} =\beta_{2}S_{db} + \left( 1 - \beta_{2} \right){(db)}^{2}\)。

相当于Momentum更新了超参数\(\beta_{1}\),RMSprop更新了超参数\(\beta_{2}\)。一般使用Adam算法的时候,要计算偏差修正,\(v_{dW}^{\text{corrected}}\),修正也就是在偏差修正之后,

\(v_{dW}^{\text{corrected}}= \frac{v_{dW}}{1 - \beta_{1}^{t}}\),

同样\(v_{db}^{\text{corrected}} =\frac{v_{db}}{1 -\beta_{1}^{t}}\),

\(S\)也使用偏差修正,也就是\(S_{dW}^{\text{corrected}} =\frac{S_{dW}}{1 - \beta_{2}^{t}}\),\(S_{db}^{\text{corrected}} =\frac{S_{db}}{1 - \beta_{2}^{t}}\)。

最后更新权重,所以\(W\)更新后是\(W:= W - \frac{a v_{dW}^{\text{corrected}}}{\sqrt{S_{dW}^{\text{corrected}}} +\varepsilon}\)(如果只是用Momentum,使用\(v_{dW}\)或者修正后的\(v_{dW}\),但现在加入了RMSprop的部分,所以要除以修正后\(S_{dW}\)的平方根加上\(\varepsilon\))。

根据类似的公式更新\(b\)值,\(b:=b - \frac{\alpha v_{\text{db}}^{\text{corrected}}}{\sqrt{S_{\text{db}}^{\text{corrected}}} +\varepsilon}\)。

所以Adam算法结合了MomentumRMSprop梯度下降法,并且是一种极其常用的学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。

本算法中有很多超参数,超参数学习率\(a\)很重要,也经常需要调试,可以尝试一系列值,然后看哪个有效。\(\beta_{1}\)常用的缺省值为0.9,这是dW的移动平均数,也就是\(dW\)的加权平均数,这是Momentum涉及的项。至于超参数\(\beta_{2}\),Adam论文作者,也就是Adam算法的发明者,推荐使用0.999,这是在计算\({(dW)}^{2}\)以及\({(db)}^{2}\)的移动加权平均值,关于\(\varepsilon\)的选择其实没那么重要,Adam论文的作者建议\(\varepsilon\)为\(10^{-8}\),但并不需要设置它,因为它并不会影响算法表现。但是在使用Adam的时候,人们往往使用缺省值即可,\(\beta_{1}\),\(\beta_{2}\)和\(\varepsilon\)都是如此,觉得没人会去调整\(\varepsilon\),然后尝试不同的\(a\)值,看看哪个效果最好。也可以调整\(\beta_{1}\)和\(\beta_{2}\),但认识的业内人士很少这么干。

为什么这个算法叫做AdamAdam代表的是Adaptive Moment Estimation,\(\beta_{1}\)用于计算这个微分(\(dW\)),叫做第一矩,\(\beta_{2}\)用来计算平方数的指数加权平均数(\({(dW)}^{2}\)),叫做第二矩,所以Adam的名字由此而来,但是大家都简称Adam权威算法。

这就是关于Adam优化算法的全部内容,有了它,可以更加快速地训练神经网络。

标签:algorithm,text,db,算法,beta,Adam,dW,优化
From: https://www.cnblogs.com/oten/p/17974000

相关文章

  • 常用Unity的优化技巧集锦
    Unity性能优化是面试的时候经常被问道的一些内容,今天给大家分享一些常用的Unity的优化技巧和思路,方便大家遇到问题时候参考与学习。包体大小优化游戏的安装包体大小对于游戏开发而言非常重要,因为发布后这些包都会上传到渠道或商店让用户下载,包体越小用户下载的时间就越少,如果一......
  • 【学习笔记】斜率优化DP
    例题1.ACwing301为了方便,我们记\(c_i\)为c的前缀和,\(t_i\)同理。容易推出\(O(n^2)\)方程:\(dp_{i}=\min_{j=0}^{i-1}{(dp_j+s\times(c_n-c_j)+t_i\times(c_i-c_j))}\)但是本题的数据范围是3e5,所以考虑优化。我们先把min给拆掉:\(dp_i=dp_j+s\timesc_n-s\timesc......
  • 笔记重修计划一:斜率优化 dp & cdq 分治维护凸包(施工中)
    施工中,但是目前暂停施工。前言刷cdq分治的时候做到了这题,发现自己不是很懂这个东西,跑回去看自己几个月前写的斜率优化dp笔记,当时认为自己弄得很明白了,但现在看来简直就是皮毛,遂弄明白后写下此文,希望自己之后有更多启发时能继续充实这篇文章。若有不妥之处望指出。如果单调......
  • 数据库索引和索引优化
    索引和索引优化MysqlInnoDB使用B+树作为索引,如下图,是一个简化的B+数:使用B+树作为索引有点非常明显的优点1、B+树的数据都保存在叶子节点中,非叶子节点只保存指针,这样可以极大的减少数的阶数。如图如果每一阶可以存储1000个值,那么3阶树即可以存储1000*1000*1000=10亿个数据。而根......
  • 19条MySQL优化
    一善用EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据•type列: 连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别•key列: 使用到的索引名。如果没有选择索引,值是NULL。可以采取强制......
  • mysql和redis库存扣减和优化
    前言大流量情况下的库存是老生常谈的问题了,在这里我整理一下mysql和redis应对扣除库存的方案,采用jmeter进行压测。JMETER设置库存初始值50,线程数量1000个,1秒以内启动全部,一个线程循环2次,共2000个请求MySQL方案初始方案<updateid="decreaseStock">UPDATEstock......
  • 泛互联网行业A/B测试全解析:产品优化的创新之道
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近期,火山引擎数智平台举办了“超话数据:企业产品优化分享”的活动。火山引擎产品解决方案专家从企业应用的视角,分享了A/B实验在产品全用户生命周期的体验优化和案例。在用户拉新环节,企业可以......
  • 前端长列表优化
    一、场景引入长列表网页相信大多数开发者都遇到过,在DOM元素过多的情况下,浏览器渲染会很慢,非常影响用户体验。因此我们会经常采用虚拟滚动、分页、上拉加载更多等不同的方式来进行优化,这些方式的思想都是一样的,都是只渲染可见区域,等用户需要时再加载更多的内容。二、解决方案1.c......
  • LIS问题的优化
    普通的LIS问题的时间复杂度是\(O(n^2)\),瓶颈主要是在方程\(f[i]=1+max(f[j])\),其中\(1≤j<i\)且\(a[j]<a[i]\)中寻找\(j\)上我们尝试用贪心优化,这里的\(j\)就是小于\(i\)的比\(a[i]\)小的且\(f[j]\)最大的\(j\)根据贪心原则,假设当前循环到了\(i\)(还没有开始处理),我们用\(h[k]\)表......
  • sql语句优化
    SELECTt.ID,t.ProjectNumber,t.ProjectRequirement,t.ProjectDescrip......