深度学习-BatchNormalization

转载:

随笔 - 67  文章 - 4  评论 - 84

 

理解滑动平均(exponential moving average)

对滑动平均的直观理解,以及滑动平均在tensorflow中的使用。

目录

1. 用滑动平均估计局部均值
2. TensorFlow中使用滑动平均来更新变量(参数)
3. 滑动平均为什么在测试过程中被使用?

1. 用滑动平均估计局部均值

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

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

 

v t =β⋅v t−1 +(1−β)⋅θ t  (1) (1)vt=β⋅vt−1+(1−β)⋅θt

 

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

  假设起始 v 0 =0 v0=0 ,β=0.9 β=0.9 ,之后每个时刻,依次对变量 v v 进行赋值,不使用滑动平均和使用滑动平均结果如下:

表 1  三种变量更新方式

t不使用滑动平均模型,即给v v 直接赋值θ θ

使用滑动平均模型,
按照公式(1)更新v v

使用滑动平均模型,
按照公式(2)更新v_biased v_biased

0, 1, 2,  ... ,  35[0, 10, 20, 10, 0, 10, 20, 30, 5, 0, 10, 20, 10, 0, 10, 20, 30, 5, 0, 10, 20, 10, 0, 10, 20, 30, 5, 0, 10, 20, 10, 0, 10, 20, 30, 5][0, 1.0, 2.9, 3.61, 3.249, 3.9241, 5.5317, 7.9785, 7.6807, 6.9126, 7.2213, 8.4992, 8.6493, 7.7844, 8.0059, 9.2053, 11.2848, 10.6563, 9.5907, 9.6316, 10.6685, 10.6016, 9.5414, 9.5873, 10.6286, 12.5657, 11.8091, 10.6282, 10.5654, 11.5089, 11.358, 10.2222, 10.2, 11.18, 13.062, 12.2558][0, 10.0, 15.2632, 13.321, 9.4475, 9.5824, 11.8057, 15.2932, 13.4859, 11.2844, 11.0872, 12.3861, 12.0536, 10.4374, 10.3807, 11.592, 13.8515, 12.7892, 11.2844, 11.1359, 12.145, 11.9041, 10.5837, 10.5197, 11.5499, 13.5376, 12.6248, 11.2844, 11.1489, 12.0777, 11.8608, 10.6276, 10.5627, 11.5365, 13.4357, 12.5704]

图 1:三种变量更新方式

  Andrew Ng在Course 2 Improving Deep Neural Networks中讲到,t t 时刻变量 v v 的滑动平均值大致等于过去 1/(1−β) 1/(1−β) 个时刻 θ θ 值的平均。这个结论在滑动平均起始时相差比较大,所以有了Bias correction,将 v t  vt 除以 (1−β t ) (1−βt) 修正对均值的估计。

  加入了Bias correction后,v t  vt 和 v_biased t  v_biasedt 的更新公式如下:

 

v t =β⋅v t−1 +(1−β)⋅θ t v_biased t =v t 1−β t   (2) (2)vt=β⋅vt−1+(1−β)⋅θtv_biasedt=vt1−βt

 

t t 越大,1−β t  1−βt 越接近 1,则公式(1)和(2)得到的结果 (v t  vt 和 v_biased t  v_biasedt )将越来越近,如图 1 所示。

  当 β β 越大时,滑动平均得到的值越和 θ θ 的历史值相关。如果 β=0.9 β=0.9 ,则大致等于过去 10 个 θ θ 值的平均;如果 β=0.99 β=0.99 ,则大致等于过去 100 个 θ θ 值的平均。

  滑动平均的好处:

占内存少,不需要保存过去10个或者100个历史 θ θ 值,就能够估计其均值。(当然,滑动平均不如将历史值全保存下来计算均值准确,但后者占用更多内存和计算成本更高)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值