指数加权移动平均法(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 之间 当 ...
随机推荐
- python基础学习(十二)变量进阶
目录 1. 变量的引用 1.1 引用的概念 1.2 变量引用 的实例 1.3 函数的参数和返回值的传递 2. 可变和不可变类型 哈希 (hash) 3. 局部变量和全局变量 3.1 局部变量 3.2 ...
- Mybatis框架基础支持层——反射工具箱之Reflector&ReflectorFactory(3)
说明:Reflector是Mybatis反射工具的基础,每个Reflector对应一个类,在Reflector中封装有该类的元信息, 以及基于类信息的一系列反射应用封装API public class ...
- C#设计模式之十三模板方法模式(Template Method Pattern)【行为型】
一.引言 “结构型”的设计模式已经写完了,从今天我们开始讲“行为型”设计模式.现在我们开始讲[行为型]设计模式的第一个模式,该模式是[模板方法],英文名称是:Template Method Patte ...
- Java自动内存管理机制学习(二):垃圾回收器与内存分配策略
备注:本文引自<深入理解Java虚拟机第二版>仅供参考 图片来自:http://csdn.net/WSYW126 垃圾收集器与内存分配策略 概述 GC要完成3件事: 哪些内存需要回收? 什 ...
- 微信小程序之封装http请求
下面将封装http请求服务部分的服务以及引用部分 // 本服务用于封装请求 // 返回的是一个promisepromise var sendRrquest = function (url, metho ...
- jquery 树形导航菜单无限级
转自:http://www.jb51.net/article/71615.htm 侵删<!DOCTYPE html> <html lang="en"> &l ...
- 【代码笔记】Web-JavaScript-JavaScript switch语句
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- Java环境变量搭建
安装JDK开发环境 jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.h ...
- WannaCry勒索比特币蠕虫病毒解决方案
WannaCry ransomware used in widespread attacks all over the world Customer Guidance for WannaCrypt a ...
- WPF:完美自定义MeaagseBox 动画 反弹 背景模糊 扁平化
不知道为什么,WPF的MeaageBox的风格还停留在Win 2000的风格... 很久前就想自己封装一个MessageBox出来,但是都只是简单的封装,不怎么具有通用性.这次终于搞完了. 使用方法和 ...