文章目录

  • 有什么用?
  • 原理是什么,怎么计算?
  • 怎么用?

有什么用?

批归一化(Batch Normalization,BatchNorm)是由Ioffe和Szegedy于2015年提出的,目前已被广泛应用在深度学习中,其目的是对神经网络中间层的输出进行标准化处理,使得中间层的输出更加稳定。

  1. 什么意思呢?
    就是这些专家认为啊,模型的收敛需要稳定的数据分布。

  2. 什么叫稳定的数据分布呢?
    以图像处理为例,我们一般会对图像进行预处理,做归一化操作,把[0, 255]之间的数值限制在[-1, 1]之间(均值为0,方差为1),这样数据分布波动就不算大。不然你时而输入为[0.1]时而输入为[255.]对算法来说很难去适应这种数据分布,也就很难收敛。

  3. 那再输入模型之前做一遍归一化就行了,为什么还要在神经网络中间层的数据进行归一化处理呢?
    其实对于浅层网络对输入数据做一遍归一化处理确实就可以了,模型的效果不错。但是对于深层网络,即使你的输入数据已经做过标准化的处理,但是对于那些比较靠后的层,随着参数的不断更新,其接受到的输入仍然是剧烈变化的,导致数值不稳定,难以收敛

所以,Batch Normalization 就是为提升深层网络中的数值稳定性所提出来的方法,能够使神经网络中间层的输出变得更加稳定,有以下三个优点:

  • 使学习快速进行(能够使用较大的学习率)
  • 降低模型对初始值的敏感性
  • 从一定程度上抑制过拟合

原理是什么,怎么计算?

BatchNorm主要思路是在训练时按mini-batch为单位,对神经元的数值进行归一化,使数据的分布满足均值为0,方差为1。分为以下四步:
Step 1: 计算mini-batch内样本均值:

Step 2: 计算mini-batch内样本方差:

Step 3: 计算标准化输出:

其中分母还要加一个‘ε’,它是一个很小的值,比如1e-7,主要是为了避免分母为0的情况。

Step 4: 平移和缩放:

因为,研究者认为如果强行地限制每一层的输出都是标准化的,可能会导致某些特征模式的丢失。所以,在标准化之后,BatchNorm就还会做一个缩放和平移。
其中γ和β这两个参数都是可学习的,可以赋初值,一般是(γ=1,β=0)

怎么用?

上面的参数更新都是只在训练过程中才会用到,在预测时,我们不会再计算输入样本的均值和方差,以及更新γ,β两个参数。

其实要这么做的原因很简单,比如现在有两个Batch数据传入到模型中,batch_size=4:

  • 其中Batch1=[A, B, C, D],经过BatchNorm得到[a1, b, c, d];
  • Batch2=[A, X, Y, Z],经过BatchNorm得到[a2, x, y, z];
  • 这样算出来,a1 ≠ a2。

而我们需要的效果是,同样的数据在预测时,它每一次传入模型,所得到的数据分布都应该是一样的。不然样本的预测结果就会变得不确定,这对预测过程来说是不合理的的,所以我们需要在训练过程中将大量样本的均值和方差存储下来,预测时不计算样本内的均值和方差,而是使用训练时保存值。

训练:滚动平均的方式,计算整个数据集上的均值和方差,并保存

测试:直接加载训练时保存的均值和方差

Batch Normalization 批归一化是什么? 有什么用?相关推荐

  1. 【深度学习】深入理解Batch Normalization批归一化

    [深度学习]深入理解Batch Normalization批归一化 转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 这几天面试经常被问到BN层的 ...

  2. 【文章阅读】BN(2015)理解Batch Normalization批标准化

    Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift Brief 该 ...

  3. [转] 深入理解Batch Normalization批标准化

    转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 郭耀华's Blog 欲穷千里目,更上一层楼 项目主页:https://github.com/g ...

  4. Batch Normalization批量归一化

    深度学习捷报连连.声名鹊起,随机梯度下降成了训练深度网络的主流方法.尽管随机梯度下降法对于训练深度网络简单高效,但是它有个毛病,就是需要我们人为的去选择参数,比如学习率.参数初始化.权重衰减系数.Dr ...

  5. 【深度学习】简单理解Batch Normalization批标准化

    资源 相关的Paper请看这两篇 Batch Normalization Accelerating Deep Network Training by Reducing Internal Covaria ...

  6. 基于MNIST数据集的Batch Normalization(批标准化层)

    从前面的文章中,我们了解到,各层的激活值分布如果比较偏向的话,都会影响到神经网络的正常顺利学习,如果各层的激活值能够适当的进行广度分布,或说强制性地调整激活值的分布,这样的效果会怎么样呢?答案是肯定的 ...

  7. 【深度学习】深入理解Batch Normalization批标准化

    这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...

  8. 【转】深入理解Batch Normalization批标准化

    Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性.虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络 ...

  9. 张俊林老师写的非常好的:深入理解Batch Normalization批标准化

      Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性.虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层 ...

最新文章

  1. python怎么加图片_python怎么实现添加图片
  2. 不挂载 组件渲染_让你的 React 组件性能跑得再快一点「实践」
  3. 学习区块链,绕不过去的“拜占庭将军问题”!!这里正好有通俗易懂的解释
  4. redis(16)--sentinel
  5. P1518 两只塔姆沃斯牛 The Tamworth Two(简单的搜索题)
  6. java 11:数组作为函数参数,数组做为函数返回值
  7. iPhone 12的4G/5G信号又翻车了:不少用户吐槽无网络服务
  8. php如何删除服务器图片,php如何删除服务器文件
  9. 1002. 三角形 (
  10. 《Android 应用案例开发大全(第3版)》——第1.3节Android开发环境的搭建
  11. MAC 终端git提交代码步骤
  12. 用Java实现MD5加盐
  13. 串级调节系统参数整定方法(串级调节器参数整定)
  14. 运维基础——Zabbix:Lack of free swap space on Zabbix server
  15. python默认字体大小_如何设置PIL加载的默认字体的大小,使其适合我的8x8矩阵?...
  16. SLAM学习资源免费分享-转载
  17. DENTON电源维修美国丹顿电源维修HVCEB-6-3
  18. 员工寄件管理流程设计
  19. 计算机英语口语面试自我介绍,英语面试_面试英语口语:自我介绍模板_沪江英语...
  20. android 盒子系统升级好不好,当贝H1电视盒子怎么样?小杰测评一周后谈谈值不值!...

热门文章

  1. Eugene Fama —— 一段 50 年的传奇
  2. 【论文速读】Dan_Deng_AAAI2018_PixelLink_Detecting_Scene_Text_via_Instance_Segmentation
  3. Sallen-Key 有源滤波器-ONE
  4. scrapy代理IP
  5. unity 人物走动声音_Unity3D实现人物走动
  6. 如何优雅的解决”重复请求“问题
  7. BZOJ 1193 HNOI2006 马步距离
  8. 一款小巧的kafka测试工具
  9. CAD随机孔隙3D插件 孔隙结构 多孔结构模型
  10. 少儿编程兴起,作为老一辈程序员的你,怕了么?