原理

输入层可以归一化,那么其他层也应该可以归一化。但是有个重要的问题,为什么要引入beta和gamma。

为什么要引入beta和gamma

  • 不总是要标准正态分布,否则会损失表达能力,作者以sigmoid函数为例进行说明。可以看到,标准正态分布(正负三倍标准差)正好落在sigmoid函数的线性部分。其他激活函数(ReLU系列)更有可能需要不同的分布。

  • 恒等映射

    如果beta和gamma正好是均值和标准差,那么变换之后得到的是该特征原来的分布。
  • 可以不要bias,因为会减均值

测试过程

  • 测试时,归一化过程往往针对一个输入,因此均值和方差需要在训练时学习。例如:
# training
running_mean = momentum * running_mean + (1 - momentum) * sample_mean
running_var = momentum * running_var + (1 - momentum) * sample_var # testing
output = gamma * (x-running_mean)/sqrt(running_var+epsilon) + beta

参数数量

  • 当前层的每个特征有各自的分布,因此BN是针对各个特征的
  • 对于CNN来说,n个激活图的层有4n个参数,beta,gamma以及running mean和running variance

BN的效果

  • 改善了网络中的梯度流
  • 可以使用更大的学习率
  • 降低了对权重初始化的要求
  • 提供一定程度的正则化

Why BN works?

covariate shift

数据的分布是变化的,已经学习到的映射(权重)在新的数据上需要重新训练。在隐藏层之间,称为internal covariate shift。

  • 当实际的映射(ground truth mapping)有shift时(网络没有训练好时)问题更严重

BN的作用

  • 使各层的输入数据具有相似的分布(正态分布)
  • 减小了internal covariate shift
    • 限制了当前层分布的变化,因此减小了对下一层的影响
    • 当前层可以改变数据的分布,因此减小了之前层的影响

Batch Normalization 笔记的更多相关文章

  1. 深度学习中batch normalization

    目录 1  Batch Normalization笔记 1.1  引包 1.2  构建模型: 1.3  构建训练函数 1.4  结论 Batch Normalization笔记 我们将会用MNIST数 ...

  2. 论文笔记:Batch Normalization

    在神经网络的训练过程中,总会遇到一个很蛋疼的问题:梯度消失/爆炸.关于这个问题的根源,我在上一篇文章的读书笔记里也稍微提了一下.原因之一在于我们的输入数据(网络中任意层的输入)分布在激活函数收敛的区域 ...

  3. batch normalization学习理解笔记

    batch normalization学习理解笔记 最近在Andrew Ng课程中学到了Batch Normalization相关内容,通过查阅资料和原始paper,基本上弄懂了一些算法的细节部分,现 ...

  4. 深度学习(二十九)Batch Normalization 学习笔记

    Batch Normalization 学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce 一.背景意义 ...

  5. Batch normalization:accelerating deep network training by reducing internal covariate shift的笔记

    说实话,这篇paper看了很久,,到现在对里面的一些东西还不是很好的理解. 下面是我的理解,当同行看到的话,留言交流交流啊!!!!! 这篇文章的中心点:围绕着如何降低  internal covari ...

  6. Batch Normalization 学习笔记

    原文:http://blog.csdn.net/happynear/article/details/44238541 今年过年之前,MSRA和Google相继在ImagenNet图像识别数据集上报告他 ...

  7. 神经网络Batch Normalization——学习笔记

    训练神经网络的过程,就是在求未知参数(权重).让网络搭建起来,得到理想的结果. 分类-监督学习. 反向传播求权重:每一层在算偏导数.局部梯度,链式法则. 激活函数: sigmoid仅中间段趋势良好 对 ...

  8. 从Bayesian角度浅析Batch Normalization

    前置阅读:http://blog.csdn.net/happynear/article/details/44238541——Batch Norm阅读笔记与实现 前置阅读:http://www.zhih ...

  9. caffe︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization

    一.深度学习中常用的调节参数 本节为笔者上课笔记(CDA深度学习实战课程第一期) 1.学习率 步长的选择:你走的距离长短,越短当然不会错过,但是耗时间.步长的选择比较麻烦.步长越小,越容易得到局部最优 ...

随机推荐

  1. oracle 层次化查询(生成菜单树等)

    1.简介:Oracle层次化查询是Oracle特有的功能实现,主要用于返回一个数据集,这个数据集存在树的关系(数据集中存在一个Pid记录着当前数据集某一条记录的Id). 2.层次化查询主要包含两个子句 ...

  2. Linux多个机器配置ssh免登陆

    多机器ssh免密码登录的教程,网上有很多,多的数不过来,但是我的安装过程不是很顺利,因为刚开始使用的是普通的user,虽然配置了sudo权限,但是没有root权限,导致了无论如何配置都不能实现免密码登 ...

  3. 将Mysql的一张表导出至Excel格式文件

    将Mysql的一张表导出至Excel格式文件 导出语句 进入mysql数据库,输入如下sql语句: select id, name, age from tablename into outfile ' ...

  4. 九度oj题目1342:寻找最长合法括号序列II

    题目1342:寻找最长合法括号序列II(25分) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:886 解决:361 题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然 ...

  5. JSON跨域问题总结

    一.跨域问题的原因: 1 浏览器的检查 2 跨域 3 XMLHttpRequest请求二.跨域问题的解决: 1 禁止浏览器检查:使用dos命令,在启动浏览器的时候,加一个参数:chrome --dis ...

  6. [转]angularjs之ui-grid 使用详解

    本文转自:http://blog.csdn.net/qhkabuqiluo/article/details/52237710 最近一段时间在使用angularjs 然后就找到ui-grid 这个比较不 ...

  7. linq——常用方法

    take  前几 skip   跳过前几 takeWhile   var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);  / ...

  8. .net core 填坑记之二目录问题(获取当前目录、创建目录)

    1.获取应用程序运行当前目录Directory.GetCurrentDirectory(). System.IO命名空间中存在Directory类,提供了获取应用程序运行当前目录的静态方法GetCur ...

  9. CentOS7下配置FTP服务

    1.参考教程: 腾讯云开发者实验室:基于 CentOS 搭建 FTP 文件服务 Linux就该这么学>:第11章 使用Vsftpd服务传输文件 (需要自己百度) 2.实验环境: VMware 1 ...

  10. Java基础(六)包装类

    一.包装类 JAVA是一种面向对象语言,java中的类把方法与数据连接在一起,但在JAVA中不能定义基本类型对象,为了能将基本类型视为对象进行处理,java为每个基本类型都提供了包装类. 对应关系如下 ...