机器学习经典算法(三)--指数加权平均

机器学习经典算法(三)–指数加权平均

指数加权平均(Exponentially Weighted Averages)是一些改进梯度下降法重要理论,如上篇博文梯度下降法(2)提到的动量梯度下降法,RMSprop、Adam等都用到了指数加权平均。也叫指数加权移动平均(Exponentially Weighted Moving Averages);那么到底什么是指数加权平均呢?

基础概念 
       话说有这么一个例子,如下图,横轴表示天数ii,纵轴表示某地每天对应的温度θiθi,这是1年的数据,现在我们想计算一下,这一年温度变化的趋势

这个变化趋势也就是局部平均或移动平均,怎么做呢? 
       我们用vivi表示这个平均值,引入一个  参数,且令v0=0v0=0, 
vi=β∗vi−1+(1−β)∗θi
vi=β∗vi−1+(1−β)∗θi

这样一个式子表达了相当于,当天的温度平均值约等于前TT天温度数据加权平均,T≈11−βT≈11−β。 
       例如:β=0.9β=0.9时,T=10T=10天,效果如图:

例如:β=0.98β=0.98时,T=50T=50天,效果如图:

例如:β=0.5β=0.5时,T=2T=2天,效果如图:

从上述3种情况对比看,该数据平均前10天较为符合我们期望;前50天曲线太平滑,有点偏离数据;前2天与数据较为贴合,但同时存在噪声。

进一步理解 
       我们将上式展开,这里用第100个平均值,β=0.9β=0.9为例: 
v100v99v98⋯===0.9∗v99+0.1∗θ1000.9∗v98+0.1∗θ990.9∗v97+0.1∗θ98
v100=0.9∗v99+0.1∗θ100v99=0.9∗v98+0.1∗θ99v98=0.9∗v97+0.1∗θ98⋯

则: 
v100⋯====0.1∗θ100+0.9∗v990.1∗θ100+0.9(0.1∗θ99+0.9∗v98)0.1∗θ100+0.9(0.1∗θ99+0.9(0.1∗θ98+0.9∗v97)0.1∗θ100+0.1∗0.9θ99+0.1∗0.92θ98+0.1∗0.93∗θ97+⋯+0.1∗0.999θ1
v100=0.1∗θ100+0.9∗v99=0.1∗θ100+0.9(0.1∗θ99+0.9∗v98)=0.1∗θ100+0.9(0.1∗θ99+0.9(0.1∗θ98+0.9∗v97)⋯=0.1∗θ100+0.1∗0.9θ99+0.1∗0.92θ98+0.1∗0.93∗θ97+⋯+0.1∗0.999θ1

从上式可以看出第100天的平均值是由前100天数据加权平均的,但是看它们的权重系数,是符合一个指数级衰减函数,当T=10T=10时,0.910≈1/e0.910≈1/e,当小于1/e1/e的权重其影响已经非常小了,所以相当于前10天的数据加权平均;同理当θ=0.98θ=0.98时,0.9850≈1/e0.9850≈1/e,所以相当于前50天数据加权平均。
偏差修正(bias correction) 
       上面讲述了指数加权平均原理,但还存在一个问题,就是开始时,我们算法的天数不到TT天时,怎么办呢?如下图

图中红色曲线还是β=0.9β=0.9的曲线,绿色是我们上面提到的β=0.98β=0.98的曲线;但是,按照上面公式去计算,呈现的β=0.98β=0.98的曲线应该是紫色曲线,注意到它起步阶段与理想绿色曲线是偏小的。 
       这时误差修正就上场了: 
vt=vt1−βt
vt=vt1−βt

在tt较小时,将会修正平均值,随着tt曾大,其修正作用减小,因为这时也不需要修正了。 
       当然了再机器学习中,很多人不在意起步阶段偏小问题,而愿意熬过这个阶段,所以这个误差修正,也常常被忽略,如动量梯度下降法和RMSprop中就没有加入误差修正,在Adam算法中加入了误差修正。
参考文献: 
【1】吴恩达DeepLearning.ai课程:https://mooc.study.163.com/smartSpec/detail/1001319001.htm

Adam优化算法中的指数移动平均相关推荐

  1. 为什么在优化算法中使用指数加权平均

    本文知识点: 什么是指数加权平均? 为什么在优化算法中使用指数加权平均? β 如何选择? 1. 什么是指数加权平均 指数加权平均(exponentially weighted averges),也叫指 ...

  2. 指数加权平均、动量梯度下降法、RMSprop、Adam优化算法

    目录 1.指数加权平均(exponentially weighted averages) 这里有一年的温度数据. 如果想计算温度的趋势,也就是局部平均值(local average),或者说移动平均值 ...

  3. Dropout、梯度消失/爆炸、Adam优化算法,神经网络优化算法看这一篇就够了

    作者 | mantch 来源 | 知乎 1. 训练误差和泛化误差 对于机器学习模型在训练数据集和测试数据集上的表现.如果你改变过实验中的模型结构或者超参数,你也许发现了:当模型在训练数据集上更准确时, ...

  4. 2.8 Adam 优化算法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.7 RMSprop 回到目录 2.9 学习率衰减 Adam优化算法 (Adam Optimization Algorithm) 在深度学习的历史上,包括许多知名研究者在内 ...

  5. 深度学习最常用的学习算法:Adam优化算法

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共6267个字,30张图,预计阅读时间16分钟. 听说你了解深度学习最常用的学习 ...

  6. 基于机器学习的Adam 优化算法来提高深层神经网络的训练速度

    在人工智能深度学习领域,我们经常使用梯度下降法来完成神经网络的训练任务,梯度下降算法是当前神经网络的应用最为广泛的算法之一,但是这个算法存在一些问题,就是在梯度下降的过程中存在一些波动的情况,从而导致 ...

  7. 5分钟快速掌握 Adam 优化算法

    梯度下降是一种优化算法,遵循目标函数的负梯度以定位函数的最小值. 梯度下降的局限性是,所有输入变量都使用单个步长(学习率).像AdaGrad和RMSProp这样的梯度下降的扩展会更新算法,以对每个输入 ...

  8. 【转】听说你了解深度学习最常用的学习算法:Adam优化算法?

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

  9. 深度学习最常用的算法:Adam优化算法

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

最新文章

  1. util包下的Date与sql包下的Date之间的转换
  2. 轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?
  3. 如何保证消息的顺序性
  4. 镜像和linux关系,Docker中容器和镜像的关系【通俗易懂】
  5. XCTF(攻防世界)—新手web题Write Up
  6. linux下设置定时任务,linux下定时任务设置
  7. Atitit usrQBK1600 技术文档的规范标准化解决方案
  8. Redis面试复习大纲在手面试不慌,讲的明明白白!
  9. 热门项目:高精度图像分类全流程开发
  10. idea 亮度 调整_工业设计 | 2019优秀产品设计——IDEA金奖作品
  11. java 字符串面试_Java字符串面试问答
  12. JDBC01 mysql和navicat的安装
  13. Linux的匿名访问Samba
  14. 基于onnxruntime的YOLOv5单张图片检测实现
  15. 三进制计算机基本原理,三进制(三进制计算机)
  16. 构造中小型园区网实训案例
  17. face_recognition IndexError: list index out of range
  18. 思科http服务器显示设置,思科里面的服务器怎么设置
  19. 还原扩容的缩水U盘真实容量方法(转载)
  20. Deep Learing 记录:电影评论分类——二分类问题

热门文章

  1. 从violate到ConcurrentHashMap,我通过引导面试官,过了多场技术面试
  2. Android8.0 悬浮窗的实现
  3. c语言课程设计图像处理,摄影与图像处理课程设计
  4. Springboot 国际化语言(浏览器切换)
  5. 光明勇士服务器一直维护中,光明勇士一人双职业利弊分析 到底好还是不好
  6. jQuery入门案例
  7. Facade(外观)
  8. opencv c++ Harris角点检测、shi-tomasi角点
  9. Conhash 和 Maglev hash对比
  10. TM1668 与 CT1668 驱动有差异?