一直以来对BN层两个学习参数belta和gamma不太理解,今天又在知乎问题上看到了“请问batch_normalization做了normalization后为什么要变回来?”这个问题,题主好像跟我之前想的一样(笑)。于是认真查阅了相关资料,得到以下一点见解:

Internal Covariate Shift(ICS)[1]:对 DNN 某一层,随着 GD 训练的过程中参数的改变,该层的输出数据的分布可能会改变;此时,对于下一层,相当于输入数据的分布改变了,这就类似于 Covariate Shift。这种输入数据分布的改变,可能会使 DNN 的难以学习到好的参数,从而影响 DNN 的效果。

比如在训练阶段的t1时刻,第i层输出范围(分布)在0~1之间,随着训练的推移,t2时刻第i层的输出范围变化到4~10,这个现象对与第i+1层的学习是不利的,造成了其学习困难,缓慢甚至无法收敛到最优(具体缺点[1]中说的比较详细)。其实0~1的范围已经“够用”了,毕竟0~1之间存在了无穷多个有理数,因此我们希望第i层能保持这个输出分布,故有了bn层,先将其输出归一化到0均值1方差,再通过可学习参数将其分布调整至某一合适的位置。

这样不仅预防了梯度消失/爆炸等问题,还不用关心非线性层的权重初始化,学习率也可以设置大一点。

同时,因为“batch”,而不是所有数据的Normalization,Batch的分布会带一些误差,起到了Regulation的作用,因此可以少用dropout等正则化手段了。

[1]https://zhuanlan.zhihu.com/p/26682707

关于BN层的一点理解相关推荐

  1. Dropout和BN(层归一化)详解

    无论是机器学习,还是深度学习,模型过拟合是很常见的问题,解决手段无非是两个层面,一个是算法层面,一个是数据层面.数据层面一般是使用数据增强手段,算法层面不外乎是:正则化.模型集成.earlystopp ...

  2. Interview:算法岗位面试—上海某科技公司算法岗位(偏AI算法,国企)技术面试之BN层的认知、BP的推导、GD优化的几种改进等

    Interview:算法岗位面试-上海某科技公司算法岗位(偏AI算法,国企)技术面试之BN层的认知.BP的推导.GD优化的几种改进等 导读:关于神经网络,问的比较深,因为博主做过总结,所以用自己的语言 ...

  3. caffe中的batchNorm层(caffe 中为什么bn层要和scale层一起使用)

    caffe中的batchNorm层 链接: http://blog.csdn.net/wfei101/article/details/78449680 caffe 中为什么bn层要和scale层一起使 ...

  4. Pytorch中BN层入门思想及实现

    批归一化层-BN层(Batch Normalization) 作用及影响: 直接作用:对输入BN层的张量进行数值归一化,使其成为均值为零,方差为一的张量. 带来影响: 1.使得网络更加稳定,结果不容易 ...

  5. 【pytorch】BN层计算

    官方文档 有一个针对BN层的详细的理解: Pytorch的BatchNorm层使用中容易出现的问题 class torch.nn.BatchNorm2d(num_features, eps=1e-05 ...

  6. pytorch 批量归一化BatchNorm1d和BatchNorm2d的用法、BN层参数 running_mean running_var变量计算 验证

    前提知识 BN层包括mean var gamma beta四个参数,.对于图像来说(4,3,2,2),一组特征图,一个通道的特征图对应一组参数,即四个参数均为维度为通道数的一维向量,图中gamma.b ...

  7. 狠补基础-数学+算法角度讲解卷积层,激活函数,池化层,Dropout层,BN层,全链接层

    狠补基础-数学+算法角度讲解卷积层,激活函数,池化层,Dropout层,BN层,全链接层 在这篇文章中您将会从数学和算法两个角度去重新温习一下卷积层,激活函数,池化层,Dropout层,BN层,全链接 ...

  8. Batch Normalization (BN层)-----批归一化

    目录 1.数据分布 2.BN层的作用 3.BN核心公式和流程: 4. BN用于CNN中 5. BN测试时 1.数据分布 在讲BN层之前,我们得先了解何为数据分布,数据分布跟网络训练又有什么关系. (1 ...

  9. 目标检测 YOLOv5 - 卷积层和BN层的融合

    目标检测 YOLOv5 - 卷积层和BN层的融合 即Conv2d和 BatchNorm2d融合 flyfish 为了减少模型推理时间,YOLOv5源码中attempt_load已经包括两层的合并,主要 ...

最新文章

  1. block作用域与流程控制(块block、if-else、while、do-while、for-foreach、switch-case、break、continue、label)
  2. 关于html frame导航
  3. 查询sql执行计划_使用SQL执行计划进行查询性能调整
  4. File类之常用方法
  5. TBB concurrent_set 没有erase
  6. CSS3+HTML5特效5 - 震动的文字
  7. Spring quartz插件的使用
  8. 2.11 数值分析: 事后误差估计和迭代改善
  9. word从第三页插入页码
  10. ITOP4412----Uboot2020移植记录
  11. CentOS 6.3安装chrome
  12. 沉船会有什么_泰坦尼克号沉船之谜
  13. 触屏手机关闭开机触屏校准
  14. 百度云搜索引擎森林战士_002 找到你要的资料——百度网盘使用指南
  15. 史上最全电脑硬盘修复方法
  16. 读史有感(写于07年冬)
  17. SDNU 1309.啤酒和饮料
  18. Scala之类型参数化:Type Parameterization
  19. IT行业的各岗位职责
  20. 云计算机上能联机玩游戏不,云电脑是什么原理?为什么能让低配电脑玩大型游戏...

热门文章

  1. 使用mycat实现分库分表
  2. 转发保留不错一篇 数学模型神经网络在程序化交易模型构建中的运用探讨
  3. 几个步骤就可以轻松的修改视频尺寸
  4. 自动驾驶仿真实验流程--以PanoSim仿真软件为例
  5. 英语学习笔记——语法篇(持续更新)
  6. 北方云APP使用指南
  7. 用easynetty进行服务端回签同步确认
  8. VS2019 配色_SOAR NEWS两款全新配色 Kobe 5、Louis Vuitton x NBA 项链
  9. 原子性操作atomic_t
  10. 手机如何压缩照片?压缩方法分享