adam算法_梯度下降/批量(随机)梯度下降/动量法/RMSporp/Adam算法汇总
我们在机器学习的过程中,当我们构建好我们的模型后要对输出构建损失函数。然后要不断的减小损失函数的值来不断更新优化我们模型中的参数。
那么如何优化我们的参数呢?
梯度下降法:
对1到M这些给出的数据计算损失函数之和的均值
求导
更新参数,a为学习率(用于决定我们学习的步长)
通俗一点将过程就相当于:
1 遍历我们所有的数据(求损失函数均值)
2 环顾四方,寻找一个最优(损失函数下降最快)的方向(求导)
3 朝着损失函数下降最快的地方迈出大小为a的一步(更新参数)
但是这样有哪些不好的地方?
1 遍历所有数据,更新参数缓慢,计算量大,模型训练慢
2 学习率的选择对于是否可以找到最优解很重要
那么我们首先克服第一个问题:遍历所有数据,更新参数缓慢,计算量大,模型训练慢
批量(随机)梯度下降:
简单来说,为了克服我们上述的问题,我们找到问题的根本所在为遍历所有的数据后进行更新,那么,我们选择一部分数据进行求和求导后进行更新,是不是可以解决这个问题?
答案是可以的,有数学推导证明了,小批量的数据的求和为所有数据求和的无偏估计,怎么解释呢?大概意思就是选择一部分数据可以估计个差不太多,将所有的数据按照批次更新完之后是没有偏差的。
但是,这样的作法总会有一点问题,首先,虽然小批次数据的结果是正常结果的无偏估计,但是,虽然期望相同,但是会产生方差,方差的产生会对于我们的收敛有着一定的影响,有可能在最差的情况下会导致函数无法收敛,或者产生局部最优值。并且在更新的后期容易产生不稳定的震荡。
对于上述的问题我们可以采取的一个方法就是在更新的后期手动的缩小学习率,这样对于函数的收敛有着比较好的作用。
随机梯度下降:
批量随机下降的一个特殊情况,每次计算一个数据点后进行更新,参数更新更快,不稳定性更大。
在说明动量法之前我们先讲一个预备知识:指数加权平均EMA
首先我们拿到这样一个点状图,我们如何看待他的变化趋势?
其中一个方法就是计算当天以及其前面N天数值的加权平均值作为当天的数值来对点状数据进行平滑处理。
具体的公式为:
这里的Vt代表当天估计数值,Vt-1待变前一天的估计数值,后面的值代表当天的确定值,β是常量,1/(1-β)便是我们估计多少天的指数加权平均值。
举个例子,当β为0.98时,我们计算的估计值就是当天以及其前1/1-0.98=20天的指数加权平均值。β愈接近1,我们估计的天数越多,我们的估计曲线越平缓。
那么我们就可以用这种方式解决下面这种情况:
图为损失函数的等高线
在图中,我们的参数在竖直方向上来回抖动,水平方向上缓慢前行。
因为竖直方向的抖动导致我们的学习率不能选择较大的值,因为很可能因为学习率过大而使得整个函数无法收敛。
所以我们希望整个过程“平滑一些”,这样我们就可以使用我们的指数加权平均,然后整个过程就会变成这样:
如图中红线所示,这样我门就可以选择较大的学习率加快我们的训练过程,这个方法也叫做动量法。
上面我们解决了第一个问题与震荡过大的问题,那么我们的第二个问题如何解决呢?
RMSporp法:
他的核心思想就是解决虽然在更新初期,学习率高加快我们的模型训练,但是后期的学习率如果还是比较高的情况下我们很可能无法收敛,那么我们就要在训练速度和训练精度中做出取舍,为了一举两得,我们很简单的想法就是,在训练的前期使用比较高的学习率,但是在训练的后期使用较低的学习率,他的实现数学公式如下:
我们可以看到,RMSProp算法对梯度计算了微分平方加权平均数。这种做法有利于消除了摆动幅度大的方向,用来修正摆动幅度,使得各个维度的摆动幅度都较小。另一方面也使得网络函数收敛更快。最后在训练次数较多后也会减小学习率的值,方便收敛。
Adam算法:
其实Adam算法综合了动量法和RMSPorp算法,不仅可以进一步缩小更新的抖动,并且平衡各个参数之前的更新速度,加快收敛,最后保证可以收敛。
当然,我上面的讲解夹杂了大量的个人理解,并且数学公式的证明与阐述不够专业与细致,所以非常推荐大家如果想详细了解这些算法的话,去观看下面的几个视频:
吴恩达老师的课程:
【全 中文字幕】深度学习_吴恩达_DeepLearning.ai_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com
动手深度学习课程:
[MXNet/Gluon] 动手学深度学习第六课:优化算法高级和计算机视觉_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com
还有建议大家可以上网搜索这几个算法的大佬解释,本文如有错误希望大家指正,感谢大家的阅读,喜欢的朋友点个赞吧,我们下篇文章再见。
adam算法_梯度下降/批量(随机)梯度下降/动量法/RMSporp/Adam算法汇总相关推荐
- 动手学深度学习——基础优化算法梯度下降,小批量随机梯度下降
一.梯度下降算法 挑选一个初始值w0: 重复迭代参数t=1,2,3: 在接下来不断的更新w0,使它接近最优解: 具体来说,法则如下: wt等于wt的上一时刻减去η乘以损失函数关于wt的上一时刻的梯度. ...
- 批量梯度下降,随机梯度下降和小批量梯度下降的区别
批量梯度下降,随机梯度下降和小批量梯度下降的区别主要体现在用于计算梯度的样本的数量: 批量梯度下降:在每次迭代时,用整个数据集的所有样本上的梯度计算更新. 随机梯度下降:在每次迭代时,用单个样本上的梯 ...
- 『ML笔记』梯度下降法和随机梯度下降法和小批量梯度对比
目录 1. 梯度下降法(gradient descent) 2. 随机梯度下降(Stochastic gradient descent) 3. 小批量梯度下降(Mini-Batch gradient ...
- 梯度下降算法_批梯度下降法,Minibatch梯度下降法和随机梯度下降法之间的区别...
什么是梯度下降法? 梯度下降法是一种机器学习中常用的优化算法,用来找到一个函数(f)的参数(系数)的值,使成本函数(cost)最小. 当参数不能解析计算时(如使用线性代数),并且必须通过优化算法搜索时 ...
- 机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)...
本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有 ...
- 随机梯度下降法matlab程序,批量梯度下降和随机梯度下降
1.概念 (1)批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小. (2)随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的 ...
- 深度学习的优化算法——梯度下降和随机梯度下降
深度学习的优化算法--梯度下降和随机梯度下降 优化算法在深度学习中存在的问题 优化在深度学习中有很多挑战,下面描述其中两个,局部最小值和鞍点. 1.局部最小值 深度学习模型的目标函数可能存在若干极点- ...
- 梯度下降和随机梯度下降_梯度下降和链链接系统
梯度下降和随机梯度下降 On Broken Incentives and Deadlock. 关于激励机制和僵局. By Shawn Jain and Blake Elias[Shawn Jain i ...
- 梯度下降与随机梯度下降
梯度下降法先随机给出参数的一组值,然后更新参数,使每次更新后的结构都能够让损失函数变小,最终达到最小即可.在梯度下降法中,目标函数其实可以看做是参数的函数,因为给出了样本输入和输出值后,目标函数就只剩 ...
最新文章
- OkHttp3源码详解(三) 拦截器-RetryAndFollowUpInterceptor
- 在cshtml中显示FCKeditor编辑器控件
- spad 探测器_从光到光子—“单光子”探测器
- Netbeans 中创建数据连接池和数据源步骤(及解决无法ping通问题)
- javascript arraybuffer
- Error: Cannot retrieve metalink for repository: epel.
- 浅谈过程和结果的关系
- Fancybox丰富的弹出层效果
- 【MYSQL笔记】使用存储过程
- html 可换行属性,html里title属性换行的方法
- linux生成手机号码字典,Linux下的字典生成工具Crunch 创造自己的专属字典
- Java系统日志管理
- Vue配置TinyMCE富文本编辑器 + 图片(本地)上传到服务器
- 不是吧,还有人不会做国庆头像小程序(可开通流量主,赚零花钱)
- 视频教程-H3CNE认证网络工程师视频课程-H3C认证
- 基于JTBC的装修公司网站
- vue中echarts纵轴添加点击事件
- MS08_067复现+远程控制
- EF和Dapper之争的关键
- 快速实现自定义控件开关按钮