当前位置: 首页 > news >正文

批量归一化Batch Norm

标准化输入特征,使其平均值为0,方差为1,这种标准化可以很好地与我们的优化器配合使用,因为它可以将参数的量级进行统一,使网络快速收敛。

批量规范化(batch normalization)这是一种流行且有效的技术,可持续加速深层网络的收敛速度。

在未添加BN层之前,网络的每一层要做的事就是得到z=wx+b,再使用激活函数激活z,得到输出g(z),也就是下一层的输入

添加BN层之后,一般在卷积层或全连接层之后,激活函数之前增加BN层,BN层首先计算前面的卷积或全连接层的输出的均值和标准差,再将输出按 (元素-均值)/标准差 ,得到均匀的数据分布,再将处理后的数据利用学习到的两个参数进行拉伸和平移,经过这种处理后的数据再送入激活函数

 添加了BN层的网络,每层要学习的参数变成了4个,卷积或全连接层的w和b,BN层的拉伸和偏移参数。由于在BN层每个元素会减去均值,所以b实际上无需在意。

这些参数都可以反向求梯度,采用SGD进行参数更新

 BatchNorm的用处

1.通过将隐藏层的值进行归一化,使网络加速收敛

2.BN减少后续层对前面层的依赖

训练模型对猫的识别,采用左侧数据集得到的模型不能应用于右侧数据集,因为两数据集数据分布不同。

协变量:当数据分布发生变化,就必须重新训练学习算法

 对于第三层隐藏层来说,要不断地学习更新参数将作为输入的a1,a2,a3,a4映射到一个正确的y_hat,但是在网络学习中,前面的层的参数也在变化,导致第三层隐藏的输入的数据一直也在变化,这涉及到协变量问题,通过引入BN层,可减少这些隐藏单元值的分布的不稳定性,使数据分布一直保持相同的均值和方差,减少了后面层对前面层的依赖,允许网络每一层独立学习

3.BN有轻微正则化效果

使用的batch_size越小,噪声越大,正则化效果越大

  • 在模型训练过程中,批量规范化利用小批量的均值和标准差,不断调整神经网络的中间输出,使整个神经网络各层的中间输出值更加稳定。

  • 批量规范化在全连接层和卷积层的使用略有不同。

  • 批量规范化层和暂退层一样,在训练模式和预测模式下计算不同。

  • 批量规范化有许多有益的副作用,主要是正则化。另一方面,”减少内部协变量偏移“的原始动机似乎不是一个有效的解释


http://www.mrgr.cn/news/54425.html

相关文章:

  • 【PyTorch 】【CUDA】深入了解 PyTorch 中的 CUDA 和 cuDNN 版本及 GPU 信息
  • 在MySQL中建索引时需要注意哪些事项?
  • vue查缺补漏
  • 不同jdk版本中的接口规范
  • Python生成随机密码脚本
  • curl,nc和telnet的用法以及其他常用工具(nc代理与重定向)
  • 用 CSS 和 JS 打造简约又不失亮点的客户评价展示
  • 【Python】基础语法
  • 【Linux】main函数的参数列表从何而来?
  • 基于SpringBoot基于微信的借书驿站小程序【附源码】
  • 嘉立创EDA个人学习笔记2(绘制51单片机核心板)
  • EDA系统的性能
  • ChatGLM-6B中英双语对话大模型Windows本地部署实战
  • Vulhub Basic Pentesting: 2 Target Machines
  • 如何高效练习键盘盲打?这些在线网站帮你提高打字速度
  • Node.js 版本管理工具 n
  • 值传递和引用传递
  • spring boot实现不停机更新
  • 【Spring篇】Spring中的Bean管理
  • Reflection 70B乌龙事件始末:揭开“最强大模型”背后的真相