为什么我们需要归一化?

归一化一直是深度学习研究的一个活跃领域。归一化技术可以大大减少机器学习模型的训练时间。让我们看看归一化的一些好处。

  1. 它对每个特征进行归一化,以便它们保持每个特征的贡献,因为某些特征具有比其他特征更高的数值。通过这种方式,我们的网络可以不带偏见(对于值很大的特征)。
  2. 它减少了内部协变量Shift。它是由于训练过程中网络参数的变化而引起的网络激活分布的变化。为了提高训练质量,我们寻求减少内部协变Shift
  3. 在论文中(https://arxiv.org/pdf/1805.11604.pdf),作者声称Batch Norm使损失表面更平滑(即它更严格地限制了梯度的大小)。
  4. 它使优化更快,因为归一化不允许权重爆炸并将它们限制在一定范围内。
  5. 归一化的一个意想不到的好处是它有助于网络的正则化(只是轻微的,不是显著的)。

从上面我们可以得出结论,正确归一化可能是让你的模型有效训练的关键因素,但这并不像听起来那么容易。让我先看一些问题。

  1. 归一化层在分布式训练中的表现如何呢?
  2. 您应该使用哪种归一化技术来完成CNN,RNN,风格转移等任务?
  3. 在训练中更改数据集的批量大小时会发生什么?
  4. 哪种归一化技术是网络计算和准确性的最佳平衡呢?

为了回答这些问题,让我们逐一深入研究每种归一化技术的细节。

批归一化

批归一化是一种归一化网络中确定大小的小批量激活的方法。对于每个特征,批归一化计算小批量中该特征的均值和方差。然后它减去均值并通过其小批量标准差来划分特征。

如果增加权重的大小能使网络表现得更好呢?

为了解决这个问题,我们可以分别添加γ和β作为scale和shift学习参数。这一切可以概括为:

ε是等式中的稳定常数

与批归一化相关的问题:

  1. 可变批量大小→如果批量大小为1,则方差将为0,这不允许batch norm工作。此外,如果我们的mini-batch小,那么它会变得太嘈杂,而且训练可能会影响。分布式训练也会出现问题。因为,如果您在不同的机器中进行计算,那么您必须采用相同的批量大小,否则对于不同的系统,γ和β将是不同的。
  2. 循环神经网络 →在RNN中,在RNN中,每个时间步的重复激活将有不同的统计数据。这意味着我们必须为每一个时间步设置一个单独的batch norm层。这使得机器学习模型更加复杂和占用空间,因为它迫使我们存储训练过程中每个时间步的统计信息。

权重归一化

我们为什么不直接对激活进行归一化,而对层的权重进行归一化呢?权重归一化确实是这样。

权重归一化将权重(ω)重新参数化为:

它将权重向量与其方向分开,这与具有方差的批归一化具有类似的效果。唯一的区别在于变化而不是方向。

至于平均值,论文的作者巧妙地将仅平均批归一化和权重归一化结合起来,即使在small mini-batches中也能获得所需的输出。这意味着他们减去了minibatch 的平均值,但没有除以方差。最后,他们使用权重归一化而不是除以方差。

注:由于大数定律,与方差相比,均值的噪声较小(这使得均值优于方差)。

权重归一化与仅平均批归一化相结合,可在CIFAR-10上获得最佳结果。

层归一化

层归一化对跨特征的输入进行归一化,而不是在批归一化中对跨batch维度的输入特征进行归一化。

mini-batch包含具有相同数量特征的多个示例。Mini-batches是矩阵(或张量),其中一个轴对应于批次,另一个轴(或多个轴)对应于特征尺寸。

i代表批次,j代表特征。xᵢ,ⱼ是输入数据的第i,第j个元素。

在RNN的情况下,层归一化比批归一化更好。

实例(or Contrast)归一化

层归一化和实例归一化彼此非常相似,但它们之间的区别在于实例归一化在每个训练示例中的每个通道上归一化,而不是在训练示例中跨输入特征进行归一化。与批归一化不同,实例归一化层也在测试时应用(由于mini-batch的非依赖性)。

在这里,X ∈ℝT×C×W×H为输入包含批次Ť图像的张量。X ₜᵢⱼₖ表示第tijk个元素,其中k和j跨空间维度(图像的高度和宽度),i为特征的信道(如果输入是一个RGB颜色通道图像),t是batch中图像的索引。

该技术最初设计用于风格转移,实例归一化试图解决的问题是网络应该与原始图像的对比度无关。

组归一化

顾名思义,组归一化针对每个训练样例对通道组进行标准化。我们可以说,Group Norm介于Instance Norm和Layer Norm之间。

当我们将所有通道放入一个组时,组归一化将成为层归一化。并且,当我们将每个通道放入不同的组时,它将成为实例归一化。

Sᵢ定义如下

这里,x是由层计算的特征,i是索引。在2D图像的情况下,i =(i N,i C,i H,i W)是以(N,C,H,W)顺序索引特征的4D向量,其中N是batch轴,C是通道轴,H和W是空间高度和宽度轴。G是组的数量,它是预定义的超参数。C / G是每组的通道数。⌊.⌋是floor操作,“ ⌊kC/(C / G)⌋=⌊iC/(C / G)⌋ ”表示索引i和k假设每组通道沿C轴按顺序存储,则它们位于同一组通道中。GN计算沿(H,W)轴和沿着一组C / G通道的μ和σ。

Batch-Instance归一化

实例归一化的问题在于它完全删除了样式信息。虽然,这有其自身的优点(例如在风格转移中),但在对比度很重要的条件下(如天气分类,天空的亮度很重要)可能会出现问题。Batch-Instance归一化试图通过了解应该为每个通道(C)使用多少样式信息来处理这种情况。

Batch-Instance归一化只是批归一化和实例归一化之间的插值。

ρ的值在0和1之间

Batch-Instance归一化的有趣方面是通过梯度下降来学习平衡参数ρ。

从Batch-Instance归一化,我们可以得出结论,模型可以学习使用梯度下降自适应地使用不同的归一化方法。

我们可以在需要时切换归一化技术吗?

答案是肯定的。

可切换归一化

可切换归一化方法从批归一化、实例归一化和层归一化出发,采用不同均值和方差统计量的加权平均。

在图像分类和对象检测等任务中,切换归一化可能优于批归一化。

实例归一化在较早的层中更常使用,中间优选批归一化,最后更常使用层归一化。batch sizes越小,就越倾向于层归一化和实例归一化。

均值归一化_深度神经网络中的归一化技术相关推荐

  1. 深度神经网络中的归一化技术

    https://www.toutiao.com/a6656378520316412427/ 为什么我们需要归一化? 归一化一直是深度学习研究的一个活跃领域.归一化技术可以大大减少机器学习模型的训练时间 ...

  2. 深度神经网络中的局部响应归一化LRN简介及实现

    Alex.Hinton等人在2012年的NIPS论文<ImageNet Classification with Deep Convolutional Neural Networks>中将L ...

  3. 深度神经网络中处理数据和训练模型的一些技巧

    深度神经网络中处理数据和训练模型的一些技巧 1 数据预处理 1.1 中心化 1.2 标准化 1.3 PCA 1.4 白噪声 1.5 小结 2 权重初始化 2.1 全0初始化 2.2 随机初始化 2.3 ...

  4. 深度神经网络中Inception-ResNet模块介绍

    之前在https://blog.csdn.net/fengbingchun/article/details/113482036 介绍了Inception,在https://blog.csdn.net/ ...

  5. PNAS | 理解单个神经元在深度神经网络中的作用

    本次报道论文为发表于PNAS的Understanding the role of individual units in a deep neural network.众所周知,深度神经网络擅长查找可解 ...

  6. 【机器学习算法面试题】四.深度神经网络中激活函数有哪些?

    欢迎订阅本专栏:<机器学习算法面试题> 订阅地址:https://blog.csdn.net/m0_38068876/category_11810806.html [机器学习算法面试题]一 ...

  7. 【基础知识】深度学习中各种归一化方式详解

    本文转载自 https://blog.csdn.net/qq_23981335/article/details/106572171 仅作记录学习~ 总结 BN,LN,IN,GN,WS 从学术上解释差异 ...

  8. 深度学习中的归一化方法简介(BN、LN、IN、GN)

    文章目录 1. 协方差偏移 1.1 协方差偏移的概念 1.2 协方差偏移的影响 2. 归一化的通用框架与基本思想 3. 常见的归一化方法 3.1 Batch Nomalization 3.1.1 什么 ...

  9. 深度学习中的归一化方法总结(BN、LN、IN、GN、SN、PN、BGN、CBN、FRN、SaBN)

    目录 概要 Batch Normalization(BN) (1)提出BN的原因 (2)BN的原理 (3)BN优点 (4)BN缺点 Instance Normalization(IN) (1)提出IN ...

最新文章

  1. EfficientNetV2震撼发布!87.3%准确率!模型更小,训练更快!谷歌大脑新作
  2. 测试博客园Markdown 表格
  3. 常用基础参数SurvivorRatio讲解 || NewRatio讲解 || MaxTenuringThreshold讲解
  4. java保留有效数字
  5. SweetAlert – 替代 Alert 的漂亮的提示效果
  6. matlab 微秒 符号,matlab处理csi
  7. 进入hbase shell速度很慢_HBase——大数据平台之分布式NoSQL数据库教程
  8. 95-34-030-Context-DefaultChannelHandlerContext
  9. 用工具激活visio2013
  10. 30天React Native从零到IOS/Android双平台发布总结
  11. tomcat部署web项目的3中方法
  12. 扫描二维码登录的接口
  13. QThread 的使用
  14. 闽教英语app 破解版 免费版
  15. QTreeView 详解 并设置样式表
  16. 精度、召回率、准确率、F-score
  17. acm-(dp计数)Educational Codeforces Round 97 (Rated for Div. 2) F. Emotional Fishermen
  18. 偏最小二乘回归(PLSR)和主成分回归(PCR)
  19. 国外stripe支付,超简单几行代码搞定
  20. 毕设专题1 — 开始准备结束的任务

热门文章

  1. 七牛云和Github如何使用PicGo设置免费图床
  2. C++中在堆区用new开辟空间
  3. rxjs ajax query,rxjs入门之ajax封装
  4. 关于用户故事地图的7种用法
  5. 艾尔登法环绝配:iGame加推双风扇白色版RTX 3050
  6. java二进制保存图片_JAVA高级特性——二进制存储图片
  7. h5页面如何预览excel文件_如何使用JavaScript实现前端导入和导出excel文件?(H5编辑器实战复盘)...
  8. 2022年全球市场燃油液位传感器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  9. C语言中,求三个数中最大数
  10. H3C BGP与IGP交互配置