深度学习 | BN层原理浅谈

文章目录

  • 深度学习 | BN层原理浅谈
  • 一. 背景
  • 二. BN层作用
  • 三. 计算原理
  • 四. 注意事项
    • 为什么BN层一般用在线性层和卷积层的后面,而不是放在激活函数后
    • 为什么BN能抑制过拟合(有争议)

一. 背景

神经网络在训练时,由于内存限制,各框架都会设置batch和epoch的概念来进行训练。

每个batch内采样的训练数据的分布各不相同,那么网络就要在每次迭代都去学习以适应不同的分布。对于深度学习这种包含很多隐层的网络结构,各隐层学到的权重等参数都在不停的变化,导致隐层的输入分布老是变来变去,产生了所谓的“Internal Covariate Shift”(内部协变量偏移)现象,

使用更好的参数初始化或者使用较低的分辨率能够一定程度上缓和这个问题,但是会大大降低网络的训练速度,为了保证隐层分布稳定及训练速度,Batch Nomalization算法随之而来;

二. BN层作用

(1)将每一隐层参数都归一化至均值0、方差为1,输出至下一隐层;

(2)加速网络收敛速度,可以使用较大的学习率来训练网络

(3)改善梯度弥散

(4)提高网络的泛化能力

(5)BN层一般用在线性层和卷积层后面,而不是放在非线性单元后

三. 计算原理

BN层对每一个batch内样本的features中计算其均值 μ \mu μ和方差σ,然后对每一个x​减去均值除以标准差,最后利用超参数 γ \gamma γ和 β \beta β进行仿射变换,即可得到最终的BN输出y,具体过程如下:

1.计算样本均值。
2.计算样本方差。
3.样本数据标准化处理。
4.进行平移和缩放处理。引入了 γ \gamma γ和 β \beta β两个参数。来训练γ和β两个参数。引入了这个可学习重构参数 γ \gamma γ和 β \beta β,让我们的网络可以学习恢复出原始网络所要学习的特征分布。

四. 注意事项

为什么BN层一般用在线性层和卷积层的后面,而不是放在激活函数后

因为激活函数一般为非线性,非线性单元的输出分布形状会在训练过程中发生变化,归一化无法消除它的方差偏移,相反的,全连接和卷积层的输出一般是一个对称的,非稀疏的一个分布,更加类似于高斯分布,对他们进行归一化会产生更加稳定的分布。例如Relu激活函数,如果输入的数据是一个高斯分布,经过Relu输出的数据小于0的被抑制,就不是高斯分布了。

为什么BN能抑制过拟合(有争议)

BN每个batch采样的数据都不一样,但是每次的batch的数据都会被局部均值和方差作用,可以认为是引入了噪声,增强了过拟合能力。

深度学习 | BN层原理浅谈相关推荐

  1. UGUI深度学习(二)-- 浅谈特效穿层问题

    一个老生常谈的问题,只不过之前一直没有自己处理过,正好有机会自己去研究了一下. 问题:particle在UI面板中的渲染顺序问题.由于UI渲染和Particle渲染是分为2个大组进行分别渲染,所以会出 ...

  2. php smarty 原理,php模板原理PHP模板引擎smarty模板原理浅谈

    mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...

  3. Java 线上问题排查神器 Arthas 快速上手与原理浅谈

    [Arthas 官方社区正在举行征文活动,参加即有奖品拿哦~点击投稿] 作者 | 杨桢栋,笔名叫蛮三刀把刀,是一名一线互联网码农,留美访学一年,主要关注后端开发,数据安全,爬虫,物联网,边缘计算等方向 ...

  4. 0基础怎样理解深度学习的工作原理?做个票价预测工具就懂了

    原作:Radu Raice 安妮 编译自 Medium 量子位 出品 | 公众号 QbitAI 这篇文章颇!具!人!气! 软件工程专业的学生Radu Raice近日发表了文章<Want to k ...

  5. 【深度学习】VGGNet原理解析及实现

    [深度学习]VGGNet原理解析及实现 VGGNet由牛津大学的视觉几何组(Visual Geometry Group)和Google DeepMind公司的研究员共同提出,是ILSVRC-2014中 ...

  6. 深度学习 卷积神经网络原理

    深度学习 卷积神经网络原理 一.前言 二.全连接层的局限性 三.卷积层 3.1 如何进行卷积运算? 3.2 偏置 3.3 填充 3.4 步长 3.5 卷积运算是如何保留图片特征的? 3.6 三维卷积 ...

  7. Java线上问题排查神器Arthas快速上手与原理浅谈

    前言 当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题: 程序在稳定运行了,可是实现的功能点了没反应. 为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题? 想到可 ...

  8. 深度学习Anchor Boxes原理与实战技术

    深度学习Anchor Boxes原理与实战技术 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的地面真实边界框.不同的模型 ...

  9. 深度学习attention原理_深度学习Anchor Boxes原理与实战技术

    深度学习Anchor Boxes原理与实战技术 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的地面真实边界框.不同的模型 ...

最新文章

  1. 微软的平板电脑_关于微软轻便版平板电脑Surface Go,你想知道的一切细节都在这了...
  2. 汇编(8086cpu): ip寄存器与指令的关系
  3. 什么是重载or重写,二者的区别是?
  4. 为什么有时候 php 没有写闭合标签结束符?
  5. cfiledialog指定位置和大小_GDamp;T | 位置度公差的理解过程
  6. 机器学习 测试_测试优先机器学习
  7. xs资料网-产品设计图档下载_proe玩具车3D模型图档下载creo4.0汽车模型下载中磊教育...
  8. [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非
  9. 4--RESTful应用程序
  10. Django模型和数据库操作
  11. 干货 | 你是不是希望一月入门深度学习,三月中一篇顶会?-- 关于做科研的态度和方法的一点感想...
  12. 《黑客与画家》 读书笔记
  13. django系列9 --- 迁移相关
  14. 探究L298N模块烧毁的原因
  15. linux中nginx安装前置条件以及安装流程,非常简单
  16. Eclipse 基本 java lombok maven 示例
  17. 如你所愿!一款高效率的学习神器,打开就是永久会员SVIP权限!
  18. DID分布式身份标识技术调研
  19. Excel——使用OFFSET、MATCH、COUNTA实现二级菜单
  20. Mysql聚簇索引和费聚簇索引的区别

热门文章

  1. [附源码]Java计算机毕业设计SSM动物园动物饲养管理
  2. 电脑手机二合一 华为云电脑你办公的好助手 最适合上班族
  3. 什么是尾递归?(知乎转载)
  4. 雾计算和边缘计算有什么区别
  5. SingleTask和SingleInstance详解
  6. a到z的ascii码值是多少_a和A对应的ASCII码数值分别是多少啊?
  7. Pytorch框架之one_hot编码函数
  8. AutoMapper 的使用
  9. 视频图像传输与显示(3)——复合视频信号CVBS解析
  10. 土壤湿度使用详细教程(基于树莓派3b+)