指数加权移动平均(Exponential Weighted Moving Average)
一、EMA 简介
1、演化
- 算术平均(
权重相等
)—>加权平均(权重不等
)—>移动平均(大约是只取最近的 N 次数据进行计算
)—> 批量归一化(BN
)及各种优化算法的基础 - EMA:是以
指数式递减
加权的移动平均,各数值的加权影响力
随时间呈指数式递减,时间越靠近当前时刻的数据加权影响力越大
2、公式及理解
- vt=βvt−1+(1−β)θtvt=βvt−1+(1−β)θtv_t = \beta v_{t-1} + (1 - \beta)\theta_{t},公式中 θtθt\theta_{t} 为 t 时刻的实际温度;系数 ββ\beta 表示加权下降的快慢,值越小权重下降的越快;vtvtv_t 为 t 时刻 EMA 的值。
- 当 v0=0v0=0v_0 = 0 时,可得:vt=(1−β)(θt+βθt−1+β2θt−2+...+βt−1θ1)vt=(1−β)(θt+βθt−1+β2θt−2+...+βt−1θ1)v_t = (1-\beta) (\theta_{t}+\beta\theta_{t-1}+\beta^{2}\theta_{t-2}+ ... +\beta^{t-1}\theta_{1}),从公式中可以看到:每天温度(θθ\theta)的权重系数以
指数等比形式
缩小,时间越靠近当前时刻的数据加权影响力越大。 - 在优化算法中,我们一般取 β>=0.9β>=0.9\beta >= 0.9,而 1+β+β2+...+βt−1=1−βt1−β1+β+β2+...+βt−1=1−βt1−β1 + \beta + \beta^{2} + ... + \beta^{t-1} = \frac{1-\beta^{t}}{1-\beta},所以当 t 足够大时 βt≈0βt≈0\beta^{t} \approx 0,此时便是严格意义上的指数加权移动平均。
- 在优化算法中,我们一般取 β>=0.9β>=0.9\beta >= 0.9,此时有 β11−β≈1e≈0.36β11−β≈1e≈0.36\beta^{\frac{1}{1-\beta}} \approx \frac{1}{e} \approx 0.36,也就是说 N=11−βN=11−βN = \frac{1}{1-\beta} 天后,曲线的高度下降到了约原来的 1313\frac{1}{3},由于时间越往前推移 θθ\theta 权重越来越小,所以相当于说:我们每次只考虑最近(latest) N=11−βN=11−βN = \frac{1}{1-\beta} 天的数据来计算当前时刻的 EMA,这也就是
移动
平均的来源。
二、EMA 偏差修正
- 在 β=0.98β=0.98\beta = 0.98 时,理想状况下,我们应该能得到绿色曲线,然而现实我们得到的却是紫色曲线,它的起点比真实的要低很多,不能很好的估计起始位置的温度,此问题称为:冷启动问题,这是由于 v0=0v0=0v_0 = 0 造成的。
解决方案
:将所有时刻的 EMA 除以 1−βt1−βt1 - \beta^{t} 后作为修正后的 EMA。当 t 很小时,这种做法可以在起始阶段的估计更加准确;当 t 很大时,偏差修正几乎没有作用,所以对原来的式子几乎没有影响。注意
:我们一般取 β>=0.9β>=0.9\beta >= 0.9,计算 t 时刻偏修正后的 EMA 时,用的还是 t−1t−1t-1 时刻修正前的EMA。
三、EMA 的优点及其应用理解
1、EMA 的优点
它占用极少内存
:计算指数加权平均数只占用单行数字的存储和内存,然后把最新数据代入公式,不断覆盖就可以了
。- 移动平均线能较好的反应
时间序列的变化趋势
,权重的大小不同起到的作用也是不同,时间比较久远的变量值的影响力相对较低,时间比较近的变量值的影响力相对较高
。
2、EMA 在 Momentum 优化算法中应用的理解
- 假设每次梯度的值都是 ggg、γ=0.95" role="presentation">γ=0.95γ=0.95\gamma = 0.95 ,此时参数更新幅度会
加速下降
,当 n 达到 150 左右,此时达到了速度上限,之后将匀速下降
(可参考一中的公式理解)。 - 假如,在某个时间段内一些参数的梯度方向与之前的不一致时,那么真实的参数更新幅度会变小;相反,若在某个时间段内的参数的梯度方向都一致,那么其真实的参数更新幅度会变大,起到
加速收敛
的作用。在迭代后期,由于随机噪声问题,经常会在收敛值附近震荡,动量法会起到减速作用,增加稳定性
。
四、参考资料
1、Coursera:Exponentially-Weighted-Moving-Averages
2、Gluon:优化算法中关于 EMA 的讲解
3、优化算法之指数移动加权平均
指数加权移动平均(Exponential Weighted Moving Average)相关推荐
- EWMA之——EWMA指数加权移动平均模型的Java实现
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79141435 具体代码如下: package com.lyz.storm.ewma ...
- EWMA 指数加权移动平均 模型
Exponentially Weighted Moving Average(EWMA)指数加权移动平均是一种常用的序列数据处理方式,如下: 在时间 t, 根据实际的观测值(或量测值)我们可以求取 EW ...
- 神经网络基础--指数加权移动平均ewma
因为神经网络中的常用优化算法都会涉及到指数加权移动平均(exponential weighted moving average, ewma:也可称为exponential moving average ...
- EWMA(Exponentially Weighted Moving Average)指数加权移动平均
原博:http://blog.csdn.net/sony_zhang/article/details/7256646 EWMA(Exponentially Weighted Moving Averag ...
- 信号采样基本概念 —— 5. 加权移动平均滤波(Weighted Moving Average Filtering)
在上一章,我们介绍了使用滑动窗口以及平均值denoising,那么既然可以使用平均值denoising,那么也必然可以用权重替代均值进行denoising. 文章目录 什么是加权移动平均滤波(Weig ...
- java 移动平均_EWMA之——EWMA指数加权移动平均模型的Java实现
具体代码如下: package com.lyz.storm.ewma; import java.io.Serializable; /** * 实现指数移动平均值计算 * 实现中使用了流式风格的buil ...
- Python 金融量化 均线系统交易策略专题(简单移动平均,加权移动平均,指数加权移动平均,异同移动平均MACD等解读与绘图)
捕捉趋势最普遍的方法为移动平均线,根据求平均的方式不同,移动平均数又可分为简单移动平均数(Simple Moving Average, SMA),加权移动平均数(Weighted Moving Ave ...
- EWMA 指数加权移动平均
EWMA(Exponentially Weighted Moving Average)指数加权移动平均,是一种常用的序列数据处理方式. 在t时刻,根据实际的观测值可以求取EWMA(t):EWMA(t) ...
- java判断均线_EWMA:EWMA指数加权移动平均模型的Java实现
具体代码如下: package com.lyz.storm.ewma; import java.io.Serializable; /** * 实现指数移动平均值计算 * 实现中使用了流式风格的buil ...
- 移动平均(Moving Average)
作者:石川 链接:https://zhuanlan.zhihu.com/p/38276041 来源:知乎 已获得作者同意转载. 1 前言 移动平均(Moving Average,MA),又称移动平均线 ...
最新文章
- 《Arduino开发实战指南:机器人卷》一2.1 数字I/O口的操作函数
- Tomcat - ClassFormatException的解决方法
- 玩转Linux:常用命令实例指南
- 搭建WEB服务详解(二)
- 如何让控件span的id调用ajax_微服务架构之「 调用链监控 」
- 超实用!19条Android平台设计规范
- Twitch未来五年的视频编码战略:从H.264到 AV1
- 实现灵活的IT架构的三个要点
- 多份word合并 保留不同页眉_如何给Word设置不同页眉和页脚?
- Flink – submitJob
- C# XML加载屏蔽注释 忽略注释的加载
- 常用算法案例之贪心法(C语言)
- B站 (哔哩哔哩) 泄露源码中的有趣片段(彩蛋)
- 5.10300 - Ecological Premium
- CentOS官网下载所需版本的CentOS版本方法
- 没看到能打的,遍历目录并读取目录下的文件列表。(C语言,SDK)
- [ERP/鼎捷E10]VMI业务在E10中的处理
- jQuery TreeGrid
- Android 关于佳博和汉印蓝牙热敏打印机开发
- MNL——多项Logit模型学习笔记(三)二项Logit模型、Gumble分布以及Logistic分布
热门文章
- 北京科技大学计算机考研
- 环形10个树洞兔子c语言设计,[阅读打卡]I am a Bunny+提高孩子的欣赏能力我是一只小兔子,我的名字叫尼古拉斯 我住在一个树洞里面 在春天的时候,我喜欢看美丽的花儿,有...
- The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals
- 国内外优秀计算机视觉团队汇总(2020)
- adbdriver的安装
- OTA三种差分算法安装使用。bsdiff,hdiffpatch,xdelta3
- 属牛的女孩取名:优美文雅、声声入耳的女孩名字
- 华为手撕代码+剑指offer总结 (python+c语言)
- CAA-几何图形集下直接添加参数
- View是什么,什么是View?