主要内容:
一、Normalizing activations in a network
二、Fitting Batch Norm in a neural network
三、Why does Batch Norm work?
四、Batch Norm at test time
 
 
 
一、Normalizing activations in a network
 1、在浅层机器学习算法中,如logistics regression,我们通常使用normalization来加速梯度下降。那么同样,我们也可以把normalization运用于神经网络。
2.在神经网络中,不仅有X作为最初的输入,还有当前层的激活值a[l]作为下一层的输入。因此,我们不仅仅对输入层做特征归一化处理,同样需要对隐藏层做归一化处理。
3、在Batch Norm中,一般是对输入激活函数之前的z做归一化处理,而不是激活值a。 其步骤如下:
可以看出,前三步与浅层机器学习算法的normalization无异,只是多了第四步。而第四步的作用就是将归一化的z再做一下缩放和平移(线性变换),因为有时候可能不希望隐藏层的z的均值和方差总是等于0和1。如在激活函数sigmod中,我们不希望输入值z的均值和方差为0和1,使得sigmod被利用的仅仅为线性部分:
 
 
 
 
二、Fitting Batch Norm in a neural network
1、将Batch Norm运用于整个神经网络,其步骤如下:
2、需要学习的参数有:
3、在实际中,Batch Norm通常和mini-batch gradient descent一起使用:
注意:z[t]经过归一化后其均值为0,而z[t] = w[t-1]a[t-1]+b[t],所以b[t]实际是无意义的,它其实就是一个偏移值,而归一化后就去掉了偏移值。所以在这里可以不考虑b[t]。
 
 
 
三、Why does Batch Norm work?
1、通过特征归一化,使得输入值的均值和方差变成0和一,这样能加速梯度下降。
2、解决了covariate shift的问题。covariate shift的大概意思就是:当输入值的分布情况发生了变化,那么原先学习到的算法将不再适用于新的输入。比如对于神经网络的第t层,他们的输入 值的分布情况取决于前面层的参数,而这些参数在学习过程中是不断变化的,因此第t层的输入值的分布也是不断变化了,那么学习将变得无效。而引入batch norm后,每一层输入的分布变得稳定了,那就是N(0,1)再经过线性调整,因此学习变得有效了。
 
 
 
四、Batch Norm at test time
1、在测试时,同样需要对输入进行batch norm。根据batch norm的式子,我们需要计算均值和方差,但是计算测试数据的均值和方差是不合适的,比如当测试数据个数为1时,均值和方差变得无意义的。
2、测试数据的均值和方差,通常是在mini-batch gradient descent的时候通过指数加权平均求得。
 
 
 
 
 

吴恩达深度学习笔记(十二)—— Batch Normalization的更多相关文章

  1. 【Deeplearning.ai 】吴恩达深度学习笔记及课后作业目录

    吴恩达深度学习课程的课堂笔记以及课后作业 代码下载:https://github.com/douzujun/Deep-Learning-Coursera 吴恩达推荐笔记:https://mp.weix ...

  2. 吴恩达深度学习笔记(八) —— ResNets残差网络

    (很好的博客:残差网络ResNet笔记) 主要内容: 一.深层神经网络的优点和缺陷 二.残差网络的引入 三.残差网络的可行性 四.identity block 和 convolutional bloc ...

  3. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(二)

    经典网络 LeNet-5 AlexNet VGG Ng介绍了上述三个在计算机视觉中的经典网络.网络深度逐渐增加,训练的参数数量也骤增.AlexNet大约6000万参数,VGG大约上亿参数. 从中我们可 ...

  4. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(CNN)(上)

    作者:szx_spark 1. Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十 ...

  5. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(一)

    Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十分方便,便于指出过滤器的位置. ...

  6. 吴恩达深度学习笔记(deeplearning.ai)之循环神经网络(RNN)(三)

    1. 导读 本节内容介绍普通RNN的弊端,从而引入各种变体RNN,主要讲述GRU与LSTM的工作原理. 事先声明,本人采用ng在课堂上所使用的符号系统,与某些学术文献上的命名有所不同,不过核心思想都是 ...

  7. 吴恩达深度学习笔记(七) —— Batch Normalization

    主要内容: 一.Batch Norm简介 二.归一化网络的激活函数 三.Batch Norm拟合进神经网络 四.测试时的Batch Norm 一.Batch Norm简介 1.在机器学习中,我们一般会 ...

  8. 吴恩达深度学习笔记1-神经网络的编程基础(Basics of Neural Network programming)

    一:二分类(Binary Classification) 逻辑回归是一个用于二分类(binary classification)的算法.在二分类问题中,我们的目标就是习得一个分类器,它以对象的特征向量 ...

  9. 吴恩达深度学习笔记(十一)—— dropout正则化

    主要内容: 一.dropout正则化的思想 二.dropout算法流程 三.dropout的优缺点 一.dropout正则化的思想 在神经网络中,dropout是一种“玄学”的正则化方法,以减少过拟合 ...

随机推荐

  1. hdu 1816(二分+2-sat)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1816 思路:首先将每把钥匙i拆成两个点i和i+2n,分别表示选与不选,对于被分成n对的钥匙,由于只能选 ...

  2. [Python2.x] 利用commands模块执行Linux shell命令

    用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要 ...

  3. Android开发:《Gradle Recipes for Android》阅读笔记1.3

    想命令行执行gradle的构建,可以通过提供的gradle wrapper或者安装gradle. 构建android项目不需要安装gradle,因为android studio已经包含gradle.& ...

  4. jQuery EasyUI介绍

    官方定义:http://www.jeasyui.com/ what is JQuery EasyUI ? jQuery EasyUI framework helps you build your we ...

  5. EasyGBS国标流媒体视频平台接入海康、大华、宇视的摄像机、硬盘录像机NVR、国标下级平台的方案

    在上一篇<EasyNVR和EasyDSS云平台联手都不能解决的事情,只有国标GB28181能解决了>我们大致介绍了国标GB/T28181的使用场景,而且初步介绍了EasyGBS国标视频平台 ...

  6. python系列九:python3迭代器和生成器

    #!/usr/bin/python import sys '''迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退.迭代器有 ...

  7. XSL-FO Page Layout

    Simple Layout Let's take a look at the simple page layout that we saw earlier in the course. The sim ...

  8. Vue.js刷新当前页面

    Vue.js的路由跳转很强大,类似ajax的局部刷新,路由跳转时候页面是不刷新的,刷新当前页面的功能不建议用,但是有的时候确实需要刷新当前页面来实现某些需求,这个时候,我们有三 种方法可以实现. 第一 ...

  9. 检查arg是方法还是函数?

    from types import MethodType,FunctionType def check(arg): """ 检查arg是方法还是函数? :param ar ...

  10. 关于like %%的优化思路

    测试数据:2亿行,被筛选出的数据,3KW多行. 众所周知 like %str%无法走索引,但是我们如果实在是有这种需求要达到like '%str%'的筛选目的,怎么优化好一些呢? 以下是我的一些思考: ...