←上一篇 ↓↑ 下一篇→
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中的样本都加起来,我用 mmm 来表示这个mini-batch中的样本数量,而不是整个训练集。然后计算方差,再算 znorm(i)z^{(i)}_{norm}znorm(i)​ ,即用均值和标准差来调整,加上 ϵ\epsilonϵ 是为了数值稳定性。 z~\tilde{z}z~ 是用 γ\gammaγ 和 β\betaβ 再次调整 znormz_{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,接下来我会具体解释。

我们选择 lll 层,假设我们有mini-batch, X[1],X[2],X[3]……X^{[1]},X^{[2]},X^{[3]}……X[1],X[2],X[3]…… 以及对应的 yyy 值等等,那么在为 lll 层训练 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​ 的均值,当时是试着计算当前气温的指数加权平均,你会这样来追踪你看到的这个均值向量的最新平均值,于是这个指数加权平均就成了你对这一隐藏层的 zzz 均值的估值。同样的,你可以用指数加权平均来追踪你在这一层的第一个mini-batch中所见的 σ2\sigma^2σ2 的值,以及第二个mini-batch中所见的 σ2\sigma^2σ2 的值等等。因此在用不同的mini-batch训练神经网络的同时,能够得到你所查看的每一层的 μ\muμ 和 σ2\sigma^2σ2 的平均数的实时数值。

最后在测试时,对应这个等式( znorm(i)=z(i)−μσ2+ϵz_{norm}^{(i)}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^2+\epsilon}}znorm(i)​=σ2+ϵ​z(i)−μ​ ),你只需要用你的 zzz 值来计算 znorm(i)z_{norm}^{(i)}znorm(i)​ ,用 μ\muμ 和 σ2\sigma^2σ2 的指数加权平均,用你手头的最新数值来做调整,然后你可以用左边我们刚算出来的 znormz_{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 的值来进行你所需要的隐藏单元 zzz 值的调整。在实践中,不管你用什么方式估算 μ\muμ 和 σ2\sigma^2σ2 ,这套过程都是比较稳健的,因此我不太会担心你具体的操作方式,而且如果你使用的是某种深度学习框架,通常会有默认的估算 μ\muμ 和 σ2\sigma^2σ2 的方式,应该一样会起到比较好的效果。但在实践中,任何合理的估算你的隐藏单元 zzz 值的均值和方差的方式,在测试中应该都会有效。

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

课程PPT



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

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

  1. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  2. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  3. 3.1 基础模型-深度学习第五课《序列模型》-Stanford吴恩达教授

    基础模型 (Basic Model) 在这一周,你将会学习seq2seq(sequence to sequence)模型,从机器翻译到语音识别,它们都能起到很大的作用,从最基本的模型开始.之后你还会学 ...

  4. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  5. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  6. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  7. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  8. 1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 理解 Dropout 回到目录 1.9 归一化输入 其他正则化方法 (Other Regularization Methods) 除了 L2L2L2 正则化和随机失活 ...

  9. 3.6 BatchNorm 为什么起作用-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.5 将 Batch Norm 拟合进神经网络 回到目录 3.7 测试时的 Batch Norm BatchNorm 为什么起作用? (Why does Batch Nor ...

最新文章

  1. Java中方法和工作内存的关系_JMM中工作内存和主内存的关系
  2. 蜜罐中利用jsonp跨域漏洞和xss漏洞的分析
  3. openmv串口发送数据_关于arduino和openmv串口通信的问题
  4. 拯救者r7000怎么关闭触控板_联想拯救者R7000(2020版)上手体验,有没有AMD Yes?
  5. 天猫APP也可以点外卖了!饿了么接入天猫App
  6. fibonacci数列前20项_数学第十七课:数列综合应用第一弹
  7. python3.3 urllib.error.HTTPError: HTTP Error 403: Forbidden
  8. 数学四大思想八大方法_高中数学八种思维方法如何训练数学思维,高中数学的四大思想是什么?...
  9. 基因组测序、外显子测序和靶向测序有什么样的区别,如何选择?
  10. 文件夹批量重命名方法
  11. Error: java.lang.RuntimeException: Some file crunching failed, see logs for details
  12. 2017初二上期中考试总结
  13. 乔本生涯, 为什么要这样做
  14. 小米Recovery线刷精灵 v1.0.0 破解版
  15. 图像算法五 —— EM算法
  16. 2022年度总结与2023未来规划
  17. 阿里达摩院开源DAMO-YOLO:兼顾速度与精度的新目标检测框架
  18. bool 和_Bool的使用
  19. unity 陀螺仪 物体旋转和移动效果
  20. 计算机专业大创要求,计算机学院举行2018年度“大创项目”研究工作推进会

热门文章

  1. Linux CentOS7.0下JAVA安装和配置环境变量
  2. 函数atof,atoi,atol,strtod,strtol,strtoul 描述
  3. SQL Server 2008 R2 开启数据库远程连接
  4. 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16...
  5. java对象的生命周期及回收
  6. python对操作系统的目录和文件操作
  7. Linux输入不同颜色字体
  8. UA MATH564 概率论VI 数理统计基础4 t分布
  9. VS2012+WDK8.0搭建WDF驱动开发环境
  10. 谷歌地球API开发者指南(高级)