【深度学习基础/面试高频问题】归一化-为何BN层能帮助模型优化

深度学习基础知识

    • 为何BN能够帮助训练优化
      • 1、发现问题
      • 2、BatchNorm 的性能是否源于控制内部协变量偏移?
      • 3、为什么BatchNorm有效?
        • 1)BatchNorm的平滑效果
        • 2)优化景观的探索
        • 3)BatchNorm 是平滑景观的最佳(唯一?)方法吗?
      • 4、理论分析
      • 5、相关工作
      • 6、结论

参考文献:
1、How Does Batch Normalization Help Optimization?How Does Batch Normalization Help Optimization?

为何BN能够帮助训练优化

总结于论文:How Does Batch Normalization Help Optimization?How Does Batch Normalization Help Optimization?

尽管BN很普遍,但BN有效性的原因并不明确,普遍的看法是这种有效性来源于“控制训练过程中层输入分布的变化,以减少所谓的内部协变量偏移”,但这项工作中我们证明这种层输入的分布稳定性与与BN的成功关系不大,相反,使得BN成功的关键在于“使得优化过程中的损失函数表面更加平滑,有助于梯度下降算法更加稳定,能够有效的找到损失函数最小值”

目前,BatchNorm 成功的最广泛接受的解释,以及它最初的动机,与所谓的内部协变量偏移(ICS)有关。非正式地说,ICS指的是由于前一层的更新导致的层输入分布的变化。人们推测这种持续的变化对训练产生负面影响。BatchNorm 的主要目标是减少ICS,从而缓解这种影响

我们的贡献。我们的起点是证明BatchNorm 的性能提升与内部协变量偏移的减少之间似乎没有联系。或者这种联系最多是脆弱的。事实上,我们发现BatchNorm 在某种意义上甚至可能没有减少内部协变量偏移。

然后我们将注意力转向识别BatchNorm 成功的根源。具体来说,我们证明BatchNorm 以一种基本方式影响网络训练:它使相应优化问题的景观显著更平滑。这确保了,特别是梯度更可预测,从而允许使用更大的学习率范围和更快的网络收敛。我们还提供了这些发现的实证演示以及它们的理论依据。我们证明,在自然条件下,BatchNorm 模型中的损失和梯度(也称为 β-平滑性[21])的 Lipschitz 连续性都得到了改善。

最后,我们发现这种平滑效果并非BatchNorm 独有。许多其他自然归一化技术具有类似的(有时甚至更强)效果。特别是,它们在训练性能上都提供了类似的改进

我们相信,理解BatchNorm 等基本技术的根本原因将使我们对神经网络训练的潜在复杂性有更深刻的把握,并反过来,将为这一背景下的进一步算法进步提供信息。


1、发现问题

作者通过可视化VGG16网络的训练过程发现,加了BN层后的model确实表现更好。但是可视化中间特征层输出数值分布后,发现有无BN层对于数值分布的稳定性而言并没有太大差异。
【深度学习基础/面试高频问题】归一化-为何BN层能帮助模型优化_第1张图片图图1:比较了(a) 训练(优化)和 (b) 测试(泛化)性能,这些性能是在一个标准 VGG 网络在 CIFAR-10 上训练时,使用和不使用 BatchNorm 的结果(详细信息见附录 A)。在带有 BatchNorm 层的模型中,训练速度有一致的提升。© 尽管 BatchNorm 和非 BatchNorm 网络之间的性能差距很明显,但层输入分布的演变差异似乎不那么显著。(在这里,我们采样了给定层的激活值,并可视化了它们在训练步骤中的分布。)

我们首先研究ICS 与 BatchNorm 之间的联系。具体来说,我们首先在 CIFAR-10 [15] 上训练一个标准的 VGG [26] 架构,使用和不使用 BatchNorm。正如预期的,图1(a) 和 (b) 显示了使用 BatchNorm 层训练的网络在优化和泛化性能方面的显著改进。然而,图1© 呈现了一个令人惊讶的发现。在这张图中,我们通过绘制训练过程中随机输入的分布(跨一个批量)来可视化 BatchNorm 在多大程度上稳定了层输入的分布。令人惊讶的是,有无 BatchNorm 层的网络在分布稳定性(均值和方差的变化)的差异似乎微不足道。这一观察引发了以下问题:(1) BatchNorm 的有效性确实与内部协变量偏移有关吗?(2) BatchNorm 对层输入分布的稳定化甚至在减少 ICS 方面有效吗?


2、BatchNorm 的性能是否源于控制内部协变量偏移?

BN层是否有效是否是源于输入值的稳定性?即数值分布相同?
在此,作者做了三个model:1、没有+BN层的VGG16网络,定义为base model 2、加了BN层的vgg16网络,定义为normal model 3、在BN层后加上噪声扰动的model,定义为noisy model
结果发现:
1、noisy model和normal model的表现一样,都优于base model
2、比较数值分布稳定性会发现,noisy mode的分布l比base model的分布更不稳定
由此可以说明,并不是因为BN让输入分布更加统一才使得model更易训练收敛

之前的核心论断是,控制层输入分布的均值和方差直接与改善的训练性能相关。然而,我们能否证实这一论断

我们提出了以下实验。我们在 BatchNorm 层之后注入随机噪声来训练网络。具体来说,我们使用从非零均值和非单位方差的分布中采样的独立同分布(i.i.d.)噪声扰动每个小批量中每个样本的每个激活值。我们强调这种噪声分布在每个时间步都会变化(详见附录 A 中的实现细节)。
【深度学习基础/面试高频问题】归一化-为何BN层能帮助模型优化_第2张图片
图2:分布稳定性与 BatchNorm 性能之间的联系:我们比较了未经过 BatchNorm 训练的 VGG 网络(标准)、经过 BatchNorm 训练的网络(标准+BatchNorm)以及在 BatchNorm 层中显式添加了“协变量偏移”的网络(标准+“有噪声”BatchNorm)。
在后一种情况中,我们通过向每个批次归一化的激活值独立添加随时间变化的、非零均值和非单位方差的噪声来引入分布不稳定性。“有噪声”BatchNorm 模型几乎与标准 BatchNorm 模型的性能相匹配,尽管完全失去了分布稳定性。我们采样了给定层的激活值,并可视化了它们的分布(也参见图7)。

请注意,这种噪声注入产生了严重的协变量偏移,使得每次时间步的激活值发生偏斜。因此,层中的每一单元在每个时间步都会经历不同的输入分布。然后我们测量这种故意引入的分布不稳定性对 BatchNorm 性能的影响。图2 可视化了标准、BatchNorm 和我们的“有噪声”BatchNorm 网络的训练行为。显示了三个网络中相同深度的层的激活值分布随时间的变化。

观察到带有 BatchNorm 层的模型和“有噪声”BatchNorm 层的模型之间的性能差异几乎不存在。此外,这两个网络的表现都比标准网络要好得多。而且,“有噪声”BatchNorm 网络的分布甚至比标准非 BatchNorm 网络更不稳定,但它在训练方面仍然表现更好。为了从噪声的大小来看,我们在图7中绘制了选定层的随机激活值的均值和方差。此外,向标准(非 BatchNorm)网络的激活值添加相同数量的噪声会完全阻止其训练。显然,这些发现很难与 BatchNorm 的性能增益源于层输入分布稳定性增加的论断相协调。


3、为什么BatchNorm有效?

除了减少输出的差异以外,Ioffe 和 Szegedy [10] 还确定了 BatchNorm 的一些额外属性。这些属性包括防止梯度爆炸或消失、对不同设置的超参数(如学习率和初始化方案)的鲁棒性,以及使大多数激活值远离非线性区域的饱和区域。所有这些属性显然对训练过程有益。但它们是 BatchNorm 机制的相当简单的结果,并没有揭示出导致 BatchNorm 成功的根本因素。这里是否有更基本的现象在起作用?

1)BatchNorm的平滑效果

实际上,我们确定了 BatchNorm 对训练过程的关键影响:它重新参数化了底层优化问题,使其景观显著更平滑。这种影响的第一个表现是损失函数的 Lipschitz 连续性的改善。也就是说,损失的变化率更小,梯度的大小也更小。然而,还有一个更强烈的效果在起作用。即 BatchNorm 的重新参数化使损失的梯度也更 Lipschitz。换句话说,损失表现出显著更好的“有效” β-平滑性。

这些平滑效果以主要方式影响训练算法的性能。要理解为什么,请回想一下,在标准的(非 BatchNorm)深度神经网络中,损失函数不仅非凸,而且往往有许多“凹陷”,平坦区域和尖锐的局部最小值 [17]。这使得基于梯度下降的训练算法不稳定,例如,由于梯度爆炸或消失,以及因此对学习率和初始化的选择高度敏感。

现在,BatchNorm 重新参数化的关键含义是它使梯度更可靠和可预测。毕竟,梯度的 Lipschitz 连续性的改善使我们有信心,当我们在计算出的梯度方向上迈出更大的步伐时,这个梯度方向仍然是实际梯度方向的相当准确的估计。因此,它使得任何(基于梯度的)训练算法能够采取更大的步骤,而不会遇到突然变化的损失景观,如平坦区域(对应梯度消失)或尖锐的局部最小值(导致梯度爆炸)。这反过来又使我们能够使用更广泛的(因此更大)的学习率(见附录 B 中的图10),并且总体上使训练显著更快,对超参数选择的敏感性更低。(这也说明了我们之前讨论的 BatchNorm 属性如何可以被视为这种平滑效果的体现。

2)优化景观的探索

【深度学习基础/面试高频问题】归一化-为何BN层能帮助模型优化_第3张图片
图4:VGG网络优化景观的分析。在特定的训练步骤中,我们测量了损失的变化(阴影区域)(a)以及当我们沿着梯度方向移动时梯度的“有效”β-平滑性(c)的二阶变化(b)。在所有这些测量中,带有BatchNorm的网络都显示出了明显的改进,表明损失景观的行为更加稳定。(在这里,我们将最大距离限制为η=0.4×梯度,因为对于更大的步长,标准网络的表现会更差(见图1)。然而,BatchNorm即使在更大的距离上也继续提供平滑效果。)请注意,这些结果得到了我们理论发现的支持(第4节)。

为了展示批量归一化(BatchNorm)对损失本身稳定性(即其利普希茨性)的影响,对于训练过程中的每一步,我们计算该步的损失梯度,并测量沿着该方向移动时损失的变化——见图4(a)。我们发现,与使用批量归一化的情况相比,普通(即非批量归一化)网络的损失在梯度方向上的值范围非常宽,尤其是在训练的初始阶段。(在后期阶段,网络已经接近收敛。)

同样,为了说明梯度的稳定性和可预测性的增加,我们对训练中某一点的损失梯度与沿原始梯度方向不同点对应的梯度之间的`2距离进行了类似的测量。图4(b)显示了普通网络和批量归一化网络在梯度可预测性方面存在显著差异(接近两个数量级),尤其是在训练初期。
为了进一步展示批量归一化对损失梯度的稳定性和利普希茨性的影响,**我们在图4(c)中绘制了普通网络和批量归一化网络在整个训练过程中的“有效”β平滑性。(“有效”在这里指的是测量我们沿着梯度方向移动时梯度的变化。)**同样,我们观察到这些网络之间存在一致的差异。
我们通过考虑线性深度网络来补充上述检查:如附录B中的图9和图12所示,批量归一化的平滑效果在那里也存在。

最后,我们强调,尽管我们的探索集中在梯度方向上的损失行为(因为它们是从训练过程的角度来看至关重要的),但当我们检查其他(随机)方向时,损失的行为也是类似的。

3)BatchNorm 是平滑景观的最佳(唯一?)方法吗?

鉴于我们对批量归一化及其有效性根源的新理解,自然会想:这种平滑效果是批量归一化的独特特征吗?或者可以用其他归一化方案实现类似的效果?

为了回答这个问题,我们研究了几种基于自然数据统计的归一化策略。具体来说,我们研究了固定激活函数的一阶矩(如批量归一化所做),然后通过其p范数的平均值对它们进行归一化的方案,其中p = 1, 2, ∞。注意,对于这些归一化方案,层输入的分布不再像高斯分布
(见图14)。因此,使用这种p范数进行归一化不再能保证对分布矩或分布稳定性有任何控制。

结果见附录B中的图13、11和12。我们观察到所有归一化策略都提供了与批量归一化相当的性能。实际上,对于深度线性网络,1归一化甚至比批量归一化表现得更好。注意,从定性上看,p归一化技术导致的分布偏移(如[10]中所考虑的)比普通(即未归一化)网络更大,但它们仍然产生了改进的优化性能。此外,所有这些技术都导致了景观的平滑性得到改善,类似于批量归一化的效果。(见附录B的图11和12。)这表明批量归一化对训练的积极影响可能在某种程度上是偶然的。因此,进行归一化方案设计空间的系统探索可能是有价值的,因为它可以带来更好的性能。

4、理论分析

“俺不中嘞,理论分析好繁琐,感兴趣的可以自己看”

【深度学习基础/面试高频问题】归一化-为何BN层能帮助模型优化_第4张图片
图5:我们在理论分析中比较的两种网络架构:(a)普通的深度神经网络(DNN)(没有批量归一化层);(b)与(a)中相同的网络,但在全连接层W之后插入了一个批量归一化层。(两个网络中所有层的参数值完全相同。)

5、相关工作

许多归一化方案被提出作为批量归一化的替代方案,包括在层之间进行归一化[1]、在小批量的子集上进行归一化[31],或者在图像维度上进行归一化[30]。权重归一化[24]采用了一种补充方法,归一化权重而不是激活函数。最后,ELU[3]和SELU[13]是两个提出的非线性例子,它们具有逐渐衰减的斜率而不是急剧饱和,并且可以用作批量归一化的替代品。这些技术提供了与批量归一化相当的改进,但没有试图解释批量归一化的成功。

此外,关于深度神经网络(DNN)优化的研究揭示了批量归一化的其他好处。Li等人[9]观察到,使用批量归一化的网络倾向于依赖较少的参数初始化来进行优化轨迹。Balduzzi等人[2]观察到,没有使用批量归一化的模型倾向于遭受不同梯度坐标和/或单元激活之间的相关性较小的问题。他们报告说,这种行为在更深的模型中更为显著,并且认为这是DNN优化的一个障碍。Morcos等人[19]关注DNN的泛化特性。他们观察到,使用批量归一化会导致模型较少依赖激活空间中的单一方向,他们发现这与模型的泛化特性有关。

最近的研究[14]确定了一些简单的、具体的设置,在这些设置中,使用批量归一化的训练变体可以证明比标准训练算法有所改进。主要思想是,解耦权重的长度和方向(如批量归一化和权重归一化[24]所做的)可以在很大程度上被利用。通过设计分别优化这些参数的算法,并使用(不同的)自适应步长,可以为这些问题实现显著更快的收敛速率。

6、结论

在这项工作中,我们研究了批量归一化(BatchNorm)作为一种用于训练深度神经网络的技术的有效性根源。我们发现,批量归一化的性能与内部协变量偏移之间广泛被认为存在的联系,充其量也是脆弱的。特别是,我们证明了内部协变量偏移的存在,至少从通常采用的分布稳定性角度来看,并不是训练性能的良好预测指标。此外,我们还表明,从优化的角度来看,批量归一化甚至可能并没有减少这种偏移。

相反,我们发现批量归一化对训练过程有一个关键的影响:它重新参数化了底层的优化问题,使其更加稳定(在损失的利普希茨性意义上)和平滑(在损失的“有效”β平滑性意义上)。这意味着用于训练的梯度更具预测性且表现良好,从而能够实现更快、更有效的优化。这种现象还解释并涵盖了批量归一化之前观察到的一些其他好处,例如对超参数设置的鲁棒性以及避免梯度爆炸/消失。

我们还表明,这种平滑效果并非批量归一化所独有。实际上,其他几种自然的归一化策略也有类似的影响,并带来了相当的性能提升。
我们相信,这些发现不仅挑战了关于批量归一化的传统观点,而且使我们更接近于更好地理解这一技术。我们还将这些结果视为一个机会,鼓励社区对深度学习的算法工具箱及其有效性的基础进行更系统的研究

最后,我们的关注点在于批量归一化对训练的影响,但我们的发现或许也能为理解批量归一化倾向于改善泛化性能提供一些线索。具体来说,有可能是批量归一化的重新参数化所产生的平滑效果促使训练过程收敛到更平坦的最小值。人们认为这样的最小值有助于实现更好的泛化[8, 11]。
我们希望未来的研究能够调查这一引人入胜的可能性。

你可能感兴趣的:(面试准备,基础理论,深度学习,人工智能,计算机视觉,图像处理)