Batch Norm

Batch Norm

本文总结自吴恩达深度学习系列视频:优化深层神经网络的Batch Norm部分,有所删减。

在tensorflow中,实现Batch Norm只需要一行代码:

tf.nn.batch_normalization

Bactch Normalization通过标准化让激活函数分布在线性区间,结果就是加大了梯度,让模型更大胆的进行梯度下降。

下面我们就了解一下Batch Norm的基本原理和计算方法。

Normalizing inputs to speed up learning

回想之前对输入层的规范化(Normalization)操作:

它使得梯度下降要走的路程从一个扁圆的椭圆变成了一个相对标准的圆,这意味着从起始点到最优点的距离变短了,所以它可以加快学习速度。

那我们能不能对激活层计算出的激活值也应用Normalization呢? 答案是可以的。

Implementing Batch Norm

Given some intermediate values in NN Z(1),...Z(m)Z^{(1)},...Z^{(m)}Z(1),...Z(m)

μ=1m∑i(Zi−μ)2\mu=\frac{1}{m}\sum_i^(Z_i-\mu)^2μ=m1​∑i(​Zi​−μ)2

Znorm(i)=Z(i)−μσ2+ϵZ_{norm}^{(i)}=\frac{Z^{(i)-\mu}}{\sqrt{\sigma^2+\epsilon}}Znorm(i)​=σ2+ϵ​Z(i)−μ​

Z~(i)=γZnorm(i)+β\widetilde{Z}^{(i)}=\gamma Z_{norm}^{(i)}+\betaZ(i)=γZnorm(i)​+β

参与网络计算的时候,我们使用Z~[l](i)\widetilde{Z}^{[l](i)}Z[l](i)而不是Z[l](i)Z^{[l](i)}Z[l](i)。

注意到: 如果γ=σ2+ϵ\gamma=\sqrt{\sigma^2+\epsilon}γ=σ2+ϵ​,β=μ\beta=\muβ=μ,那么Z~[l](i)=Z[l](i)\widetilde{Z}^{[l](i)}=Z^{[l](i)}Z[l](i)=Z[l](i),退化到没有对激活层使用normalization。

所以这跟对输入层规范化的区别在于,我们不希望隐藏层被强制成mean 0和variance 1。我们使用两个参数γ\gammaγ和β\betaβ来控制mean和variance,使得隐藏层有不同的计算分布,上述取值不会使用。

网络实现

在梯度下降算法中把上述式子加进去,就能在网络中实现。

因为我们减去了平均值μ\muμ,那么parameter bbb可以略去,因为不管bbb取任何值都在Normalization过程中被减掉了。

同理也可以在其他优化算法中实现。

更详细的说明,请参考: http://www.cnblogs.com/bonelee/p/8528722.html

从别的角度理解Batch Normalization

Covariate Shift

x→yx\rightarrow yx→y

从x到y的映射中,如果x发生了变动,应用同样的映射可能无法正确映射到y如下图这个猫从黑色变成其他颜色的例子。

更糟糕的情况可能是映射(即函数)也发生了改变,那么整个映射都不在有效。

这对于深层次的神经网络来说是一个问题。

Batch Normd修正了convariate shift

从网络第三层的角度来看,它之前的隐藏值随着时间不断发生变化,所以网络存在covariate shift的问题。

Batch Norm所做的事情是,它减小了这些隐藏层变动的幅度。 本小节重点在于: 执行Batch Norm意味着,从本例第三层角度来看,它通过将前面的层的值使用两个参数γ\gammaγ和β\betaβ限制在同一mean和variance,从而减小了这些值的偏移。这使得其之后层的学习变得更容易进行。

Batch Norm与正则化

  • 每一个mini-batch都被计算出的mean/variance缩放了。
  • 这在计算Z[l]Z^{[l]}Z[l]的值时,加入了一些噪音。仅从加入噪音这点而言,与dropout类似。
  • 但是其加入噪音的程度仅有一点点,很轻微,只能被视作是小小的副作用,不能认为也同时进行了regularization。所以Batch Norm和dropout会同时使用。

原英文解释如下: Because by adding noise to the hidden units, it’s forcing the downstream hidden units not to rely on too much on any one hidden unit. And so similar to dropout, it adds noise to the hidden layers and therefore has a very slight regularization effect. Because the noise added is quite small, this is not a huge regularization effect and you might choose to use batch norm together with dropout if you want the more powerful regularization effect of dropout.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《数据结构》 定长顺序串常用操作代码集合

    代码来自老师上课使用的ppt或者课本 /*定长顺序串*/ #define MAXLEN 40 typedef struct { char ch[M...

    Steve Wang
  • Python 函数

    Python的函数与其他语言的函数概念上是一致的,只是形式上有所不同。在面向过程的编程语言中(C语言),函数是代码的基本组成形式,是功能的基本模块;在面向...

    Steve Wang
  • 多任务学习(multi-task learning)

    在多任务学习中,你开始就使用一个神经网络同时做几个任务,并且希望这些任务里的每一个都可以帮助到其他的任务。

    Steve Wang
  • Fork/Jion框架详解

    如果你要处理1万条数据,但是你的能力暂时还不够,一个简单快捷的办法就是你可以把每次只处理100条,等到处理100次之后再把所有的结果聚合起来你就处理完了这1万条...

    Java学习录
  • 【编程练习】3*3 的矩阵,值限定为1-9不重复,已知横竖的和,和一个斜着的值,求这个矩阵

    x     x     x 11 x     x     x 15 x     x     x 19

    流川疯
  • 第三十五章:SpringBoot与单元测试的小秘密

    恒宇少年
  • 什么是优秀的图表示?斯坦福提出首个信息论原则——图信息瓶颈

    图表示学习旨在基于图结构数据学习表示,并用于节点分类、链路预测等下游任务。由于节点特征和图结构包含重要信息,因此图表示学习任务具备一定的挑战性。图神经网络(GN...

    机器之心
  • 乐视又欠钱了,这次要失去亚足联赛事的转播权

    镁客网
  • 机器学习数据预处理:数据降维之PCA

    《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来...

    double
  • 揭秘马尔可夫模型神秘面纱4

    维特比算法解决:问题2(解码问题):给定一个观察序列O和一个HMM λ=(A,B),找出最好的隐藏状态序列Q。

    伏草惟存

扫码关注云+社区

领取腾讯云代金券