https://www.toutiao.com/a6656378520316412427/

为什么我们需要归一化?

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

  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. 均值归一化_深度神经网络中的归一化技术

    为什么我们需要归一化? 归一化一直是深度学习研究的一个活跃领域.归一化技术可以大大减少机器学习模型的训练时间.让我们看看归一化的一些好处. 它对每个特征进行归一化,以便它们保持每个特征的贡献,因为某些 ...

  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. 【深度学习】神经网络中的蒸馏技术,从Softmax开始说起

    作者:Sayak Paul      编译:ronghuaiyang 导读 从各个层次给大家讲解模型的知识蒸馏的相关内容,并通过实际的代码给大家进行演示. 本报告讨论了非常厉害模型优化技术 -- 知识 ...

  8. 深度神经网络中的Batch Normalization介绍及实现

    之前在经典网络DenseNet介绍_fengbingchun的博客-CSDN博客_densenet中介绍DenseNet时,网络中会有BN层,即Batch Normalization,在每个Dense ...

  9. 深度神经网络中的Inception模块介绍

    深度神经网络(Deep Neural Networks, DNN)或深度卷积网络中的Inception模块是由Google的Christian Szegedy等人提出,包括Inception-v1.I ...

最新文章

  1. STM32CubeMX简介、下载及安装(NB-IoT专栏—基础篇3)
  2. 如何使用Junit进行单元测试
  3. TRUNK配置详细讲解
  4. 网课助手浏览器版怎么更新_MIUI版本更新动态:跨屏协作来袭(第57期)
  5. Java面试技巧之MySQL问题梳理
  6. STL之Iterator(迭代器)
  7. nltk book的下载
  8. Lync Server 2010的部署系列_第七章 部署边缘服务器(上)
  9. 布里斯托大学计算机科学专业排名,2021年布里斯托大学世界及专业排名 多个领域位居全英前十!...
  10. 鹰角网络全球海量数据,一键轻松统一存储与处理
  11. [Unity][FlowCanvas] FlowScript 通过 Tween 实现在两点间移动
  12. LeetCode 5382. HTML 实体解析器
  13. 通过反射调用方法会大大降低性能
  14. python语音识别_Python语音识别终极指南
  15. 科研小技巧——论文投稿视频制作指南
  16. 如何在Mac OS上从Photoshop 2020作为插件访问Topaz DeNoise AI?
  17. 【51单片机】按键控制多个舵机(可用于机械臂控制)
  18. 如何搞定笔记本检测不到wifi,图标,Netkeeper链接不上
  19. can和could的用法_情态动词can和could用法详解
  20. android微信分享图片踩坑之旅

热门文章

  1. Jenkins部署SpringBoot应用到远程服务器
  2. 复旦副教授魏忠钰:AI和人类对垒「奇葩说」,如何打造智能辩手?
  3. 《AI系统周刊》第4期:DNN模型压缩之剪枝(Pruning)
  4. AAAI 2021 | 情感分析最新进展解读
  5. AI 版 Nature Index 排名,两种结果折射中国 AI 实力软肋
  6. 从粒子到宇宙的旅行指南
  7. 你竟然还不懂变分自编码机?这个16岁的OpenAI天才实习生讲得可透彻了
  8. 为什么小批量会可以使模型获得更大的泛化
  9. NeurIPS 2020 | 清华大学提出:通用、高效的神经网络自适应推理框架
  10. 闽江夜话:聆听清华之声,畅聊数字中国的未来