3.7 测试时的 BatchNorm-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授


←上一篇↓↑下一篇→
3.6 Batch Norm 为什么奏效回到目录3.8 Softmax 回归

测试时的 BatchNorm (Batch Norm at Test Time)

Batch归一化将你的数据以mini-batch的形式逐一处理,但在测试时,你可能需要对每个样本逐一处理,我们来看一下怎样调整你的网络来做到这一点。

在这里插入图片描述

回想一下,在训练时,这些就是用来执行Batch归一化的等式。在一个mini-batch中,你将mini-batch z ( i ) z^{(i)} z(i) 值求和,计算均值,所以这里你只把一个mini-batch中的样本都加起来,我用 m m m 来表示这个mini-batch中的样本数量,而不是整个训练集。然后计算方差,再算 z n o r m ( i ) z^{(i)}_{norm} znorm(i) ,即用均值和标准差来调整,加上 ϵ \epsilon ϵ 是为了数值稳定性。 z ~ \tilde{z} z~ 是用 γ \gamma γ β \beta β 再次调整 z n o r m z_{norm} znorm 得到的。

请注意用于调节计算的 μ \mu μ σ 2 \sigma^2 σ2 是在整个mini-batch上进行计算,但是在测试时,你可能不能将一个mini-batch中的6428或2056个样本同时处理,因此你需要用其它方式来得到 μ \mu μ σ 2 \sigma^2 σ2 ,而且如果你只有一个样本,一个样本的均值和方差没有意义。那么实际上,为了将你的神经网络运用于测试,就需要单独估算 μ \mu μ σ 2 \sigma^2 σ2 ,在典型的Batch归一化运用中,你需要用一个指数加权平均来估算,这个平均数涵盖了所有mini-batch,接下来我会具体解释。

在这里插入图片描述

我们选择 l l l 层,假设我们有mini-batch X [ 1 ] , X [ 2 ] , X [ 3 ] … … X^{[1]},X^{[2]},X^{[3]}…… X[1]X[2]X[3] 以及对应的 y y y 值等等,那么在为 l l l 层训练 X { 1 } X^{\{1\}} X{1} 时,你就得到了 μ [ l ] \mu^{[l]} μ[l] ,我还是把它写做第一个mini-batch和这一层的 μ \mu μ 吧,( μ [ l ] → μ { 1 } [ l ] \mu^{[l]}\rightarrow\mu^{\{1\}[l]} μ[l]μ{1}[l] )。当你训练第二个mini-batch,在这一层和这个mini-batch中,你就会得到第二个 μ \mu μ μ { 2 } [ l ] \mu^{\{2\}[l]} μ{2}[l] )值。然后在这一隐藏层的第三个mini-batch,你得到了第三个 μ \mu μ μ { 3 } [ l ] \mu^{\{3\}[l]} μ{3}[l] )值。正如我们之前用的指数加权平均来计算 θ 1 , θ 2 , θ 3 \theta_1,\theta_2,\theta_3 θ1θ2θ3 的均值,当时是试着计算当前气温的指数加权平均,你会这样来追踪你看到的这个均值向量的最新平均值,于是这个指数加权平均就成了你对这一隐藏层的 z z z 均值的估值。同样的,你可以用指数加权平均来追踪你在这一层的第一个mini-batch中所见的 σ 2 \sigma^2 σ2 的值,以及第二个mini-batch中所见的 σ 2 \sigma^2 σ2 的值等等。因此在用不同的mini-batch训练神经网络的同时,能够得到你所查看的每一层的 μ \mu μ σ 2 \sigma^2 σ2 的平均数的实时数值。

在这里插入图片描述

最后在测试时,对应这个等式( z n o r m ( i ) = z ( i ) − μ σ 2 + ϵ z_{norm}^{(i)}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^2+\epsilon}} znorm(i)=σ2+ϵ z(i)μ ),你只需要用你的 z z z 值来计算 z n o r m ( i ) z_{norm}^{(i)} znorm(i) ,用 μ \mu μ σ 2 \sigma^2 σ2 的指数加权平均,用你手头的最新数值来做调整,然后你可以用左边我们刚算出来的 z n o r m z_{norm} znorm 和你在神经网络训练过程中得到的 β \beta β γ \gamma γ 参数来计算你那个测试样本的 z ~ \tilde{z} z~ 值。

总结一下就是,在训练时, μ \mu μ σ 2 \sigma^2 σ2 是在整个mini-batch上计算出来的包含了像是64或28或其它一定数量的样本,但在测试时,你可能需要逐一处理样本,方法是根据你的训练集估算 μ \mu μ σ 2 \sigma^2 σ2 ,估算的方式有很多种,理论上你可以在最终的网络中运行整个训练集来得到 μ \mu μ σ 2 \sigma^2 σ2 ,但在实际操作中,我们通常运用指数加权平均来追踪在训练过程中你看到的 μ \mu μ σ 2 \sigma^2 σ2 的值。还可以用指数加权平均,有时也叫做流动平均来粗略估算 μ \mu μ σ 2 \sigma^2 σ2 ,然后在测试中使用 μ \mu μ σ 2 \sigma^2 σ2 的值来进行你所需要的隐藏单元 z z z 值的调整。在实践中,不管你用什么方式估算 μ \mu μ σ 2 \sigma^2 σ2 ,这套过程都是比较稳健的,因此我不太会担心你具体的操作方式,而且如果你使用的是某种深度学习框架,通常会有默认的估算 μ \mu μ σ 2 \sigma^2 σ2 的方式,应该一样会起到比较好的效果。但在实践中,任何合理的估算你的隐藏单元 z z z 值的均值和方差的方式,在测试中应该都会有效。

Batch归一化就讲到这里,使用Batch归一化,你能够训练更深的网络,让你的学习算法运行速度更快,在结束这周的课程之前,我还想和你们分享一些关于深度学习框架的想法,让我们在下一段视频中一起讨论这个话题。

课程PPT

在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
3.6 Batch Norm 为什么奏效回到目录3.8 Softmax 回归

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值