EMA(指数移动平均)及其深度学习应用
·
在深度学习中,经常会使用EMA(指数移动平均)这个方法对模型的参数做平均,以提高测试指标并增加模型鲁棒。
1.基于数学的介绍
1.1 公式例子
我们有关于“温度-天数”的数据
:在第t天的温度。
:第t天的移动平均数。
:权重参数。
图中红线即是蓝色数据点的指数移动平均。
1.2 和 之间的关系
大概表示前天的平均数据。(以第天做参考)
如:
大概表示前10天的平均数据 | 红线 | ||
大概表示前50天的平均数据 | 绿线 | ||
大概表示前2天的平均数据 | 黄线 |
那么越大,表示考虑的时间长度越长。
1.3 进一步理解
当,从往回写
...
迭代代入, … 得:
由此可知:
1.是的加权求和
2. 𝜃 前的系数相加起来为 1 或者逼近 1
当某项系数小于峰值系数(𝟏−𝜷)的𝟏/𝒆时,我们可以忽略它的影响
(0.9)^10 ~= 0.34 ~= 1/e 所以当β=0.9时,相当于前10天的加权平均。
(0.98)^50 ~= 0.36 ~= 1/e 所以当β=0.98时,相当于前50天的加权平均。
(0.5)^2 ~= 0.25 ~= 1/e 所以当β=0.5时,相当于前2天的加权平均。
2.在深度学习模型中的应用
:在第t次更新得到的所有参数权重。
:第t次更新的所有参数移动平均数。
:权重参数。
2.1 为啥EMA会有用
对于更新n次时普通的参数权重 (为第n次传播得到的梯度):
对于更新n次时使用EMA的参数权重 (此式中α为上面提到的参数β):
将代入表达式,并且令得:
对比两式:
普通的参数权重相当于一直累积更新整个训练过程的梯度,使用EMA的参数权重相当于使用训练过程梯度的加权平均(刚开始的梯度权值很小)。由于刚开始训练不稳定,得到的梯度给更小的权值更为合理,所以EMA会有效。
3.Pytorch实现EMA类
4.biggan实现的EMA
更多推荐
已为社区贡献3条内容
所有评论(0)