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

[动手学习深度学习]28. 批量归一化

当前所有的深度学习网络,或多或少都用了批归一化操作
批归一化的思想不新,但是这个特定的层是16年左右出现的,在这之后,发现他对深度学习算法性能的提升非常有效

概念理解

这是一个网络的结构:
在这里插入图片描述
当数据很深的时候,可以发现数据在下面,损失在上面
在正向传播时,是数据从下面往上走;而反向传播时,是数据从上面往下传
这就存在问题,往下传的时候,梯度在上面比较大,越到下面越容易变小(一般是多个很小的数相乘,一直称道最后就变成很小的了)
上面梯度比较大,那么就会不断的更新,而下面的层因为权重比较小,对梯度的更新就比较小,那么上面层很快就会收敛,而下面的就会比较慢
这就导致,每次更新下面靠近数据的层的时候(会抽取底层的特征),上面的权重就需要重新训练,这就导致收敛会比较慢

  • 对深层神经网络来说,训练中模型参数的更新很容易造成输出层输出的剧烈变化
  • 解决:能不能再学习底部层的时候避免变化顶部层?

公式描述

核心思想:不稳定是因为方差和分布会在不同层变化,那么如果将方差和分布进行固定(每一层的输出,符合特定的分布),相对而言就会比较稳定
在这里插入图片描述
对每一个元素进行上面的标准化计算

批量归一化层

在这里插入图片描述

  • 对全连接层做批量归一化:通常将批量归一化层置于全连接层中的仿射变换和激活函数之间

  • 对卷积层做批量归一化:发生在卷积计算之后、应用激活函数之前

  • 在每个批量里,1个像素时1个样本。与像素(样本)对应的通道维,就是特征维

  • 所以不是对单个通道的特征图做均值方差,而是对单个像素的不同通道做均值方差

  • 输入9个像素(3*3),输出3通道,以通道作为列向量,每个像素都对应3列(输出通道=3),可以列出表格,按列求均值和方差,其实和全连接层一样的(即像素为样本,通道为特征)

这个小批量数据是随机的,算出来的统计量也可以说是随机的
因为每个batch的均值和方差都不太一样
因为每次取的batch中的数据都是不同的,所以在batch中计算的均值和方差也是不同的,所以引入了随机性

  • 作用
    • 最初论文提出时想用它来减少内部协变量转移
    • 后续有论文提出它可能是通过在每个小批量里加入噪音来控制模型复杂度

      所以这个角度,没必要跟丢弃法混合使用

总结

  1. 当每一层的均值和方差都固定后,学习率太大的话,靠近loss上面的梯度太大,就会梯度爆炸;学习率太小的话,靠近数据的梯度太小了,就会算不动(梯度消失)
  2. 批量归一化固定小批量中的均值和方差,然后学习出合适的偏移和缩放
  3. 将每一层的输入放在一个差不多的分布里,就可以用一个比较大的精度了,就可以加速收敛
  4. 归一化不会影响数据分布(一点也不影响精度,变好变坏都不会)

相关文章:

  • AF3 Rotation类的map_tensor_fn 方法解读
  • Oracle 23ai Vector Search 系列之1 架构基础
  • RT-Thread CI编译产物artifacts自动上传功能介绍
  • python socket模块学习记录
  • KPMG 与 SAP Joule:引领 AI 驱动咨询的新时代
  • 什么情况下spring的事务会失效
  • 私域电商的进化逻辑与技术赋能:基于开源AI大模型与S2B2C商城的创新融合研究
  • C#设计模式快速回顾
  • C语言- 工厂模式详解与实践
  • 常见中间件漏洞攻略-Apache篇
  • datetime“陷阱”与救赎:扒“时间差值”证道
  • Pytorch实现之对称卷积神经网络结构实现超分辨率
  • Pytorch深度学习教程_9_nn模块构建神经网络
  • 数据结构——哈夫曼编码、哈夫曼树
  • SAP-ABAP:SAP BW模块架构与实战应用详解
  • 使用Python将视频转化为gif
  • AF3 Rotation 类解读
  • stc8g1k08a+cd4017红绿灯
  • 嵌入式学习(31)-Lora模块A39C-T400A30D1a
  • 数据结构5(初):续写排序
  • 订婚不等于性同意!山西订婚强奸案入选最高法案例
  • 香港特区立法会通过条例草案便利外地公司迁册来港
  • 著名植物学家、园艺学家,国际植物园协会原主席贺善安逝世
  • 专访|茸主:杀回UFC,只为给自己一个交代
  • 独行侠以1.8%概率获得状元签,NBA原来真的有剧本?
  • 广东:十年后省级水网主骨架全面建成,与国家骨干网互联互通