指数加权平均(exponentially weighted averges),也叫指数加权移动平均,是一种经常使用的序列数据处理方式。算法
它的计算公式以下:函数
其中,学习
例如:优化
咱们有这样一组气温数据,图中横轴为一年中的第几天,纵轴为气温:spa
直接看上面的数据图会发现噪音不少,3d
这时,咱们能够用 指数加权平均 来提取这组数据的趋势,orm
按照前面的公式计算:blog
这里先设置 β = 0.9,首先初始化 V_0 = 0,而后计算出每一个 V_t:io
将计算后获得的 V_t 表示出来,就获得红色线的数值:form
能够看出,红色的数据比蓝色的原数据更加平滑,少了不少噪音,而且刻画了原数据的趋势。
指数加权平均,做为原数据的估计值,不只能够 1. 抚平短时间波动,起到了平滑的做用,
能够看出,红色的数据比蓝色的原数据更加平滑,少了不少噪音,而且刻画了原数据的趋势。
指数加权平均,做为原数据的估计值,不只能够 1. 抚平短时间波动,起到了平滑的做用,
上面提到了一些 指数加权平均 的应用,这里咱们着重看一下在优化算法中的做用。
以 Momentum 梯度降低法为例,
Momentum 梯度降低法,就是计算了梯度的指数加权平均数,并以此来更新权重,它的运行速度几乎老是快于标准的梯度降低算法。
这是为何呢?
让咱们来看一下这个图,
例如这就是咱们要优化的成本函数的形状,图中红点就表明咱们要达到的最小值的位置,
假设咱们从左下角这里出发开始用梯度降低法,那么蓝色曲线就是一步一步迭代,一步一步向最小值靠近的轨迹。
能够看出这种上下波动,减慢了梯度降低法的速度,并且没法使用更大的学习率,由于若是用较大的学习率,可能会偏离函数的范围。
若是有一种方法,可使得在纵轴上,学习得慢一点,减小这些摆动,可是在横轴上,学习得快一些,快速地从左向右移移向红点最小值,那么训练的速度就能够加快不少。
这个方法就是动量 Momentum 梯度降低法,它在每次计算梯度的迭代中,对 dw 和 db 使用了指数加权平均法的思想,
这样咱们就能够获得如图红色线的轨迹:
根据前面的计算式子:
将 V_{100} 展开获得:
这里能够看出,V_t 是对天天温度的加权平均,之因此称之为指数加权,是由于加权系数是随着时间以指数形式递减的,时间越靠近,权重越大,越靠前,权重越小。
再来看下面三种状况:
当 β = 0.9 时,指数加权平均最后的结果如图红色线所示,表明的是最近 10 天的平均温度值;
当 β = 0.98 时,指结果如图绿色线所示,表明的是最近 50 天的平均温度值;
当 β = 0.5 时,结果以下图黄色线所示,表明的是最近 2 天的平均温度值;
β 越小,噪音越多,虽然可以很快的适应温度的变化,可是更容易出现奇异值。
β 越大,获得的曲线越平坦,由于多平均了几天的温度,这个曲线的波动更小。
但有个缺点是,由于只有 0.02 的权重给了当天的值,而以前的数值权重占了 0.98 ,
曲线进一步右移,在温度变化时就会适应地更缓慢一些,会出现必定延迟。
经过上面的内容可知,β 也是一个很重要的超参数,不一样的值有不一样的效果,须要调节来达到最佳效果,通常 0.9 的效果就很好。