01
引言
批处理归一化层经常与卷积层或线性层一起用于深度学习模型中。许多最先进的计算机视觉架构(如 Inception 和 Resnet)都依靠它来创建可以更快训练的深度网络。
在本文中,我们将探讨批处理归一化层为何有效,以及在训练模型时为何需要更少的训练次数。闲话少说,我们直接开始吧!
02
BN层为何有效?
毋庸置疑,批处理归一化层(Batch Norm)运行得非常好,为深度学习架构设计和训练提供了大量可衡量的优势。然而奇怪的是,关于批量归一化层的神奇之处,至今仍没有一个公认的答案。
03
理论一:内部变量偏移
如果你和我一样,肯定会觉得这些术语很吓人!假设我们要训练一个模型,而模型需要学习的理想目标输出函数(尽管我们事先并不知道)如下。
比方说,我们输入模型的训练数据只涵盖了输出值范围的一部分。因此,模型只能学习目标函数的一个子集。如下所示:
模型对目标曲线的其他部分一无所知。它可能是任何东西。
目标曲线的其余部分
这就是 "变量偏移"(Covariate Shift)的问题所在--尽管新数据仍然符合相同的目标函数,但模型得到的数据分布与之前训练时的数据分布截然不同。
为了让模型找出适应新数据的方法,它必须重新学习一些目标输出函数。这就减慢了训练过程。如果我们从一开始就为模型提供一个涵盖所有值范围的代表性分布,它就能更快地学习目标输出。现在我们了解什么是 "变量偏移",让我们来看看它对网络训练有什么影响。
在训练过程中,网络的每一层都要学习输出函数,以适应其输入。比方说,在一次迭代中,第k层从上一层接收到了一批小型激活。然后,它根据该输入更新权重,调整输出激活。然而,在每次迭代中,前一层 "k-1 "也在做同样的事情。它调整其输出激活,从而有效地改变其分布。
变量偏移如何影响训练
因此,我们提出的假设是,批处理归一化层有助于稳定这些从一次迭代到下一次迭代的移动分布,从而加快了训练速度。
04
理论二:损失与梯度平滑
为了研究这一理论,论文进行了一项实验,分析模型在训练过程中的损失情况。我们将通过一个简单的例子来直观地说明这一点。
假设我们有一个简单的网络,它有两个权重参数(w1 和 w2)。这些权重的值可以显示在一个二维平面上,每个权重有一个轴。每个权重值的组合都对应这个二维平面上的一个点。
随着训练过程中权重的变化,我们会移动到这个曲面上的另一点。因此,我们可以绘制出权重在训练迭代过程中的轨迹。
请注意,下图只显示了每个点的权重值。为了直观地显示损失,可以想象一个三维曲面,第三个轴是相应的损失值。如果我们测量并绘制了所有不同权重组合的损失值,那么这条损失值的曲线的形状就叫做loss landscape。
该实验的目的是通过测量损失和梯度在不同点上的变化情况,来研究如果我们沿着同一方向前进,损失情况会是怎样的。他们在有BN层和没有BN层的情况下都进行了测量,以了解批归一化BN层的效果。
假设在训练过程中的某个迭代t 处处于点 P(t)。然后,从该点开始,以一定的学习率向前迈出一步,到达下一点 P(t+1)。然后再倒退回 P(t),并以更高的学习率重复上述步骤。
换句话说,它使用三种不同的学习率,沿着梯度方向迈出三个不同大小的步子(蓝色、绿色和粉色箭头),尝试了三种不同的选择。这样,我们就找到了 P(t+1) 的三个不同的下一个点。然后,在每一个 P(t+1) 点,它都会测量新的损失和梯度。
现在,我们可以绘制出每个 P(t+1)点(蓝色、绿色和粉色)在该单一方向上的损失。凹凸不平的红色曲线表示不使用批归一化层时的损失,平滑下降的黄色曲线表示使用批归一化BN层时的损失。
同样,我们可以绘制出每个点的梯度大小和方向。红色箭头表示在没有批归一化层的情况下,梯度的大小和方向的剧烈波动。黄色箭头表示使用批规范后,梯度的大小和方向保持稳定,如下。
这个实验告诉我们,批处理归一化层极大地平滑了loss landscape。这对我们的训练有什么帮助?理想的情况是,在下一个点 P(t+1),梯度也位于同一方向。这意味着我们可以继续沿同一方向前进。这样,训练就能顺利进行,并迅速找到最小值。
另一方面,如果 P(t+1)的最佳梯度方向与我们的方向不同,那么我们最终就会走 之字形路线,白费力气。这就需要更多的训练迭代来收敛。
虽然这篇论文的研究结果至今没有受到质疑,但还不清楚它们是否已被完全接受为结束这场争论的确凿证据。无论哪种理论是正确的,我们可以肯定的是,批处理归一化BN层具有多种优势。
05
BN层的优势
批处理归一化BN层允许大家使用更高的学习率。如果没有BN层,学习率就必须保持较小,以防止较大的离群值梯度影响梯度下降。批处理归一化BN层有助于减少这些异常值的影响。
批处理归一化BN层还可以减少梯度对初始权重值的依赖。由于权重是随机初始化的,训练初期的异常权重值会扭曲梯度。因此,网络需要更长的时间才能收敛。BN层也有助于抑制这些异常值的影响。
06
什么情况下不适用BN层?
07
总结
点击上方小卡片关注我
添加个人微信,进专属粉丝群!