Layer Normalization

Layer Normalization

训练最先进的深度神经网络是计算成本很高的。减少训练时间的一种方法是对神经元的活动进行归一化。最近引入的一种称为批量归一化的技术,使用一个神经元的输入在一个mini-batch的训练案例上的分布来计算均值和方差,然后用这些均值和方差来归一化该神经元在每个训练案例上的输入。这大大缩短了前馈神经网络的训练时间。然而,批归一化的效果取决于小批量的大小,如何将其应用到循环神经网络中并不明显。在本文中,我们将批归一化移植到层归一化中,通过在单个训练案例上计算层中所有神经元输入的总和,计算用于归一化的均值和方差。与批归一化一样,我们也给每个神经元提供自己的自适应偏置和增益,这些偏置和增益是在归一化之后但在非线性之前应用的。与批归一化不同的是,层归一化在训练和测试时执行完全相同的计算。通过在每个时间步长分别计算归一化统计,它也可以直接应用于循环神经网络。层归一化对稳定循环网络中的隐藏状态动态非常有效。经验上,我们表明,与之前发表的技术相比,层归一化可以大幅缩短训练时间。

1 Introduction

在计算机视觉[Krizhevsky等人,2012]和语音处理[Hinton等人,2012]中,用某种版本的随机梯度下降法训练的深度神经网络已被证明在各种监督学习任务上大大优于以前的方法。但是最先进的深度神经网络通常需要很多天的训练。通过在不同的机器上计算训练案例的不同子集的梯度,或者将神经网络本身拆分在许多机器上,可以加快学习速度[Dean等人,2012],但这可能需要大量的通信和复杂的软件。随着并行化程度的增加,它也往往会导致收益迅速降低。一个正交的方法是修改神经网前向通道中执行的计算,以使学习更容易。最近,有人提出了批量归一化[Ioffe和Szegedy,2015],通过在深度神经网络中加入额外的归一化阶段来减少训练时间。归一化使用其在整个训练数据中的平均值和标准差对每个加总输入进行标准化。使用批量归一化训练的前馈神经网络即使使用简单的SGD也能更快地收敛。除了训练时间的改善外,来自批次统计的随机性还可以作为训练过程中的正则化器。

尽管它很简单,但批量归一化需要运行输入统计量之和的平均值。在具有固定深度的前馈网络中,为每个隐藏层分别存储统计数据是直接的。然而,循环神经网络(RNN)中循环神经元的输入求和往往随着序列的长度而变化,因此将批归一化应用于RNN似乎需要对不同的时间步长进行不同的统计。此外,批归一化不能应用于在线学习任务或极大规模的分布式模型,因为在这些模型中,minibatches必须很小。

本文介绍了层归一化,这是一种简单的归一化方法,可以提高各种神经网络模型的训练速度。与批归一化不同的是,所提出的方法直接从隐藏层内神经元的输入相加估计归一化统计量,所以归一化不会在训练案例之间引入任何新的依赖关系。我们表明,层归一化对RNNs有很好的效果,并且改善了现有几种RNN模型的训练时间和泛化性能

2 Background

前馈神经网络是一个从输入模式x到输出向量y的非线性映射。 考虑一个深度feed-forward,神经网络中的第l个隐藏层,让 a l a^l al是该层神经元输入之和的向量表示。通过线性映射计算求和输入,权重矩阵 W l W^l Wl和自下而上的输入 h l h^l hl给出如下。

在这里插入图片描述

其中 f ( ⋅ ) f(\cdot) f()是一个element-wise非线性函数, w i l w_i^l wil是第i个隐藏单元的输入权重, b i l b_i^l bil为标量偏置参数。神经网络中的参数采用基于梯度的优化算法进行学习,梯度通过反向传播计算。

深度学习的挑战之一是,相对于一层中的权重的梯度高度依赖于前一层中神经元的输出,尤其是当这些输出以高度相关的方式变化时。批量归一化[Ioffe和Szegedy,2015]被提出来减少这种不理想的 “协方差”。该方法对每个隐藏单元在训练案例上的输入之和进行归一化。具体来说,对于第l层的第i个求和输入,批归一化方法根据数据分布下的方差对求和输入进行重新标定。

在这里插入图片描述

其中, a ‾ i l \overline a^l_i ail为第l层第i个隐藏单元的归一化输入和, g i g_i gi为非线性激活函数前的增益参数,对归一化激活进行缩放。注意,期望值是在整个训练数据分布下的。准确地计算式(2)中的期望值通常是不切实际的,因为它需要通过当前权重集的整个训练数据集进行正向传递。取而代之的是, μ \mu μ σ \sigma σ是使用当前小批量的经验样本来估计的。这就对mini-batch的大小进行了限制,而且很难应用于循环神经网络

3 Layer normalization

我们现在考虑层归一化方法,它是为了克服批归一化的缺点。

请注意,一层输出的变化往往会引起下一层输入之和的高度相关变化,特别是对于输出可能变化很大的ReLU单元。这说明 "协方差 "问题可以通过固定各层内求和输入的均值和方差来减少。因此,我们对同一层中所有隐藏单元的层归一化统计计算如下。

在这里插入图片描述

其中H表示层中隐藏单元的数量。式(2)与式(3)的区别在于,在层规范化下,一层中的所有隐藏单元共享相同的规范化项 μ \mu μ σ \sigma σ ,但不同的训练案例具有不同的规范化项。与批处理规范化不同,层规范化不会对小批量的大小施加任何约束,它可以用于批量大小为1的纯在线状态

小批量的大小施加任何约束,它可以用于批量大小为1的纯在线状态**。

你可能感兴趣的:(正则化,神经网络,深度学习)