一、BN层的由来

训练深度学习网络是一个相当复杂的过程,每个层的输入分布在训练中会随着前一层的参数变化而变化。使用更好的参数初始化或者使用较低的分辨率能够一定程度上缓和这个问题,但是会降低网络的训练速度,特别是具有饱和非线性的网络。在论文中被称为Internal covariate shift,为了解决这个问题,提出了BN层。

二、BN层的作用

Internal covariate shift是BN论文作者提出的概念,表示数据的分布在网络传播过程中会发生偏移。举个例子,假设有一个玫瑰花的分类网络,1表示识别为玫瑰花,0表示非玫瑰花。先看看训练数据集的一个mini_batch:

直观来说,玫瑰花的特征表现很明显,都是红色玫瑰花。 再看看训练数据集的另一部分:

很明显,第二张图中各个颜色的玫瑰花都有,其特征分布与第一张图的特征分布是不一样的。
通俗来讲,刚开始的数据都是同一分布的,在模型学习的过程中,模型的参数已经适应了一种分布,突然换了另一种分布,这就会让模型的参数发生很大的调整,从而影响到收敛速度和精度,这就是Internal covariate shift。
而BN层的作用就是将这些输入值或卷积神经网络的张量进行类似标准化的操作,将其缩放在合适的范围,从而加快训练速度;另一方面可以使得每一层可以尽量面对同一特征分布的输入值,减少了变化带来的不确定性。

具体

1.加快网络的训练和收敛速度
2. 控制梯度爆炸和梯度消失
3. 防止过拟合

分析

(1)加快收敛速度:在深度神经网络中,如果每一层的数据分布都不一样的话,将会导致网络非常难收敛和训练,而如果把每层的数据都转换为均值为0,方差为1的分布下,这样每层数据的分布都是一样的,训练比较容易收敛。
(2)防止梯度爆炸和梯度消失:以sigmoid函数为例子,上一篇介绍了网络在训练时使用的激活函数,sigmoid函数可以使得输出在[0,1]之间。

事实上,当x到达了一定的大小,经过sigmo函数的输出范围就很小了,参考下图

可以看出,如果输入很大,其斜率会变得越来越小,而斜率(梯度)在反向传播中时权值的学习速率,所以就会出现下面的问题:

在深度学习网络中,如果网络的激活输出很大,其梯度就很小,学习速率就很慢。假设每层学习梯度都小于最大值0.25,网络有n层,因为链式求导的原因,第一层的梯度小于0.25的n次方,所以学习速率就慢,对于最后一层只需对自身求导一次,梯度就很大,学习速率就快。
因此就会造成在一个很深的网络中,浅层特征基本不学习,权值变化小,后面几层一直在学习,结果就是后面几层基本可以表示整个网络,失去了深度的意义。

对于梯度爆炸,根据链式求导法,第一层偏移量的梯度=激活层斜率1x权值1x激活层斜率2x…激活层斜率(n-1)x权值(n-1)x激活层斜率n。
假如激活层斜率均为最大值0.25,所有层的权值为100,这样梯度就会指数增加。

三、BN层的操作

假设某一个batch的数据为2个2行2列2深度的张量,BN的过程如下:

第一步,计算每一层深度的均值和方差:

第二步,对每一层设置2个参数,γ和β。假设第1深度γ=2、β=3;第2深度γ=5、β=8。

四、测试阶段的BN层

测试的时候如果按照训练那样计算每一个batch的均值和方差来计算BN层的输出的话,假设测试的batch为1,那么对模型的泛化能力会大大降低。这里借用一句话:某一个样本经过测试时应该有确定的输出,如果在测试时也是用测试数据的means和var,那么样本的输出会随所处batch的不同,而有所差异。即batch的随机性导致了样本测试的不确定性。所以使用固定的在训练中得出的mean和var。因此,单个样本的输出不应取决于批量归⼀化所需要的随机小批量中的均值和⽅差。这句话其实就是说为了增加模型的鲁棒性,在测试的时候使用的均值和方差为训练数据通过指数滑动平均(ExponentialMovingAverage)EMA估算整个训练数据集的样本均值和方差的全局值,并不是当前测试batch的局部值。

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

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

参考链接:
1.卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解
2.https://www.cnblogs.com/itmorn/p/11241236.html
3.网络中BN层的作用

深度学习面试基础--BN层相关推荐

  1. 计算机视觉面试宝典--深度学习机器学习基础篇(四)

    计算机视觉面试宝典–深度学习机器学习基础篇(四) 本篇主要包含SVM支持向量机.K-Means均值以及机器学习相关常考内容等相关面试经验. SVM-支持向量机 支持向量机(support vector ...

  2. 常见的12个深度学习面试问题(提高篇)

    序言 整理了一篇来自公众号AI公园的文章,原文链接:常见的12个深度学习面试问题,通过对文章知识点整理来巩固所学的知识,也为了以后更好的复习. 正文 1. 介绍Batch Normalization的 ...

  3. 机器学习、深度学习面试知识点汇总

    作者丨Oldpan 来源丨oldpan博客 编辑丨极市平台 导读 本文总结了一些秋招面试中会遇到的问题和一些重要的知识点,适合面试前突击和巩固基础知识. 前言 最近这段时间正临秋招,这篇文章是老潘在那 ...

  4. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

  5. 21个热门的深度学习面试问答的综合指南

    本文列出了一系列热门的深度学习面试的问题,每一个问题都有相应的答案.认真阅读,或许你会对深度学习面试的知识有个全面的了解. 介绍 你打算参加深度学习面试吗?你是否已经迈出了第一步,申请了一个深度学习的 ...

  6. 【深度学习面试八股文】-- 1-5

    最近会更新一个深度学习面试中常见问题,及相应的答案,希望对找工作的朋友有所帮助,总结不易,欢迎持续关注.公众号:羽峰码字,欢迎来撩. 目录 1.如何处理样本不均衡问题 2.数据增强方法 3.过拟合的解 ...

  7. 常见的12个深度学习面试问题

    深度学习面试 Author:JP Tech Translator:ronghuaiyang From:AI公园 导读 这12个问题是当前面试中最热门的问题,既是非常基础的问题,也能看出面试者的水平,具 ...

  8. 深度学习的基础知识(机器学习、损失函数、梯度下降、反向传播、基础模型一网打尽)

    1.预备信息 1.1了解技术的发展阶段 技术一般存在几个阶段:1.发展期.2.高峰期.3.冰河期.4.应用期 就是先达到一个高峰,但是在达到高峰之后就会被发现很多问题,然后热度就会不断地下降,到达一个 ...

  9. 零基础学习深度学习_深度学习的基础!!!

    零基础学习深度学习 The ability to learn from experience and perform better when confronted with similar chall ...

  10. 【深度学习入门基础】一、从线性代数和微积分的角度看神经网络

    [深度学习入门基础]从线性代数和微积分的角度看神经网络 这是深度学习入门系列文章,我们企图用最简洁的语言.最干净的表达,让读者快速获取到他所想要的.本系列文章持续更新.一些网上能查到的基础知识,诸如激 ...

最新文章

  1. 基础设计模式:单例模式+工厂模式+注册树模式
  2. 大学c语言11页,C语言程序设计题库(11页)-原创力文档
  3. 一起聊聊好玩的Openresty
  4. python爬虫能干什么-爬虫可以做的事情非常多,Python的爬虫你又了解多少?
  5. CSDN的Markdown编辑器常用语句
  6. 大数据方面核心技术有哪些?新人必读
  7. X86汇编——输出三角形星星
  8. ubuntu shell实现加减乘除
  9. sql已经完成,生成表
  10. Matlab在坐标点上按顺序标序号
  11. 密码编码学之AES及其工作模式详解
  12. 解析xml_QT开发(四十四)——流方法解析XML
  13. 阿里云服务器定时跑python_通过python调用阿里api定时备份阿里云RDS
  14. python如何获取权限_python 权限系统设计
  15. 基于Nonebot2搭建QQ机器人(三)Linux端部署机器人
  16. 信息安全工程师考试大纲(2016)
  17. HTML+CSS静态网页设计:(房地产网站设计与实现6页)
  18. codeforces 1665A (GCD vs LCM)思维
  19. 1月第2周小红书、抖音、B站、淘宝KOL排行榜
  20. 视频监控网络使用PON网络传输解决方案相关问题解答

热门文章

  1. 【转】从事IT行业的应该如何学习最高效的休息方式
  2. matlab制作数字滤波器(带通滤波器)
  3. 暴风影音皮肤_暴风影音16周年纪念版 v9.04
  4. SHELL编程命令大全
  5. 微型计算机原理及应用课后习题答案,微型计算机原理及应用课后习题答案.doc...
  6. 数学建模之概率模型详解
  7. iphone手机删除的照片怎么恢复
  8. c语言正方体的表面积和体积公式,长方体的表面积(正方体体积的计算公式)
  9. 【第七次全国人口普查 | Pyecharts】数据可视化~
  10. 后端系统开发之技术方案写作