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

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

基础概念
       话说有这么一个例子,如下图,横轴表示天数iii,纵轴表示某地每天对应的温度θi" role="presentation" style="position: relative;">θiθi\theta_i,这是1年的数据,现在我们想计算一下,这一年温度变化的趋势

这个变化趋势也就是局部平均或移动平均,怎么做呢?
       我们用viviv_i表示这个平均值,引入一个ββ\beta参数,且令v0=0v0=0v_0=0,

vi=β∗vi−1+(1−β)∗θivi=β∗vi−1+(1−β)∗θi

v_i = \beta *v_{i-1} + (1-\beta) * \theta_i
       这样一个式子表达了相当于,当天的温度平均值约等于 前TTT天温度数据加权平均,T≈11−β" role="presentation" style="position: relative;">T≈11−βT≈11−βT \approx \frac {1}{1-\beta}。
       例如:β=0.9β=0.9\beta =0.9时,T=10T=10T = 10天,效果如图:

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

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

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

进一步理解
       我们将上式展开,这里用第100个平均值,β=0.9β=0.9\beta = 0.9为例:

v100v99v98⋯===0.9∗v99+0.1∗θ1000.9∗v98+0.1∗θ990.9∗v97+0.1∗θ98(19)(20)(21)(22)(19)v100=0.9∗v99+0.1∗θ100(20)v99=0.9∗v98+0.1∗θ99(21)v98=0.9∗v97+0.1∗θ98(22)⋯

\begin{eqnarray}v_{100}&=& 0.9*v_{99}+0.1*\theta_{100}\\v_{99}&=& 0.9*v_{98}+0.1*\theta_{99}\\v_{98}&=& 0.9*v_{97}+0.1*\theta_{98}\\\cdots\end{eqnarray}
       则:

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(23)(24)(25)(26)(27)(23)v100=0.1∗θ100+0.9∗v99(24)=0.1∗θ100+0.9(0.1∗θ99+0.9∗v98)(25)=0.1∗θ100+0.9(0.1∗θ99+0.9(0.1∗θ98+0.9∗v97)(26)⋯(27)=0.1∗θ100+0.1∗0.9θ99+0.1∗0.92θ98+0.1∗0.93∗θ97+⋯+0.1∗0.999θ1

\begin{eqnarray}v_{100}&=& 0.1*\theta_{100} +0.9*v_{99}\\&=& 0.1*\theta_{100} +0.9(0.1*\theta_{99} + 0.9*v_{98})\\&=& 0.1*\theta_{100} +0.9(0.1*\theta_{99} + 0.9(0.1*\theta_{98} + 0.9*v_{97} )\\\cdots\\&=& 0.1*\theta_{100} +0.1*0.9\theta_{99} + 0.1 * 0.9^2\theta_{98} + 0.1*0.9^3*\theta_{97} + \cdots + 0.1*0.9^{99}\theta_1\end{eqnarray}
       从上式可以看出第100天的平均值是由前100天数据加权平均的,但是看它们的权重系数,是符合一个指数级衰减函数,当T=10T=10T= 10时,0.910≈1/e0.910≈1/e0.9^{10} \approx 1/e,当小于1/e1/e1/e的权重其影响已经非常小了,所以相当于前10天的数据加权平均;同理当θ=0.98θ=0.98\theta = 0.98时,0.9850≈1/e0.9850≈1/e0.98^{50}\approx 1/e,所以相当于前50天数据加权平均。

偏差修正(bias correction)
       上面讲述了指数加权平均原理,但还存在一个问题,就是开始时,我们算法的天数不到TTT天时,怎么办呢?如下图

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

vt=vt1−βtvt=vt1−βt

v_t = \frac{v_t}{1-\beta ^ t}
       在ttt较小时,将会修正平均值,随着t" role="presentation" style="position: relative;">ttt曾大,其修正作用减小,因为这时也不需要修正了。
       当然了再机器学习中,很多人不在意起步阶段偏小问题,而愿意熬过这个阶段,所以这个误差修正,也常常被忽略,如动量梯度下降法和RMSprop中就没有加入误差修正,在Adam算法中加入了误差修正。

参考文献:
【1】吴恩达DeepLearning.ai课程:https://mooc.study.163.com/smartSpec/detail/1001319001.htm

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

  1. 机器学习经典算法总结之线性回归

    机器学习经典算法总结之线性回归 最大似然估计(Maximum likelihood Estimate) 在开始我们第一个算法之前呢,先介绍机器学习中一个非常重要的准则,这是一种参数估计的方法--最大似 ...

  2. 机器学习初学者手抄本:数学基础、机器学习经典算法、统计学习方法等

    机器学习怎么学?当然是系统地学习了.没有时间这么办呢?利用碎片时间学习!很多人一天要花 2 个小时通勤,通勤路上有很多时间看手机.于是我把一些机器学习的基础知识做成了在线的机器学习手册,只需打开微信收 ...

  3. 数学基础、机器学习经典算法、统计学习方法,这份机器学习在线手册来帮你...

    机器学习怎么学?当然是系统地学习了.没有时间这么办呢?利用碎片时间学习!很多人一天要花 2 个小时通勤,通勤路上有很多时间看手机.于是我把一些机器学习的基础知识做成了在线的机器学习手册,只需打开微信收 ...

  4. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

    (一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...

  5. c4.5决策树算法python_Python3实现机器学习经典算法(四)C4.5决策树

    一.C4.5决策树概述 C4.5决策树是ID3决策树的改进算法,它解决了ID3决策树无法处理连续型数据的问题以及ID3决策树在使用信息增益划分数据集的时候倾向于选择属性分支更多的属性的问题.它的大部分 ...

  6. 优化算法:指数加权平均

    在学习吴恩达的深度学习系列课程,优化算法部分,权重更新部分讲到指数加权平均,查找到下面博文.此博文看配图,举例,也是吴恩达课程的总结,故此转载. 原作:cloud&ken 发表于:博客园 链接 ...

  7. 免费技术直播:唐宇迪带你一节课了解机器学习经典算法

    常常有小伙伴在后台反馈:机器学习经典算法有哪些? 自学难度大又没有效果,该怎么办? CSDN为了解决这个难题,联合唐宇迪老师为大家带来了一场精彩的直播[一节课掌握机器学习经典算法-线性回归模型].本次 ...

  8. 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)

    Datawhale 作者:赵楠.杨开漠.谢文昕.张雨 寄语:本文针对5大机器学习经典算法,梳理了其模型.策略和求解等方面的内容,同时给出了其对应sklearn的参数详解和代码实现,帮助学习者入门和巩固 ...

  9. 机器学习经典算法之线性回归sklearn实现

    机器学习经典算法之线性回归sklearn实现 from sklearn import linear_model from sklearn import datasets import numpy as ...

最新文章

  1. 2017年流行的字体排版大全
  2. python实验二序列_python 学习笔记 二 序列, 列表, 元组, 字符串
  3. 首航节能:光热行业刚起步 子公司处于亏损状态
  4. 普通人看Build 2019 值得留心的亮点有哪些?
  5. 发布 Rafy .NET Standard 版本 Nuget 包
  6. h5应用 vue 钉钉_uniapp开发一个小视频应用(一)
  7. 前端程序员容易忽视的一些基础知识
  8. 本科阶段计算机专业的科学体系,【学习方法】一位大三本科生的计算机科学与技术学习反思录...
  9. 15种能力:决定了你的未来能走多远
  10. 获得邮件列表失败_邮件经常失败回弹很糟心?一定要知道这几个小知识
  11. 在国内程序员是吃青春饭的职业吗?
  12. 西瓜数据集的各种版本,比如说2.0,3.0,4.0都在这
  13. PSINS源码阅读—STIM300/GNSS组合导航
  14. 哈佛,斯坦福和麻省理工学院等投资加密货币基金
  15. 数字证书X509格式标准简介
  16. 研究目标与研究内容的撰写
  17. ssm+vue学生网络作业管理系统java maven
  18. 自由软件之父:“苹果公司罪大恶极”
  19. 一大波折叠屏手机就要来了,你会买吗? 1
  20. 在cmd命令行中弹出Windows对话框

热门文章

  1. ik分词器的热词更新_ik与拼音分词器,拓展热词/停止词库
  2. python 日期 格式转换 英文_python 中英文时间转换
  3. 小米电脑开机遇到No Bootable Device
  4. #我的年度用车总结#强烈安利 AION Y Plus 用车必备套件
  5. linux memcpy需要头文件,memcpy函数详解
  6. 怎么把U盘只读改成可读写
  7. 计算机软件求职方向及简历制作注意事项
  8. js创建数组(js创建数组并填充数据)
  9. cumsum()函数
  10. 未开通Volte时的拨打/接通电话——CU