Abstract
由于需要较低的学习率和仔细的参数初始化,这会减慢训练速度,并且使得训练具有饱和非线性的模型变得非常困难。
我们将这种现象称为内部协变量偏移,并通过归一化层输入来 解决该问题。
- 我们的方法的优势在于将标准化作为模型架构的一部分,并为每个训练mini-batch执行标准化。
- 批量归一化允许我们使用更高的学习率并且对初始化不那么小心。
- 它还充当正则化器,在某些情况下消除了 Dropout 的需要。
- 应用于最先进的图像分类模型,批量归一化以减少 14 倍的训练步骤实现相同的精度,并以显着的优势击败原始模型。
- 首先,mini-batch损失的梯度是对训练集梯度的估计,其质量随着批量大小的增加而提高。
- 其次,由于现代计算平台提供的并行性,对单个示例进行批量计算可能比 m 次计算更有效。
由于每一层的输入受到所有前面层的参数的影响,训练变得复杂——因此网络参数的微小变化会随着网络变得更深而放大。
- 因此,使训练更有效的输入分布特性( 例如在训练和测试数据之间具有相同的分布)也适用于训练子网络。
- 因此,随着时间的推移,x 的分布保持固定是有利的
- 如果我们可以确保非线性输入的分布在网络训练时保持更稳定,那么优化器就不太可能陷入饱和状态,并且训练会加速。
- 我们将训练过程中深度网络内部节点分布的变化称为内部协变量偏移。消除它将加快训练速度。
- 提出了BN层可以减少内部协变量偏移,加快训练速度。通过调整层输入的均值和方差的一个归一化步骤来实现的。
- 通过减少梯度对参数尺度或其初始值的依赖性,批量归一化也对通过网络的梯度流产生有益影响。这使我们能够使用更高的学习率而没有不收敛的风险。
- 此外,批量标准化使模型正则化并减少了对 Dropout 的需求(Srivastava 等,2014)。
- 最后,批量归一化通过防止网络陷入饱和模式,使使用饱和非线性成为可能。
- 如果输入被白化,网络训练收敛得更快——即线性变换为具有零均值和单位方差,并且去相关。
- 由于每一层都观察qqian前面各层产生的输入,因此对每一层的输入实现相同的白化将是有利的。通过对每一层的输入进行白化,我们将朝着实现输入的固定分布迈出一步,从而消除内部协变量移位的不良影响。
- 我们可以在每个训练步骤或某个时间间隔考虑白化激活,通过直接修改网络或通过改变优化算法的参数以取决于网络激活值。
- 但是,如果这些修改与优化步骤穿插在一起,那么梯度下降步骤可能会尝试以需要更新归一化的方式更新参数,这会降低梯度步骤的影
- Cov[x] = Ex∈X [xxT ] ? E[x]E[x]T
- the whitened activations Cov[x]?1/2(x ? E[x])
- 这促使我们寻找一种替代方法,以可微的方式执行输入归一化,并且不需要在每次参数更新后分析整个训练集。
- 过丢弃激活的绝对规模改变了网络的表示能力。我们希望通过相对于整个训练数据的统计对训练示例中的激活进行归一化来保留网络中的信息。
第一个是,不是联合白化层输入和输出中的特征,我们将独立地归一化每个标量特征,通过使其均值为 0 和方差为 1。对于具有 d 维输入 x = (x (1) . . x(d) ),我们将对每个维度进行归一化
文章图片
其中期望和方差是在训练数据集上计算的。即使特征没有去相关,这种归一化也会加速收敛。
- 简单的对每层输入进行归一化可能会会改变每层表示的特征。解决这个问题,在网络中引入参数来还原特征。
-
文章图片
文章图片
文章图片
文章图片
每个归一化的激活 x(k) 都可以看作是一个子网络的输入,该子网络由线性变换 y (k) = γ (k)x(k) + β(k) 组成,然后通过原始网络进行其他处理。这些子网络输入都有固定的均值和方差,虽然这些归一化 x(k) 的联合分布可以在训练过程中改变,但我们期望归一化输入的引入加速子网络的训练甚至整个网络。
- 因此,BN 变换是一种将归一化激活引入网络的可微变换。这确保了在模型训练时,层可以继续学习表现出较少内部协变量偏移的输入分布,从而加速训练。此外,应用于这些归一化激活的学习仿射变换允许 BN 变换表示the identity transformation并保留网络容量
- 依赖于小批量激活的标准化允许有效的训练,但在Inference 过程中既不必要也不可取;
我们希望输出仅依赖于输入。为此,一旦网络经过训练,我们使用归一化:
文章图片
- 由于均值和方差在推理过程中是固定的,因此归一化只是应用于每个激活的线性变换。它可以进一步由 γ 缩放和 β 移位组成,以产生替换 BN(x) 的单个线性变换。算法 2 总结了训练批量归一化网络的过程。
文章图片
- .在非线性之前添加 BN 变换,对x = W u + b进行归一化
文章图片
2。 由于我们对 W u+b 进行了归一化,因此可以忽略偏差 b,因为它的影响将被随后的均值减法抵消(偏差的作用由算法 1 中的 β 包含)Thus, z = g(W u + b) is replaced with:
文章图片
为什么不对输入u进行归一化呢? 答:由于 u 可能是另一个非线性的输出,它的分布形状可能会在训练期间发生变化,并且限制其一阶和二阶矩并不能消除协变量偏移。 相比之下,W u + b 更可能具有对称的非稀疏分布,即“更多高斯分布”;归一化它可能会产生具有稳定分布的激活。
- 对于卷积层,我们还希望归一化遵循卷积特性——这样同一特征图的不同元素,在不同的位置,以相同的方式归一化。为了实现这一点,我们在所有位置上共同标准化mini-batch中的所有激活函数。
.在 Alg. 1我们让 B 是小批量元素和空间位置的特征图中所有值的集合——因此对于大小为 m 的mini-batch和大小为 p × q 的特征图,我们使用大小为 m’ 的mini-batch:m’ = |B| = m·p q。==我们为每个特征图而不是每个激活学习一对参数 γ (k) 和 β(k)。==在 Alg. 2 被类似地修改,以便在inference过程中,BN 变换对给定特征图中的每个激活应用相同的线性变换。
- 使用批量归一化,通过layer的反向传播不受其参数规模的影响。实际上,对于标量 a:
文章图片
a的值根本不影响BN层的反向求导,所以说w的参数量对于BN层来说也不影响计算。 此外,较大的权重会导致较小的梯度,而Batch Normalization 将稳定参数增长。 实际上,变换不是线性的,并且不能保证归一化值是高斯或独立的,但我们仍然希望Batch Normalization有助于使梯度传播表现得更好。 批量归一化对梯度传播的精确影响仍然是进一步研究的领域。
在我们的实验中,我们发现这种效果有利于网络的泛化。
Dropout 通常用于减少过拟合,但在批量归一化网络中,我们发现它可以被移除或降低强度。
4 Experiments 4.1 Activations over time
文章图片
(a)是在MINIS数据集上的test accuracy对比:BN层能帮助网络训练的更快,达到更高的accuracy。
(b)(c)是在训练过程中,输入分布向典型 的sigmoid 的演变的过程,显示为第 {15, 50, 85} 个百分位数的对比。Batch Normalization 使分布更稳定并减少内部协变量偏移。
4.2 ImageNet classi?cation 用Inception网络进行图像分类,对网络的改变:用两个33卷积代替55卷积。
在我们的实验中,我们使用批量标准化评估了 Inception 的几种修改。在所有情况下,批量归一化以卷积方式应用于每个非线性的输入,如第 3.2 节所述,同时保持架构的其余部分不变。
4.2.1 Accelerating BN Networks
简单地将批量归一化添加到网络并不能充分利用我们的方法。为此,我们进一步更改了网络及其训练参数,如下所示:
- Increase learning rate.
- Remove Dropout.
- Reduce the L2 weight regularization.
- Accelerate the learning rate decay.
- Remove Local Response Normalization
- Shuf?e training examples more thoroughly.
- Reduce the photometric distortions.
文章图片
1. Inception:初始学习率=0.0015
2. BN-Baseline:Same as Inception with Batch Normal-ization before each nonlinearity.
3. BN-x5:Inception with Batch Normal-ization ,初始学习率=0.0075(x5)
4. BN-x30:Inception with Batch Normal-ization ,初始学习率=0.045(x30)
5. BN-x5-Sigmoid:Inception with Batch Normal-ization ,初始学习率=0.0075(x5),用sigmoid代替relu
文章图片
各个网络需要达到72.2%的精度需要的训练的参数量,以及最终达到的最大的精度。
5 Conclusion 我们提出了一种显着加速深度网络训练的新机制。它基于这样一个前提,即协变量偏移也适用于子网络和层,并且将其从网络的内部激活中移除可能有助于训练。
- 为了启用深度网络训练中常用的随机优化方法,我们对每个mini-batch执行归一化,并通过归一化参数反向传播梯度。
- Batch Normalization 每次激活只添加两个额外的参数,这样做可以保留网络的表示能力。
我们提出了一种使用批量归一化网络构建、训练和执行inference的算法。由此产生的网络可以用饱和非线性进行训练,更能容忍增加的训练率,并且通常不需要 Dropout 进行正则化。
- Batch Normalization 的目标是在整个训练过程中实现激活值的稳定分布,在我们的实验中,我们将它应用在非线性层(激活函数)之前,因为这是匹配一阶和二阶矩的地方更有可能导致稳定的分布。
相反,将标准化层应用于非线性的输出,这会导致更稀疏的激活。
- Batch Normalization 的其他显着区别特征包括允许 BN 变换表示身份的学习尺度和移位,卷积层的处理,不依赖于mini-batch的确定性推理,以及批量归一化网络中的每个卷积层。
我们未来的工作包括将我们的方法应用于RNN,其中内部协变量偏移和消失或爆炸梯度可能特别严重,这将使我们能够更彻底地测试假设归一化改进了梯度传播(第 3.3 节)。 我们计划研究批量归一化是否可以帮助传统意义上的域适应——即网络执行的归一化是否能让它更容易地泛化到新的数据分布,也许只需要重新计算种群均值和方差(Alg. 2)。
推荐阅读
- Machine|BN层
- 一点就分享系列|一点就分享系列(实践篇4-上篇)深度学习部署之Tensorrt转换思路(“授人与鱼不如授人与渔”)
- 一点就分享系列|一点就分享系列(理解篇5)补更必看(SwintransformerV2.0版本的改进以及使用理解(上篇))
- 课程理论|论文解读——神经网络翻译中的注意力机制 以及 global / local attention
- 人工智能|一文看懂CV中的注意力机制
- 论文笔记|论文笔记--Connecting the Dots: Multivariate Time Series Forecasting with Graph Neural Networks
- 神经网络|【论文导读】浅谈胶囊网络与动态路由算法
- 深度学习|基于传统神经网络,使用Keras训练自己的数据集
- TensorFlow2|深度学习之卷积神经网络(8)BatchNorm层