指数加权移动平均法(EWMA)
** 本文内容来自于吴恩达深度学习公开课
1、概述
加权移动平均法,是对观察值分别给予不同的权数,按不同权数求得移动平均值,并以最后的移动平均值为基础,确定预测值的方法。采用加权移动平均法,是因为观察期的近期观察值对预测值有较大影响,它更能反映近期变化的趋势。
指数移动加权平均法,是指各数值的加权系数随时间呈指数式递减,越靠近当前时刻的数值加权系数就越大。
指数移动加权平均较传统的平均法来说,一是不需要保存过去所有的数值;二是计算量显著减小。
2、算法理解
引入一个例子,例子为美国一年内每天的温度分布情况,具体如下图所示
EWMA 的表达式如下:
$v_t = \beta v_{t-1} + (1 - \beta) \theta_t$
上式中 $ \theta_t$ 为时刻 $ t$ 的实际温度;系数 $\beta$ 表示加权下降的速率,其值越小下降的越快;$v_t$ 为 $t$ 时刻 EWMA 的值。
在上图中有两条不同颜色的线,分别对应着不同的 $\beta$ 值。
当 $\beta = 0.9$ 时,有 $v_t = 0.9 v_{t-1} + 0.1 \theta_t$ ,对应着图中的红线,此时虽然曲线有些波动,但总体能拟合真实数据
当 $\beta = 0.98$ 时,有 $v_t = 0.98 v_{t-1} + 0.02 \theta_t$ ,对应着图中的绿线,此时曲线较平,但却有所偏离真实数据
在 $t=0$ 时刻,一般初始化 $v_0 = 0$ ,对 EWMA 的表达式进行归纳可以将 $t$ 时刻的表达式写成:
$ v_t = (1-\beta) (\theta_t + \beta\theta_{t-1}+ ... + \beta^{t-1}\theta_1) $
从上面式子中可以看出,数值的加权系数随着时间呈指数下降。在数学中一般会以 $\frac {1} {e}$ 来作为一个临界值,小于该值的加权系数的值不作考虑,接着来分析上面 $\beta = 0.9 $ 和 $\beta = 0.98$ 的情况。
当 $\beta = 0.9$ 时,$0.9^{10}$ 约等于 $\frac {1} {e}$ ,因此认为此时是近10个数值的加权平均。
当 $\beta = 0.98$ 时,$0.9^{50}$ 约等于 $\frac {1} {e}$,因此认为此时是近50个数值的加权平均。这种情况也正是移动加权平均的来源。
具体的分析如下图所示:
3、偏差修正
在初始化 $ v_0 = 0$ 时实际上会存在一个问题。具体的如下图所示:
从上图中可以看出有一条绿色和紫色的曲线,都是对应于 $\beta = 0.98$ 时的曲线。理想状况下应该是绿色的曲线,但当初始化 $v_0 = 0$ 时却会得到紫色的曲线,这是因为初始化的值太小,导致初期的数值都偏小,而随着时间的增长,初期的值的影响减小,紫色的曲线就慢慢和绿色的曲线重合。我们对公式做一些修改:
$ v_t = \frac {\beta {v_{t-1}} + {(1 - \beta)} \theta_t} {1 - \beta^t} $
当 $t$ 很小时,分母可以很好的放大当前的数值;当 $t$ 很大时,分母的数值趋于1,对当前数值几乎没有影响。
EWMA 主要是被应用在动量优化算法中,比如Adam算法中的一阶矩和二阶矩都采用了上面修改后的EWMA算法。
指数加权移动平均法(EWMA)的更多相关文章
- ubuntu之路——day8.2 深度学习优化算法之指数加权平均与偏差修正,以及基于指数加权移动平均法的动量梯度下降法
首先感谢吴恩达老师的免费公开课,以下图片均来自于Andrew Ng的公开课 指数加权平均法 在统计学中被称为指数加权移动平均法,来看下面一个例子: 这是伦敦在一些天数中的气温分布图 Vt = βVt- ...
- pandas 学习 第3篇:Series - 数据处理(应用、分组、滚动、扩展、指数加权移动平均)
序列内置一些函数,用于循环对序列的元素执行操作. 一,应用和转换函数 应用apply 对序列的各个元素应用函数: Series.apply(self, func, convert_dtype=True ...
- pandas处理时间序列(4): 移动窗口函数
六.移动窗口函数 移动窗口和指数加权函数类别如↓: rolling_mean 移动窗口的均值 pandas.rolling_mean(arg, window, min_periods=None, fr ...
- 面向初学者的指南:创建时间序列预测 (使用Python)
https://blog.csdn.net/orDream/article/details/100013682 上面这一篇是对 https://www.analyticsvidhya.com/blog ...
- 流量控制--6.Classful Queuing Disciplines (qdiscs)
Classful Queuing Disciplines 可以使用classful qdisc的代理来解锁Linux流量控制的灵活性和控制力.classful qdisc可以附加过滤器,允许将报文重定 ...
- Python:pandas(三)——DataFrame
官方文档:pandas之DataFrame 1.构造函数 用法 pandas.DataFrame( data=None, index=None, columns=None, dtype=None, ) ...
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.3_2.5_带修正偏差的指数加权平均
Optimization Algorithms优化算法 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.3 指数加权平均 举个例子,对于图中英国的温度数据计算移动平均值或者说是移动平均值( ...
- 改善深层神经网络_优化算法_mini-batch梯度下降、指数加权平均、动量梯度下降、RMSprop、Adam优化、学习率衰减
1.mini-batch梯度下降 在前面学习向量化时,知道了可以将训练样本横向堆叠,形成一个输入矩阵和对应的输出矩阵: 当数据量不是太大时,这样做当然会充分利用向量化的优点,一次训练中就可以将所有训练 ...
- 跟我学算法-吴恩达老师(mini-batchsize,指数加权平均,Momentum 梯度下降法,RMS prop, Adam 优化算法, Learning rate decay)
1.mini-batch size 表示每次都只筛选一部分作为训练的样本,进行训练,遍历一次样本的次数为(样本数/单次样本数目) 当mini-batch size 的数量通常介于1,m 之间 当 ...
随机推荐
- Java线程池 Executor框架概述
线程池的意义 循环利用线程资源,避免重复创建和销毁线程 线程池的任务是异步执行的,只要提交完成就能快速返回,可以提高应用响应性 Java线程池还有一个很重要的意义:Java线程池就是JDK 5 推出的 ...
- oracle中rownum的使用
rownum是系统的一个关键字,表示行号,是系统自动分配的,第一条符合要求的数据行号就是1,第二条符合要求的数据行号就是2. Rownum 不能直接使用 例:取前多少条数据: 取中间的一些数据: se ...
- 搭建基于nginx-rtmp-module的流媒体服务器
1.业务流程图 2.软件下载 2.1 windows下载obs 2.2 linux 安装nginx(附加rtmp模块) 1.cd /usr/local 2.mkdir nginx 3.cd nginx ...
- 微服务创建——Ubuntu搭建GitLab
Ubuntu呢,用的国产麒麟,可能对于用习惯了Windows操作系统的人来说使用UKylin会很难受吧,开发的人倒没什么,不过就是命令行的问题 那么,怎么搭建一个完整的GitLab呢,一步步来操作吧, ...
- Python 字符串拼接 sql ,造成 sql 注入例子
简单的 userinfo 表 字符串拼接 sql import pymysql # 测试环境的数据库连接 conn = pymysql.connect(host='192.168.0.214', po ...
- django请求和响应
本文转载自https://blog.csdn.net/xiaogeldx/article/details/88096341 HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建 ...
- IDEA项目搭建十四——Web站点Controller基类及布局页静态资源设计
一.简介 站点搭建完成后,编写页面时一般会有如下几个需求 1.嵌套静态页面时有很大一部分通用代码,如css.js这部分可以使用thymeleaf的局部片段代码块组成 2.这些静态资源默认放在程序中,但 ...
- Tomcat异常:The Tomcat server configuration at\Servers\Tomcat v9.0 Server at localhost-c
今天用Eclipse Java EE版写了几个java工程项目,然后再写java EE项目的jsp页面时,Tomcat出现了这个异常信息: 解决办法: 在菜单栏Window——>Preferen ...
- OkHttp的缓存
看到很多小伙伴对OkHttp的缓存问题并不是十分了解,于是打算来说说这个问题.用好OkHttp中提供的缓存,可以帮助我们更好的使用Retrofit.Picasso等配合OkHttp使用的框架.OK,废 ...
- MyBatis-Plus初步使用
在使用mybatis的过程中,我们会发现需要自己写很多的mapper和mapper.xml配置文件,很多时候会写到相当多的重复代码,特别是普通的增删改查,这样不仅会影响我们的开发效率,也会使得代码变的 ...