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

    文章

    7315

    浏览量

    94007
  • Batch
    +关注

    关注

    0

    文章

    6

    浏览量

    7390
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123929

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于六类网线一些问题的解答

    今天我们就围绕网友一些常见的关于六类网线的问题进行下汇总式解答: 问 六类网线可以当电源用吗? 答 六类网线并不是设计用于传输电力的电缆,因此般不建议将其用于电源传输。 尽管六类网线的线芯可以
    的头像 发表于 12-09 11:13 106次阅读

    贴片电容精度J±5%的一些详细知识

    贴片电容精度J±5%表示电容的实际值与标称值之间的偏差范围在±5%以内 ,以下是关于贴片电容精度J±5%的一些详细知识: 、精度等级含义 J±5% :字母“J”在贴片电容的标识中通常表示标称精度
    的头像 发表于 11-20 14:38 182次阅读
    贴片电容精度J±5%的<b class='flag-5'>一些</b>详细知识

    蜂鸟E203的浮点指令集F的一些实现细节

    蜂鸟E203的浮点指令集F的一些实现细节 既然E203不是多发射,且为了节省面积,一些指令使用FPU内的同个子模块来执行,即FPU同时只能进行种计算,我们只在FPU内部署了11个
    发表于 10-24 08:57

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练个手写数字识别的神经网络
    发表于 10-22 07:03

    射频工程师需要知道的一些常见转接头

    ,是由于转接头的损坏造成的,而且有些接头的连接固定的方式不对,每次修好的仪器,过去后客户又按照他们原来的方式去拧紧了。特别是在一些生产型的企业,由于操作人员流动性比较
    的头像 发表于 08-06 17:39 890次阅读
    射频工程师需要知道的<b class='flag-5'>一些</b>常见转接头

    Debian和Ubuntu哪个好一些

    兼容性对比Debian和Ubuntu哪个好一些,并为您揭示如何通过RAKsmart服务器释放Linux系统的最大潜能。
    的头像 发表于 05-07 10:58 877次阅读

    文搞懂波峰焊工艺及缺陷预防

    效果,需要考虑焊料配方、助焊剂、元件和PCB的匹配、工装设计及过程控制参数等因素。但是,当出现焊接不良时,可能有多个原因导致。下面介绍一些常见的波峰焊焊接不良、产生原因的分析方法及改善建议。
    发表于 04-09 14:44

    树莓派在自动化控制项目中的一些潜在应用

    自动化控制项目中的一些潜在应用。之前,我们已经为Arduino平台探讨了相同的话题。我们确定Arduino是个出色的教育工具,但由于一些限制,它无法在工业环境中完全
    的头像 发表于 03-25 09:45 481次阅读
    树莓派在自动化控制项目中的<b class='flag-5'>一些</b>潜在应用

    收藏的一些库存,直流无刷技术+源码+论文(建议打包)

    这也是我网络上淘过来收藏的一些资料,免费跟大家起分享下,建议下载哦,收藏不易
    发表于 03-17 20:17

    使用DLPC3478+DLPA3005做了款板子,修改了batch file关灯但是无效,怎么回事?

    我们现在使用DLPC3478+DLPA3005做了款板子,使用TI官网的9.0.1的red_only固件可以驱动光机,但是光机开机会投splash,我修改了batch file关灯但是无效
    发表于 02-17 06:05

    SMA接头的优势和缺陷

    SMA接头以其高精密性、良好的可靠性、稳定性好等特点,在电子元器件领域应用广泛。但在使用过程中,因其材质及生产工艺的影响,在应用中,SMA接头不可避免的会显露出一些缺陷,今天我们就起来看看SMA接头在应用领域到底有哪些
    的头像 发表于 02-15 11:11 1178次阅读
    SMA接头的优势和<b class='flag-5'>缺陷</b>

    独立服务器和云服务器哪个快一些

    独立服务器和云服务器哪个快一些?在数字服务部署中,独立服务器与云服务器的速度差异并非绝对,需结合资源配置与应用场景综合判断。以下是UU云对独立服务器和云服务器的核心维度对比分析:
    的头像 发表于 02-05 10:08 811次阅读

    AN-202: IC放大器用户指南:去耦、接地及其他一些要点

    电子发烧友网站提供《AN-202: IC放大器用户指南:去耦、接地及其他一些要点.pdf》资料免费下载
    发表于 01-13 15:16 3次下载
    AN-202: IC放大器用户指南:去耦、接地及其他<b class='flag-5'>一些</b>要点

    AN29-关于DC-DC转换器的一些想法

    电子发烧友网站提供《AN29-关于DC-DC转换器的一些想法.pdf》资料免费下载
    发表于 01-08 13:57 0次下载
    AN29-关于DC-DC转换器的<b class='flag-5'>一些</b>想法

    ads1232获取的数据中经常有一些比较大的值或者一些错误值,这个是因为什么原因?

    数据中经常有一些比较大的值 或者一些错误值,这个是因为什么原因。最后8位数据致在跳动,是不是我的基准电压不够稳定。 -----85b1----- -----858d-----
    发表于 01-08 08:19