Batch Normalization的诅咒

作者: AI公园 2020-11-02 18:38:17

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

一、我们为什么要用Batch Normalization?

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

1. 什么是Batch Normalization

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

2. 它如何工作

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

Batch Normalization的诅咒

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

Batch Normalization的诅咒

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

Batch Normalization的诅咒

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

3. 优点

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

  • 更快的收敛。
  • 降低初始权重的重要性。
  • 鲁棒的超参数。

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

Batch Normalization的诅咒
1. 更快的收敛,2. 对超参数更鲁棒

二、Batch Normalization的诅咒

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

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

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

Batch Normalization的诅咒

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分布在各个实例中。

2. 导致训练时间的增加

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

Batch Normalization的诅咒

ResNet-50 在ImageNet上使用 Titan X Pascal

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

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

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

4. 对于在线学习不好

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

Batch Normalization的诅咒

典型的在线学习pipeline

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

5. 对于循环神经网络不好

虽然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 维度进行归一化引入了一些问题,这表明归一化技术仍有改进的空间。

Batch Normalization 深度学习
上一篇:数据骗子无处不在,教你拆穿所谓“万金油” 下一篇:当AI入职FBI,克格勃直呼内行
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

1.8M超轻量目标检测模型NanoDet,比YOLO跑得快

目标检测一直是计算机视觉领域的一大难题,其目标是找出图像中的所有感兴趣区域,并确定这些区域的位置和类别。目标检测中的深度学习方法已经发展了很多年,并出现了不同类型的检测方法。

佚名 ·  2020-11-24 17:25:19
需要知识的后深度学习时代,如何高效自动构建知识图谱

知识图谱可以做什么?如何自动、高效地构建知识图谱?前沿的知识图谱自动构建技术有哪些?这篇文章将逐一解答这些问题。

Synced Lab ·  2020-11-13 15:38:12
机器学习如何颠覆金融行业

这些数字确实令人难以置信,表明该行业已经从机器学习中获得了多少收益。以下深入研究金融行业中机器学习中断的示例和真实案例研究。

Harris ·  2020-11-13 09:58:19
微软和谷歌分别开源分布式深度学习框架,各自厉害在哪?

原则上看,他们都遵循了类似的原则来训练深度学习模型。这两个项目已在各自的研究论文(PipeDream,GPipe)中进行了详细介绍,这篇文章将对此进行总结。

佚名 ·  2020-11-09 10:50:19
不要上手就学深度学习!超详细的人工智能专家路线图,GitHub数天获2.1k星

这 个学习路线图几乎涵盖了人工智能领域的所有内容,点点鼠标,就能链接所需知识。

佚名 ·  2020-11-05 09:03:04
DJL 如何正确打开 [ 深度学习 ]

为了减少Java开发者学习深度学习的成本,AWS构建了一个Deep Java Library(DJL),一个为Java开发者定制的开源深度学习框架,其为开发者对接主流深度学习框架,提供了一个接口。

小明菜市场 ·  2020-11-04 07:10:42
揭开AI、机器学习和深度学习的神秘面纱

深度学习、机器学习、人工智能——这些流行词皆代表了分析学的未来。在这篇文章中,我们将通过一些真实世界的案例来解释什么是机器学习和深度学习。在以后的文章中,我们将探索垂直用例。

雷锋字幕组 ·  2020-11-03 14:31:55
面向深度学习的五大神经网络模型及其应用

神经网络是识别一组数据中潜在关系的一系列算法。这些算法很大程度上有赖于人脑的运作方式。神经网络可以适应不断变化的输入,生成最佳结果,无需重新设计输出标准。在某种程度上,这些神经网络类似生物神经元的系统。

布加迪 ·  2020-11-02 08:00:00
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载