神经网络优化篇:详解指数加权平均数(Exponentially weighted averages)

发布时间 2024-01-12 09:57:50作者: Oten

指数加权平均数

比如这儿有去年伦敦的每日温度,所以1月1号,温度是40华氏度,相当于4摄氏度。世界上大部分地区使用摄氏度,但是美国使用华氏度。在1月2号是9摄氏度等等。在年中的时候,一年365天,年中就是说,大概180天的样子,也就是5月末,温度是60华氏度,也就是15摄氏度等等。夏季温度转暖,然后冬季降温。

用数据作图,可以得到以下结果,起始日在1月份,这里是夏季初,这里是年末,相当于12月末。

这里是1月1号,年中接近夏季的时候,随后就是年末的数据,看起来有些杂乱,如果要计算趋势的话,也就是温度的局部平均值,或者说移动平均值。

要做的是,首先使\(v_{0} =0\),每天,需要使用0.9的加权数之前的数值加上当日温度的0.1倍,即\(v_{1} =0.9v_{0} + 0.1\theta_{1}\),所以这里是第一天的温度值。

第二天,又可以获得一个加权平均数,0.9乘以之前的值加上当日的温度0.1倍,即\(v_{2}= 0.9v_{1} + 0.1\theta_{2}\),以此类推。

第二天值加上第三日数据的0.1,如此往下。大体公式就是某天的\(v\)等于前一天\(v\)值的0.9加上当日温度的0.1。

如此计算,然后用红线作图的话,便得到这样的结果。

得到了移动平均值,每日温度的指数加权平均值。

看一下上面的公式,\(v_{t} = 0.9v_{t - 1} +0.1\theta_{t}\),把0.9这个常数变成\(\beta\),将之前的0.1变成\((1 - \beta)\),即\(v_{t} = \beta v_{t - 1} + (1 - \beta)\theta_{t}\)

由于以后要考虑的原因,在计算时可视\(v_{t}\)大概是\(\frac{1}{(1 -\beta)}\)的每日温度,如果\(\beta\)是0.9,会想,这是十天的平均值,也就是红线部分。

来试试别的,将\(\beta\)设置为接近1的一个值,比如0.98,计算\(\frac{1}{(1 - 0.98)} =50\),这就是粗略平均了一下,过去50天的温度,这时作图可以得到绿线。

这个高值\(\beta\)要注意几点,得到的曲线要平坦一些,原因在于多平均了几天的温度,所以这个曲线,波动更小,更加平坦,缺点是曲线进一步右移,因为现在平均的温度值更多,要平均更多的值,指数加权平均公式在温度变化时,适应地更缓慢一些,所以会出现一定延迟,因为当\(\beta=0.98\),相当于给前一天的值加了太多权重,只有0.02的权重给了当日的值,所以温度变化时,温度上下起伏,当\(\beta\) 较大时,指数加权平均值适应地更缓慢一些。

可以再换一个值试一试,如果\(\beta\)是另一个极端值,比如说0.5,根据右边的公式(\(\frac{1}{(1-\beta)}\)),这是平均了两天的温度。

作图运行后得到黄线。

由于仅平均了两天的温度,平均的数据太少,所以得到的曲线有更多的噪声,有可能出现异常值,但是这个曲线能够更快适应温度变化。

所以指数加权平均数经常被使用,再说一次,它在统计学中被称为指数加权移动平均值,就简称为指数加权平均数。通过调整这个参数(\(\beta\)),或者说后面的算法学习,会发现这是一个很重要的参数,可以取得稍微不同的效果,往往中间有某个值效果最好,\(\beta\)为中间值时得到的红色曲线,比起绿线和黄线更好地平均了温度。