0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习中的不同Normalization方法小结

可靠性杂坛 来源:机器学习与数学 2024-02-20 13:54 次阅读

1为什么要 Normalization

在深度神经网络中,存在一种内部协变偏移(internal covariate shift)现象,它是由于训练过程中不断变化的网络参数导致网络各层的输入分布发生变化。

例如,输入层中某些具有较高数值的特征可能会起到主导作用,从而在网络中产生偏差,即只有这些特征对训练结果有贡献。

例如,假设特征 1 的值介于 1 和 5 之间,特征 2 的值介于 100 和 10000 之间。在训练期间,由于两个特征的规模不同,特征 2 将主导网络,只有该特征对模型作出贡献。

wKgZomXUP3iADmYRAAAcHJA0n4k324.jpg

这仅仅是一层的情况,如果从整个深度神经网络来看,那就更加复杂了。Google 在其论文中将这一现象总结为,

Internal Covariate Shift简称 ICS,是由于训练过程中网络参数的变化引起的网络激活分布的变化。

网络中的每一层的参数更新会导致本层的激活输出的分布发生变化,也就是后面层的输入的分布发生变化。而深度神经网络往往涉及到很多层的叠加,通过层层叠加,会引发后面层非常剧烈的变化,这就给深度模型的训练带来了巨大挑战。

由于上述原因,引入了称为 normalization 的概念来解决这些问题。

Normalization 有很多优点,包括

减少内部协变偏移以改善训练;

将每个特征缩放到相似的范围以防止或减少网络中的偏差;

通过防止权重在整个地方爆炸并将它们限制在特定范围内来加速优化过程;

通过辅助正则化减少网络中的过拟合。

Normalization 也可以结合概率论来解释。一般来说,机器学习中的方法比较偏爱独立同分布的数据。当然并不是所有算法都有这个要求,但独立同分布的数据往往可以简化一般模型的训练,提升模型的预测能力。

wKgZomXUP3iAWdSeAADGT3hcKrk366.jpg

在把数据输入模型之前,对其经过白化(whitening)处理是一个不错的预处理步骤。

比如上图(左)的数据,先经过零均值化以及去相关性操作,得到中间的形式,各个特征相互独立;再让所有特征具有单位标准差,最终得到独立同分布的数据。

深度学习中往往不直接使用白化操作,白化中间需要用到 PCA。如果对输入数据作一次 PCA,那也仅仅是针对线性模型,但如果针对神经网络中的中间每一层在激活后再使用白化,那计算代价太过高昂。

那怎么办呢?不妨模仿白化,但可以作一些简化,比如不考虑去相关性,而是对各层的激活输出在一定范围内作标准化处理,再加一定的缩放和偏移。这里的操作范围可以不同,于是就有了一堆 Normalization 方法。

2Batch Normalization

wKgaomXUP3iAIjhYAAAbCKe69f8346.jpg

Batch Normalization 侧重于标准化任何特定层的输入(即来自前一层的激活)。

下图左边网络中没有 BN 层,右边网络中在隐藏层前加入了 BN 层,即对输入层在小批次上作了 Normalization。

wKgaomXUP3iANlS1AAE2s3pwyoo234.jpg

标准化输入意味着网络中任何层的输入都应该近似零均值以及单位方差。简单来说,BN 层通过减去当前小批量中的输入均值并除以标准差来变换当前小批量中的每个输入。

wKgaomXUP6yAGaAEAAEaQFoS_c0750.jpgwKgZomXUP7OAbQk8AAFYexS-TJ8928.jpg

wKgaomXUP8GACaZ7AAFVwmR79PE344.jpg

总结一下:简而言之,BN 使得梯度更具预测性,从而有效改善网络训练。

下面,让我们看看 BN 的一些优点:

BN 加速深度神经网络的训练。

对于每个输入小批量,我们计算不同的统计量,这引入了某种正则化。正则化技术起到在训练期间限制深度神经网络复杂度的作用。

每个小批量都有不同的小分布,这些小分布之间的变化称为内部协变偏移,BN 被认为消除了这种现象。

BN 对通过网络的梯度流也提供了有利影响:它减少了梯度对参数尺度或其初始值的依赖性,从而使我们能够使用更高的学习率。

然而,下面是批量标准化的几个缺点:

BN 在每次训练迭代中计算批次数据的统计量(Mini-batch 均值和方差),因此在训练时需要更大的批次大小,以便它可以有效地逼近来自 mini-batch 的总体均值和方差。这使得 BN 更难训练用于对象检测、语义分割等应用的网络,因为它们通常涉及高分辨率(通常高达 1024,2048 等)的输入数据,使用大批量进行训练在计算上往往是不可行的。

BN 不适用于 RNN。问题是 RNN 与之前的时间戳具有循环连接,并且在 BN 层中的每个时间步长都需要单独的 和 ,这反而增加了额外的复杂性并使 BN 与 RNN 一起使用变得更加困难。

不同的训练和测试计算:在测试(或推理)期间,BN 层不会从测试数据 mini-batch(上面算法表中的步骤 1 和 2)计算均值和方差,而是使用固定均值和从训练数据计算的方差。这在使用 BN 时需要谨慎,并引入了额外的复杂性。在 pytorch 中,model.eval()确保在评估模型中设置模型,因此 BN 层利用它来使用从训练数据预先计算的固定均值和方差。

3Weight Normalization

针对 BN 的缺点,Saliman 等人提出了 WN。他们的想法是将权重向量的大小与方向解耦,从而重新参数化网络以加快训练速度。

重新参数化是什么意思呢?

wKgZomXUP-SAMOhfAABoSvSIFOI666.jpg

WN 加速了类似于 BN 的训练,与 BN 不同的是,它也适用于 RNN。但是与 BN 相比,使用 WN 训练深度网络的稳定性较差,因此在实践中并未得到广泛应用。

4Layer Normalization

wKgZomXUP9yAEua-AAAZFdwH4ck060.jpg

受 BN 的启发,Hinton 等人提出的 Layer Normalization 沿特征方向而不是小批量方向对激活进行 normalization。这通过消除对批次的依赖来克服 BN 的缺点,也使得 RNN 更容易应用 BN。

与 BN 不同,LN 直接从整个隐藏层的神经元的总输入估计统计量,因此 normalization 不会在训练数据之间引入任何新的依赖关系。它适用于 RNN,并提高了几个现有 RNN 模型的训练时间和泛化性能。最近,它还与 Transformer 模型一起配合使用。

wKgaomXUP9yAY8HWAACmSM5nH_0134.jpg

注意上图中的颜色走向,与 BN 有所不同,LN 对某一个层中所有特征进行归一化,而不是在小批量中对输入特征进行归一化。


wKgZomXUQBmAFsPdAAFSU5UGaxU873.jpg

5Group Normalization

wKgZomXUQA2AL8-UAAAf7v8AKDE780.jpg

与 LN 类似,GN 也沿特征方向进行操作,但与 LN 不同的是,它将特征划分为若干组并分别对每个组进行 normalization。在实践中,GN 比 LN 常常表现得更好,它的参数 num_groups 可以设为超参数。

如果觉得 BN、LN、GN 有点令人困惑,下图给出了一个总结。给定形状 (N, C, H, W) 的激活,BN 归一化 N 方向,LN 和 GN 归一化 C 方向,但 GN 额外地将 C 通道分组并单独 normalize 各个组。

wKgaomXUQA2AFzpXAAIUl7qR-ak082.jpg
wKgZomXUQFSADZnSAAGTyyXIfI0573.jpg

下图中可以看到一个简单的编码器-解码器网络架构,带有额外的 AdaIN 层用于样式对齐。

wKgaomXUQEaAWkmWAAJGq3UVJVE787.jpg

wKgZomXUQHqAf5I_AAFl3DmBhxY568.jpg

其中,

分别计算每个输出通道的均值和标准差,可以结合下图来理解。

wKgZomXUQJKAQDU4AAAYbL_3qQ4561.jpg

本质上,WS 旨在单独调控每个输出通道的权重的一阶统计量。通过这种方式,WS 在反向传播期间对梯度进行 normalization。

从理论上和实验上都验证了它通过标准化卷积层中的权重来平滑损失情况。

理论上,WS 减少了损失和梯度的 Lipschitz 常数。核心思想是将卷积权重保持在一个紧凑的空间中,从而平滑了损失并改进了训练。

论文作者将 WS 与 GN 结合使用,取得了不错效果。

wKgaomXUQJKAD88iAAA8lLjhbLM656.jpg

在 ImageNet 和 COCO 上比较normalization方法,GN+WS 大大优于单独使用 BN 和 GN。

8小结

最后,为了便于比较和分析它们的工作原理,我们将上述几种主要normalization方法汇聚在一个图中。

wKgZomXUQJKABQEMAAD9aWyalZI965.jpg

当在论文或具体网络架构中遇到这些名词时,脑子中可以浮现出对应的图来辅助理解。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCA
    PCA
    +关注

    关注

    0

    文章

    88

    浏览量

    29368
  • 机器学习
    +关注

    关注

    66

    文章

    8126

    浏览量

    130571
  • 深度学习
    +关注

    关注

    73

    文章

    5239

    浏览量

    119919
  • 深度神经网络

    关注

    0

    文章

    42

    浏览量

    4463

原文标题:深度学习各种 Normalization 方法小结

文章出处:【微信号:可靠性杂坛,微信公众号:可靠性杂坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于深度学习的三维点云配准方法

    基于深度学习的三维点云配准方法成为研究的主流,并随之诞生了DeepVCP、DGR、Predator等著名的方法
    发表于 11-29 11:41 1402次阅读

    深度学习在汽车的应用

    未来的某个时候,人们必定能够相对自如地运用人工智能,安全地驾车出行。这个时刻何时到来我无法预见;但我相信,彼时“智能”会显现出更“切实”的意义。与此同时,通过深度学习方法,人工智能的实际应用能够在汽车
    发表于 03-13 06:45

    深度学习的改进方法

    深度学习如何改进(一)
    发表于 07-01 16:46

    深度学习的图片如何增强

    深度学习的图片增强
    发表于 05-28 07:03

    深度学习的IoU概念

    深度学习的IoU概念理解
    发表于 05-29 09:24

    Batch Normalization论文及原理总结

    【原理】Batch Normalization 论文及原理总结
    发表于 06-12 08:51

    基于深度学习的异常检测的研究方法

    的研究方法进行了系统而全面的综述。此外,我们回顾了这些方法在不同应用领域中的应用,并评估了它们的有效性。我们根据所采用的基本假设和方法,将最先进的深度异常检测研究技术分为不同的类别。在
    发表于 07-12 07:10

    深度学习在预测和健康管理的应用

    方法方面的最新进展,目的是发现研究差距并提出进一步的改进建议。在简要介绍了几种深度学习模型之后,我们回顾并分析了使用深度学习进行故障检测,诊
    发表于 07-12 06:46

    基于深度学习的异常检测的研究方法

    ABSTRACT1.基于深度学习的异常检测的研究方法进行结构化和全面的概述2.回顾这些方法在各个领域这个中的应用情况,并评估他们的有效性。3.根据基本假设和采用的
    发表于 07-12 06:36

    LED驱动学习小结

    LED驱动学习小结
    发表于 07-22 07:04

    深度学习介绍

    在未来的某个时候,人们必定能够相对自如地运用人工智能,安全地驾车出行。这个时刻何时到来我无法预见;但我相信,彼时“智能”会显现出更“切实”的意义。与此同时,通过深度学习方法,人工智能的实际应用能够在
    发表于 11-11 07:55

    什么是深度学习?使用FPGA进行深度学习的好处?

    )和网络修剪,正在积极研究,这些方法与 FPGA 非常兼容。也有FPGA供应商发布高速深度学习IP,以及配备适合深度
    发表于 02-17 16:56

    batch normalization时的一些缺陷

    导读 batch normalization时的一些缺陷。 Batch Normalization确实是深度学习领域的重大突破之一,也是近年来研究人员讨论的热点之一。Batch
    的头像 发表于 11-03 17:27 2912次阅读
    batch <b class='flag-5'>normalization</b>时的一些缺陷

    STM32串口学习小结

    STM32串口学习小结串口是一个单片机常用的外设模块,对于单片机的外部通讯,程序调试都有着十分重要的作用。所以作为嵌入式学习中一个必须掌握的外设模块,这里向大家分享的我学习
    发表于 12-24 18:42 4次下载
    STM32串口<b class='flag-5'>学习</b><b class='flag-5'>小结</b>

    基于深度学习的点云分割的方法介绍

      摘 要:点云分割是点云数据理解中的一个关键技术,但传统算法无法进行实时语义分割。近年来深度学习被应用在点云分割上并取得了重要进展。综述了近四年来基于深度学习的点云分割的最新工作,按
    发表于 07-20 15:23 0次下载