优化算法之指数加权平均详解

Posted 修炼之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化算法之指数加权平均详解相关的知识,希望对你有一定的参考价值。

本文的内容来自deeplearning.ai

一、什么是指数加权平均

指数加权平均(exponentially weighted averges)也叫指数加权移动平均,通过它可以来计算局部的平均值,来描述数值的变化趋势,下面通过一个温度的例子来详细介绍一下。

上面的图,是一个天与温度的变化关系,其中横轴表示的是一年中的第几天,纵轴表示的是该天的温度,1月份和12月份的温度相对于年中(6月、7月)的温度要低一些。

下面我们通过温度的局部平均值(移动平均值)来描述温度的变化趋势,通过下面的公式来计算平均值

在计算局部温度平均值的时候我们使用的是β等于0.9,计算出来的温度趋势,如下图的红色曲线。

β大于0.9(为0.98)的时候,局部温度平均值如下图所示

其中红线表示β为0.9时候的温度的加权平均值,绿线表示β为0.98时候的温度加权平均值,绿线相对于红线来说,更加平稳、稳定。相对于红线来说缺点就是,它向右平移了,产生了延迟,因为当β为0.98时,相当于平均了1/(1-0.98)=50天的温度,而β为0.9只是平均了10天的温度。

β小于0.9(为0.5)的时候,局部温度平均值如下图所示

其中黄线表示的是,当β为0.5时的加权温度平均,相对于红线来说,它抖动的更加厉害,因为它只平均了2天的温度,所以对于温度的趋势反馈能够更加的及时,更快的适应温度的变化,同时它也会带来更多的噪声(平均的天数太少)。

注意:在上面的不同β所对应的加权温度曲线中,当β为0.9时,表现最好。

二、指数加权平均的作用

在介绍指数加权平均的时候,介绍过了如何通过加权平均来计算局部温度的平均值,下面将式子展开

最后可以得到

其实上面的式子就是一个指数加权平均。

1、在上面为什么说当β为0.9时,只是平均了10天的温度。

如果你想要计算10天局部温度的平均值,你需要保存最近10的温度。而使用指数加权平均来计算局部平均值的时候,可以节省大量的空间,你只需要保存前一个加权平均值。相对于直接计算平均值而言,它的精确度没有那么高。

三、偏差修正

偏差修正的主要目的是为了提高指数加权平均的精确度,主要是针对前期的加权平均值的计算精度。

下面通过一个例子来说明一下

通过计算可以发现,前期的指数加权平均存在较大误差,下面通过偏差修正来减少前期指数加权平均的误差。

注意:如果你对于前期的局部平均值的精度没有要求,可以不用使用偏差修正,偏差修正主要是针对前期的局部平均值的误差。

以上是关于优化算法之指数加权平均详解的主要内容,如果未能解决你的问题,请参考以下文章

指数加权平均动量梯度下降法RMSpropAdam优化算法

指数加权平均动量梯度下降法RMSpropAdam优化算法

一文速学-时间序列分析算法之指数平滑法详解+Python代码实现

优化器算法optimizer

一文速学-时间序列分析算法之加权移动平均法详解+Python代码实现

梯度下降优化算(Momentum, AdaGrad, RMSprop, Adam)学习率退火