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

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

3天内不再提示

全面总结深度学习中的归一化技术

新机器视觉 来源:DeepHub IMBA 作者:Maciej Balawejder 2022-04-28 15:29 次阅读

训练深度神经网络是一项具有挑战性的任务。多年来,研究人员提出了不同的方法来加速和稳定学习过程。归一化是一种被证明在这方面非常有效的技术。

7166194c-c6a9-11ec-bce3-dac502259ad0.png

在这篇文章中,我将使用类比和可视化的方式来回顾这些方法中,这将帮助您了解它们的产生的原因和思维过程。

为什么要归一化?

例如,我们现在用两个特征构建一个简单的神经网络模型。这两个特征一个是年龄:范围在 0 到 65 之间,另一个是工资:范围从 0 到 10 000。我们将这些特征提供给模型并计算梯度。

71740e12-c6a9-11ec-bce3-dac502259ad0.png

不同规模的输入导致不同的权重更新和优化器的步骤向最小值的方向不均衡。这也使损失函数的形状不成比例。在这种情况下,就需要使用较低的学习速率来避免过冲,这就意味着较慢的学习过程。

所以我们的解决方案是输入进行归一化,通过减去平均值(定心)并除以标准偏差来缩小特征。

7180a906-c6a9-11ec-bce3-dac502259ad0.png

718e25ae-c6a9-11ec-bce3-dac502259ad0.png

此过程也称为“漂白”,处理后所有的值具有 0 均值和单位方差,这样可以提供更快的收敛和更稳定的训练。

这是一个很好的解决方案,那么为什么我们不规范化网络中每一层的激活呢?

下面我们先看一下针对于激活的归一化方法

Batch Normalization

719cadea-c6a9-11ec-bce3-dac502259ad0.png

2015 年,Sergey Ioffe 和 Christian Szegedy[3] 采用了这个想法来解决内部协变量偏移问题。以前输入层分布由于权值的更新而不断变化。所以下面的层总是需要适应新的分布,它会导致收敛速度变慢和训练不稳定。

批量标准化提供了一种控制和优化每一层之后的分布的方法。该过程与输入归一化相同,但我们添加了两个可学习的参数,γ 和 β。

通过代码来说明要比枯燥的公式好的多,所以BN的代码如下:

def BatchNorm(x, gamma, beta, eps=1e-5): # x: input shape [N, C, H, W] N, C, H, W = x.shape mean = torch.mean(input=x, dim=[0,2,3], keepdim=True) var = torch.var(input=x, dim=[0,2,3], keepdim=True) # mean, var shape : [1, C, 1, 1] x = (x - mean) / torch.sqrt(var + eps) return x * gamma + beta

这两个参数是通过反向传播沿着网络学习的。他们通过缩放(γ)和移动(β)激活优化分布。

71acf984-c6a9-11ec-bce3-dac502259ad0.png

由于有固定的分布,所以可以提高学习率并加快收敛速度。除了计算提升之外,BN 还可以作为一种正则化技术。数据集统计数据的近似产生的噪声消除了对 Dropout 的需要。

但这是一把双刃剑。这种估计仅适用于较大的批次。当批次数量较少时,性能会急剧下降。

71bc0190-c6a9-11ec-bce3-dac502259ad0.png

BN 的另一个缺点是对于批处理的依赖。如果我们传递了单个样本而不是批量的样本,网络必须使用预先计算的训练均值和方差,这可能会导致不同的结果。

这个问题的重要性促使人们创建替代方法以避免对批处理的依赖。

Layer Normalization

71ce214a-c6a9-11ec-bce3-dac502259ad0.png

这是Geoffrey E. Hinton等人在2016年[4]中首次尝试减少对批大小的约束。提出这个方法的主要原因是无法找到将BN应用于递归神经网络,需要找到一个替代的方法。

71dc9af4-c6a9-11ec-bce3-dac502259ad0.png

在深度神经网络中,由于层数是固定的,因此很容易存储每个 BN 层的统计信息。然而在 RNN 中,输入和输出形状的长度不同。因此,在这种情况下,最好使用单个时间步长(样本)而不是整个批次的统计信息进行标准化。

def LayerNorm(x, gamma, beta, eps=1e-5): # x: input shape [N, C, H, W] N, C, H, W = x.shape mean = torch.mean(input=x, dim=[1,2,3], keepdim=True) var = torch.var(input=x, dim=[1,2,3], keepdim=True) # mean, var shape: [N, 1, 1, 1] x = (x - mean) / torch.sqrt(var + eps) return x * gamma + beta

在这种方法中,batch(N) 中的每个示例都在 [C, H, W] 维度上进行了归一化。与 BN 一样,它可以加速和稳定训练,并且不受批次的限制。此方法可用于批量为 1 的在线学习任务。

Instance Normalization

71f5635e-c6a9-11ec-bce3-dac502259ad0.png

Dmitry Ulyanov 等人在 2016 年的论文 [5] 中介绍了Instance Normalization。这是另一种尝试减少对批处理的依赖以改善样式传输网络的结果。

def InstanceNorm(x, gamma, beta, eps=1e-5): # x: input shape [N, C, H, W] N, C, H, W = x.shape mean = torch.mean(input=x, dim=[2,3], keepdim=True) var = torch.var(input=x, dim=[2,3], keepdim=True) # mean, var shape: [N, C, 1, 1] x = (x - mean) / torch.sqrt(var + eps) return x * gamma + beta

跨批次和通道的标准化允许从图像中删除特定的对比度信息,这有助于泛化。

这种方法在 Pix2Pix 或 CycleGAN 等生成模型中广受欢迎,并成为著名的 StyleGAN2 中使用的自适应实例归一化的先驱。

Group Normalization

72009cce-c6a9-11ec-bce3-dac502259ad0.png

Group Normalization 在 2018[1] 论文中被引入,它直接解决了 CNN 的 BN 限制。主要针对的是分布式学习,其中批次被分成许多机器。这些是在少数例子上训练的,比如 6-8,在某些情况下,甚至是 1-2。

721d068e-c6a9-11ec-bce3-dac502259ad0.png

GN 可以理解为Layer 和Instance的混合。GN 将通道分成组并在它们之间进行标准化。该方案使计算独立于批量大小。

def GroupNorm(x, gamma, beta, G, eps=1e-5): # x: input features with shape [N, C, H, W] # G : number of groups N, C, H, W = x.shape x = torch.reshape(input=x, shape=[N, G, C // G, H, W]) mean = torch.mean(input=x, dim=[2,3,4], keepdim=True) var = torch.var(input=x, dim=[2,3,4], keepdim=True) # mean, var shape : [N, G, 1, 1, 1] x = (x - mean) / torch.sqrt(var + eps) x = torch.reshape(input=x, shape=[N, C, H, W]) return x * gamma + beta

GN 优于在小批量上训练的 BN,但无法击败大批量的结果,但是这是一个很好的起点。

上面的针对于激活的归一化方法我们基本上都听说过也经常会用到,下面我们来介绍针对权重的归一化方法。

Weight Standardization

722c5922-c6a9-11ec-bce3-dac502259ad0.png

我们已经对输入和层输出进行了标准化,唯一剩下的就是权重。因为它们可以在没有任何控制的情况下变大,尤其是当我们无论如何都要标准化输出时。通过标准化权重,我们实现了更平滑的损失和更稳定的训练。

def WeightStand(w, eps=1e-5): # w: input features shape [Cin, Cout, kernel_size, kernel_size] mean = torch.mean(input=w, dim=[0,2,3], keepdim=True) var = torch.var(input=w, dim=[0,2,3], keepdim=True) # mean, var shape : [1, Cout, 1, 1] w = (w - mean) / torch.sqrt(var + eps) return w

权重的标准化是Group Normalization的一个很好的辅助。在仅使用一个样本的 BN(大批量)情况下,将这些方法结合起来会产生更好的结果。

72454180-c6a9-11ec-bce3-dac502259ad0.png

除此以外,有人还提出了BCN方法,称为批处理通道规范化。简而言之,每一层同时使用BN和GN。

总结

归一化是深度学习中的一个基本概念。它加快了计算速度并稳定了训练。多年来发展了许多不同的技术。本篇文章整理了目前与它相关的方法,希望对你有所帮助

审核编辑 :李倩

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

    关注

    42

    文章

    4732

    浏览量

    100372
  • 数据集
    +关注

    关注

    4

    文章

    1200

    浏览量

    24606

原文标题:深度学习中的归一化技术全面总结

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    激光雷达技术的基于深度学习的进步

    信息。这使得激光雷达在自动驾驶、无人机、机器人等领域具有广泛的应用前景。 二、深度学习技术的发展 深度学习是机器
    的头像 发表于 10-27 10:57 199次阅读

    AI大模型与深度学习的关系

    AI大模型与深度学习之间存在着密不可分的关系,它们互为促进,相辅相成。以下是对两者关系的介绍: 深度学习是AI大模型的基础
    的头像 发表于 10-23 15:25 246次阅读

    英伟达推出归一化Transformer,革命性提升LLM训练速度

    英伟达团队近日在AI领域投下了枚震撼弹,他们提出了种全新的神经网络架构——归一化Transformer(nGPT)。这创新架构基于超球面(hypersphere)进行表示
    的头像 发表于 10-23 11:30 283次阅读

    FPGA做深度学习能走多远?

    的发展前景较为广阔,但也面临些挑战。以下是些关于 FPGA 在深度学习应用前景的观点,仅供参考: • 优势方面: • 高度定制
    发表于 09-27 20:53

    深度学习反卷积的原理和应用

    像分割、图像重建和生成对抗网络(GANs)等,反卷积展现出了其独特的优势和广泛的应用前景。本文将详细探讨深度学习的反卷积技术,包括其定义、原理、实现方式、应用场景以及与其他上采样方法
    的头像 发表于 07-14 10:22 1150次阅读

    深度学习模型的过拟合与正则

    测试数据或新数据上表现不佳的现象。为了解决这个问题,正则(Regularization)技术应运而生,成为深度学习不可或缺的
    的头像 发表于 07-09 15:56 637次阅读

    深度学习的时间序列分类方法

    时间序列分类(Time Series Classification, TSC)是机器学习深度学习领域的重要任务之,广泛应用于人体活动识别、系统监测、金融预测、医疗诊断等多个领域。随
    的头像 发表于 07-09 15:54 591次阅读

    深度学习的无监督学习方法综述

    深度学习作为机器学习领域的个重要分支,近年来在多个领域取得了显著的成果,特别是在图像识别、语音识别、自然语言处理等领域。然而,深度
    的头像 发表于 07-09 10:50 347次阅读

    深度学习在视觉检测的应用

    深度学习是机器学习领域中的个重要分支,其核心在于通过构建具有多层次的神经网络模型,使计算机能够从大量数据自动
    的头像 发表于 07-08 10:27 559次阅读

    深度学习的模型权重

    深度学习充满无限可能性的领域中,模型权重(Weights)作为其核心组成部分,扮演着至关重要的角色。它们不仅是模型学习的基石,更是模型智能的源泉。本文将从模型权重的定义、作用、优
    的头像 发表于 07-04 11:49 705次阅读

    深度学习在自动驾驶的关键技术

    随着人工智能技术的飞速发展,自动驾驶技术作为其中的重要分支,正逐渐走向成熟。在自动驾驶系统深度学习
    的头像 发表于 07-01 11:40 602次阅读

    GPU在深度学习的应用与优势

    人工智能的飞速发展,深度学习作为其重要分支,正在推动着诸多领域的创新。在这个过程,GPU扮演着不可或缺的角色。就像超级英雄电影的主角
    的头像 发表于 12-06 08:27 1171次阅读
    GPU在<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>中</b>的应用与优势

    智能车电磁归一化该怎么处理

    归一化处理 很多开始的小白,在做电磁这部分时,可能并不太知道归一化,只是通过滤波算法处理后就用解算出来的电感数值,开始写控制算法,这样导致的结果就是,调出来的车可能容错率不高,适应
    的头像 发表于 11-28 17:45 823次阅读

    电磁循迹什么是归一化

    什么是归一化 归一化就是将所有数据都变成0-1之间的数,将数据映射到0~1范围之内处理,使数据观察更便捷快速。 在电磁车行驶过程,由于需要通过分析各个电感采集值的情况来判定前方为何种路段。 所以
    的头像 发表于 11-28 15:50 837次阅读

    深度学习技术与边缘学习技术的不同之处

    如今,AI技术的广泛应用已经成为推动制造和物流领域自动的核心驱动力。康耐视所推出的深度学习和边缘学习
    的头像 发表于 11-17 10:44 526次阅读