zoukankan      html  css  js  c++  java
  • 16、指数加权平均算法介绍及偏差修正

    一、指数加权平均算法介绍

    引言

      在了解指数加权平均之前,首先我们需要回顾一下求平均数的相关概念,从而进行进一步理解与引导。

    如何求平均数

      平均数求法数学公式:

           

      现在举例说明:比如我们现在有100天的温度值,要求这100天的平均温度值(24,25,24,26,34,28,33,33,34,35..........32),我们可以直接用公式进行运算。

    ,通过此公式就可以直接求出10天的平均值。而我们要介绍的指数加权平均本质上就是一种近似求平均的方法。

    指数加权平均介绍

       公式:

      参数说明:

    第t天的平均温度值
    第t天的温度值
    可调节的超参数值

      假如=0.9,我们可以得到指数平均公式下的平均值求法如下:

      通过上面表达式,我们可以看到,V100等于每一个时刻天数的温度值再乘以一个权值。指数加权平均的结果是由当天温度值乘以指数衰减函数值,然后类和求得!

      本质就是以指数式递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。

    而在我们上面提到的普通平均数求法,它的每一项的权值都是一样的,如果有n项,权值都为1/n。

    指数加权平均优势

      推导过程如下:

      我们可以看到指数加权平均的求解过程实际上是一个递推的过程,那么这样就会有一个非常大的好处,每当我要求从0到某一时刻(n)的平均值的时候,我并不需要像普通求解平均值的作为,保留所有的时刻值,类和然后除以n。而是只需要保留0-(n-1)时刻的平均值和n时刻的温度值即可。也就是每次只需要保留常数值,然后进行运算即可,这对于深度学习中的海量数据来说,是一个很好的减少内存和空间的做法。

     二、指数加权平均算法偏差修正

      我们首先来看一个图:

      假设β=0.98时,指数加权平均结果如上图绿色曲线所示。但是实际上,真实曲线如紫色曲线所示,修正这种问题的方法是进行偏移校正(bias correction)。即在每次计算完Vt后,对Vt进行下式处理:

      在刚开始的时候,t比较小,(1βt)<1(1−βt)<1,这样就将VtVt修正得更大一些,效果是把紫色曲线开始部分向上提升一些,与绿色曲线接近重合。随着t增大,(1βt)1(1−βt)≈1,Vt基本不变,紫色曲线与绿色曲线依然重合。这样就实现了简单的偏移校正,得到我们希望的绿色曲线。
      值得一提的是,机器学习中,偏移校正并不是必须的。因为,在迭代一次次数后(t较大),Vt受初始值影响微乎其微,紫色曲线与绿色曲线基本重合。所以,一般可以忽略初始迭代过程,等到一定迭代之后再取值,这样就不需要进行偏移校正了。

    参考:https://zhuanlan.zhihu.com/p/29895933

  • 相关阅读:
    mysql存储过程
    命令简写 ~/.bash_aliases
    TestCafe 快速上手 (三)
    TestCafe 快速上手 (二)
    OWASP 文档
    读书笔记
    读书笔记
    类数组转化为真正的数组
    Vue子组件向父组件传递数据
    node.js取参四种方法req.body,req.params,req.param,req.body
  • 原文地址:https://www.cnblogs.com/hzzhbest/p/15268008.html
Copyright © 2011-2022 走看看