指数加权平均

指数加权平均,第1张

1. 定义

滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以用来估计变量的局部均值,使得变量的更新与一段时间内的历史取值有关。

2. 通俗解释

变量 在 𝑡 时刻记, 为变量 𝑣在 𝑡 时刻的取值,即在不使用滑动平均模型时 ,在使用滑动平均模型后,的更新公式如下: 

上式中,𝛽∈[0,1)β∈[0,1)。若β=0 相当于没有使用滑动平均。

3. 代码实现

class EMA():
    def __init__(self, decay):
        self.decay = decay
        self.shadow = {}

    def register(self, name, val):
        self.shadow[name] = val

    def get(self, name):
        return self.shadow[name]

    def update(self, name, x):
        assert name in self.shadow
        new_average = (1.0 - self.decay) * x + self.decay * self.shadow[name]
        print(new_average)
        self.shadow[name] = new_average
# 假如a是第一个epoch后的参数
a = {"a":0.1,"b":0.2,'c':0.3,'d':1}
ema = EMA(0.5)


for name in a:
    ema.register(name, a[name])
# 假如a是第二个epoch后的参数
a = {"a":0.2,"b":0.3,'c':0.4,'d':2}
for name in a:
    ema.update(name, a[name]) 

 输出结果如下:

0.15000000000000002
0.25
0.35
1.5

4. 参考

理解滑动平均(exponential moving average) - wuliytTaotao - 博客园

机器学习模型性能提升技巧:指数加权平均(EMA)_mikelkl的博客-CSDN博客_模型ema

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/875288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存