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

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

3天内不再提示

batch normalization时的一些缺陷

深度学习自然语言处理 来源:深度学习自然语言处理 作者:Sahil Uppal 2020-11-03 17:27 次阅读

导读

batch normalization时的一些缺陷。

Batch Normalization确实是深度学习领域的重大突破之一,也是近年来研究人员讨论的热点之一。Batch Normalization是一种被广泛采用的技术,使训练更加快速和稳定,已成为最有影响力的方法之一。然而,尽管它具有多种功能,但仍有一些地方阻碍了该方法的发展,正如我们将在本文中讨论的那样,这表明做归一化的方法仍有改进的余地。

我们为什么要用Batch Normalization?

在讨论任何事情之前,首先,我们应该知道Batch Normalization是什么,它是如何工作的,并讨论它的用例。

什么是Batch Normalization

在训练过程中,当我们更新之前的权值时,每个中间激活层的输出分布会在每次迭代时发生变化。这种现象称为内部协变量移位(ICS)。所以很自然的一件事,如果我想防止这种情况发生,就是修正所有的分布。简单地说,如果我的分布变动了,我会限制住这个分布,不让它移动,以帮助梯度优化和防止梯度消失,这将帮助我的神经网络训练更快。因此减少这种内部协变量位移是推动batch normalization发展的关键原则。

它如何工作

Batch Normalization通过在batch上减去经验平均值除以经验标准差来对前一个输出层的输出进行归一化。这将使数据看起来像高斯分布。

其中μ和*σ^2^*分别为批均值和批方差。

并且,我们学习了一个新的平均值和协方差γ和β。所以,简而言之,你可以认为batch normalization是帮助你控制batch分布的一阶和二阶动量。

vgg16网络的中间卷积层的特征分布输出。(左)没有任何归一化,(右)应用了batch normalization

优点

我将列举使用batch normalization的一些好处,但是我不会详细介绍,因为已经有很多文章讨论了这个问题。

更快的收敛。

降低初始权重的重要性。

鲁棒的超参数。

需要较少的数据进行泛化。

1. 更快的收敛,2. 对超参数更鲁棒

Batch Normalization的诅咒

好,让我们回到本文的出发点,在许多情况下batch normalization开始伤害性能或根本不起作用。

在使用小batch size的时候不稳定

如上所述,batch normalization必须计算平均值和方差,以便在batch中对之前的输出进行归一化。如果batch大小比较大的话,这种统计估计是比较准确的,而随着batch大小的减少,估计的准确性持续减小。

ResNet-50在Batch Norm使用32、16、8、4、2张/GPU图像时的验证错误

以上是ResNet-50的验证错误图。可以推断,如果batch大小保持为32,它的最终验证误差在23左右,并且随着batch大小的减小,误差会继续减小(batch大小不能为1,因为它本身就是平均值)。损失有很大的不同(大约10%)。

如果batch大小是一个问题,为什么我们不使用更大的batch?我们不能在每种情况下都使用更大的batch。在finetune的时候,我们不能使用大的batch,以免过高的梯度对模型造成伤害。在分布式训练的时候,大的batch最终将作为一组小batch分布在各个实例中。

导致训练时间的增加

NVIDIA和卡耐基梅隆大学进行的实验结果表明,“尽管Batch Normalization不是计算密集型,而且收敛所需的总迭代次数也减少了。”但是每个迭代的时间显著增加了,而且还随着batch大小的增加而进一步增加。

ResNet-50 在ImageNet上使用 Titan X Pascal

你可以看到,batch normalization消耗了总训练时间的1/4。原因是batch normalization需要通过输入数据进行两次迭代,一次用于计算batch统计信息,另一次用于归一化输出。

训练和推理时不一样的结果

例如,在真实世界中做“物体检测”。在训练一个物体检测器时,我们通常使用大batch(YOLOv4和Faster-RCNN都是在默认batch大小= 64的情况下训练的)。但在投入生产后,这些模型的工作并不像训练时那么好。这是因为它们接受的是大batch的训练,而在实时情况下,它们的batch大小等于1,因为它必须一帧帧处理。考虑到这个限制,一些实现倾向于基于训练集上使用预先计算的平均值和方差。另一种可能是基于你的测试集分布计算平均值和方差值。

对于在线学习不好

与batch学习相比,在线学习是一种学习技术,在这种技术中,系统通过依次向其提供数据实例来逐步接受训练,可以是单独的,也可以是通过称为mini-batch的小组进行。每个学习步骤都是快速和便宜的,所以系统可以在新的数据到达时实时学习。

典型的在线学习pipeline

由于它依赖于外部数据源,数据可能单独或批量到达。由于每次迭代中batch大小的变化,对输入数据的尺度和偏移的泛化能力不好,最终影响了性能。

对于循环神经网络不好

虽然batch normalization可以显著提高卷积神经网络的训练和泛化速度,但它们很难应用于递归结构。batch normalization可以应用于RNN堆栈之间,其中归一化是“垂直”应用的,即每个RNN的输出。但是它不能“水平地”应用,例如在时间步之间,因为它会因为重复的重新缩放而产生爆炸性的梯度而伤害到训练。

[^注]: 一些研究实验表明,batch normalization使得神经网络容易出现对抗漏洞,但我们没有放入这一点,因为缺乏研究和证据。

可替换的方法

这就是使用batch normalization的一些缺点。在batch normalization无法很好工作的情况下,有几种替代方法。

Layer Normalization

Instance Normalization

Group Normalization (+ weight standardization)

Synchronous Batch Normalization

总结

所以,看起来训练深度神经网络很简单,但我不认为它很容易。从这个意义上说,我可以选择的架构很少,每个模型都有固定的学习速度,固定的优化器和固定的技巧。这些技巧是通过自然选择选择的,就像有人想出了一些技巧,人们引入之后如果有效,就会保留,如果无效,人们最终会忘记,并没有人再去使用它。除此之外,batch normalization是深度学习发展中的一个里程碑技术。然而,正如前面所讨论的,沿着batch 维度进行归一化引入了一些问题,这表明归一化技术仍有改进的空间。

责任编辑:xj

原文标题:【重点】Batch Normalization的诅咒

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

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

    关注

    8

    文章

    6898

    浏览量

    88838
  • Batch
    +关注

    关注

    0

    文章

    6

    浏览量

    7151
  • 深度学习
    +关注

    关注

    73

    文章

    5493

    浏览量

    120983

原文标题:【重点】Batch Normalization的诅咒

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一些常见的动态电路

    无论是模电还是数电,理论知识相对来说还是比较枯燥,各种电路原理理解清楚不算容易,换种生动形象的方式或许会增加一些趣味性,也更容易理解这些知识。下面整理了一些常见的电路,以动态图形的方式展示。 整流
    的头像 发表于 11-16 09:26 199次阅读
    <b class='flag-5'>一些</b>常见的动态电路

    PCBA加工质量控制:如何识别与预防常见缺陷

    站式PCBA智造厂家今天为大家讲讲PCBA加工过程中常见的缺陷有哪些?PCBA加工过程中可能遇到的缺陷。在PCBA贴片加工过程中,尽管追求尽善尽美,但难免会遇到一些加工
    的头像 发表于 11-14 09:36 140次阅读

    分享一些常见的电路

    理解模电和数电的电路原理对于初学者来说可能比较困难,但通过一些生动的教学方法和资源,可以有效地提高学习兴趣和理解能力。 下面整理了一些常见的电路,以动态图形的方式展示。 整流电路 单相桥式整流
    的头像 发表于 11-13 09:28 210次阅读
    分享<b class='flag-5'>一些</b>常见的电路

    LED驱动器应用的一些指南和技巧

    电子发烧友网站提供《LED驱动器应用的一些指南和技巧.pdf》资料免费下载
    发表于 09-25 11:35 0次下载
    LED驱动器应用的<b class='flag-5'>一些</b>指南和技巧

    SMT锡膏加工中如何处理缺陷

    在SMT贴片加工中,会出现一些加工缺陷和不良,锡膏缺陷就是其中之,但可以通过一些方法来避免,那么我们应该怎么做呢?以下是深圳佳金源锡膏厂家
    的头像 发表于 09-03 16:03 225次阅读
    SMT锡膏加工中如何处理<b class='flag-5'>缺陷</b>?

    咨询一些关于LED灯具的问题

    各位大佬,咨询一些关于LED灯具的问题 120W的吸顶灯,用的非隔离式电源,用不到1年,灯具就会闪烁、频闪或不亮,主要是什么原因造成的?是不是驱动芯片太差?
    发表于 07-02 22:33

    【大规模语言模型:从理论到实践】- 每日进步点点

    据中微小变化的敏感度,从而提高模型的泛化能力。 二、常见的归化方法 Batch Normalization(BatchNorm) 原理:在batch数据中对数据的
    发表于 05-31 19:54

    细谈SolidWorks教育版的一些基础知识

    SolidWorks教育版是款广泛应用于工程设计和教育领域的三维建模软件。它具备直观易用的操作界面和强大的设计功能,为学生提供了个学习和实践的平台。在本文中,我们将详细探讨SolidWorks教育版的一些基础知识,帮助初学者
    的头像 发表于 04-01 14:35 319次阅读

    Tekvpi探头接口的一些好处是什么?

    Tekvpi探针接口的一些好处是什么? Tekvmi探针接口的最大好处是多功能性和易于使用。 示波器 使用Tekvmi接口支持范围广泛的 普罗布斯 包括Tekvmi探针,BMC
    的头像 发表于 03-22 10:32 380次阅读
    Tekvpi探头接口的<b class='flag-5'>一些</b>好处是什么?

    一些有关通信电路的资料?

    有关嵌入式之间DSP、ARM、FPGA三者之间和这三款芯片和外部电路之间通信的一些资料,比如说芯片之间的并行通信和芯片和外部电路之间的串行通信,MODBUS、DP、CAN等,一些一些常用的通信协议的
    发表于 03-03 18:53

    基于深度学习的芯片缺陷检测梳理分析

    虽然表面缺陷检测技术已经不断从学术研究走向成熟的工业应用,但是依然有一些需要解决的问题。基于以上分析可以发现,由于芯片表面缺陷的独特性质,通用目标检测算法不适合直接应用于芯片表面缺陷
    发表于 02-25 14:30 1291次阅读
    基于深度学习的芯片<b class='flag-5'>缺陷</b>检测梳理分析

    无纺布缺陷在线检测仪怎么用

    随着科技的不断发展,无纺布作为种新型环保材料,已经广泛应用于各个领域。然而,无纺布的生产过程中难免会出现一些缺陷,如针眼、孔洞等。为了提高无纺布的质量,许多企业开始使用无纺布缺陷在线
    的头像 发表于 02-03 14:58 467次阅读
    无纺布<b class='flag-5'>缺陷</b>在线检测仪怎么用

    一些无功补偿装置SVG的资料

    一些SVG电路原理和功能码相关的技术说明书,想了解一些SVG的工作原理和工作过程
    发表于 02-03 10:13

    对于大模型RAG技术的一些思考

    大模型或者句向量在训练时,使用的语料都是较为通用的语料。这导致了这些模型,对于垂直领域的知识识别是有缺陷的。它们没有办法理解企业内部的一些专用术语,缩写所表示的具体含义。这样极大地影响了生成向量的精准度,以及大模型输出的效果。
    的头像 发表于 12-07 09:41 1103次阅读
    对于大模型RAG技术的<b class='flag-5'>一些</b>思考

    提高嵌入式代码质量的一些方法

    的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。
    的头像 发表于 11-30 09:15 436次阅读