Layer Normalization 论文阅读

论文链接:[1607.06450] Layer Normalization (arxiv.org)

一、论文翻译

Abstract

        训练深度神经网络的计算开销很大。一个可以减少训练时间的方法是“归一化神经元活动”。近来一个叫做批量归一化的技术,在小批量训练情况下,使用一个神经元的总输入的分布来计算均值和方差,然后用于归一化每个训练样本上的神经元的总输入。这显著减少了前馈神经网络的训练时间。但是,批量归一化的影响依赖于batch size,并且不知道如何将它应用在循环神经网络中。在这篇论文中,我们不再使用一个神经元,而是使用单次训练情况下所有神经元的总输入来计算均值和方差,从而将批量归一化调换为层归一化。和批量归一化类似,我们同样给每一个神经元赋予自适应偏置和增益参数,这在归一化之后、非线性化之前发挥作用。和批量归一化不同的是,层归一化在训练和测试时执行完全相同的操作。通过分别计算每个时间步的归一化统计参数,可以将层归一化直接应用在循环神经网络中。层归一化在稳定循环网络隐藏层神经元的活跃性方面很高效。

Introduction

        在计算机视觉与语音处理(speech processing)领域的各种监督学习任务中,使用随机梯度下降法训练深度神经网络已被证明明显优于先前的方法,但是近来的深度神经网络往往需要训练多日。想要加快训练速度,可以在多个机器上计算不同训练子集的梯度(训练集划分)或者将网络的神经元分布在不同机器上,但这类方法需要频繁的交互和复杂的软件支持,随着并行化程度的提高,收益会明显下降。另一类方法是修改神经网络前向传播时执行的计算,以使学习变得更容易。最近,批量归一化被提出,它通过在深度神经网络中引入归一化操作来减少训练时间。归一化是指使用训练数据集的均值和标准差来标准化每个神经元接收到的输入信号。使用批量归一化训练的前馈神经网络即使使用简单的SGD优化器也能很快收敛。除了训练时间的优化,批量统计中引入的随机性可以充当训练过程中的正则化器。(在批量归一化中,对单一批次进行归一化时会用到该批次中的所有样本的统计数据,而不会用到其他批次的样本数据,这能减少不同批次样本之间的相关性,从而避免过拟合,起到正则化器的作用

        批量归一化原理简单,但它需要对各个批次的总输入信号统计量执行平均运算(在训练时分别计算每个批次样本的均值与方差,在测试时会对训练时得到的所有均值与方差取平均,以此来对测试数据进行归一化)。在深度固定的前馈神经网络中,每个隐藏层可以直接分别存储各自的统计量,但是,循环神经网络的神经元的总输入信息会随着时间序列推进而变化,因此对RNN执行批量归一化时,不同的时间步需要不同的统计量(总而言之,批量归一化不适合应用于RNN)。此外,批量归一化不能应用于在线学习任务或者非常大规模的分布式模型。

        这篇论文介绍了层归一化,这是一种简单的归一化方法,可以用于提高各种神经网络模型的训练速度。与批量归一化不同,层归一化直接从隐含层的所有神经元的总输入中直接估计归一化统计量,因此归一化不会再训练过程中引入新的依赖关系。我们展现了层归一化在RNN上表现很好,并优化了现有集中RNN模型的训练时间和泛化能力。

Background

        前馈神经网络是从输入模式x到输出向量y的非线性映射。考虑前馈神经网络的第 l 个隐含层,令^{}^{_{}}a^{l}表示该层所有神经元的总输入的向量表示,则 a^{l} 可以通过权重矩阵 W^{l} 和自下而上的输入 h^{l}(也就是前一层的输出)来计算,公式如下:

(1)

 其中f(.) 是一个非线性函数,w_{i}^{l} 是第 i 个隐含单元的传入权重,b_{i}^{l} 是偏置值。神经网络中的参数使用基于梯度的优化算法更新,梯度通过反向传播计算。

       网络学习过程中存在一个问题,一个网络层的梯度计算高度依赖于上一层神经元的输出信号,特别是这些输出信号以高度相关的方式变化时(可理解为样本之间相关性较高,容易导致过拟合)。批量归一化可用于减少这种负面的“covariate shift(协变量移位)”,该方法对训练实例中每个隐含单元的总输入进行归一化。举例来说,对于第 l 层的第 i 个神经单元的总输入a_i^{l},批量归一化会根据数据分布下的统计量来更新总输入,得到 \bar{a_i^{l}}

(2)

这里  \bar{a_i^{l}}  是归一化后的总输入,g_{i} 是增益参数(在非线性激活函数之前对输入信号进行缩放,作用是调整神经元对不同输入信号的敏感度,可以增强网络鲁棒性和泛化能力)。公式中的期望是针对整个训练数据分布的,实际中计算该期望是不现实的(计算量很大)。代替方案是仅使用当前mini-batch的样本来估计均值与方差,这对mini-batch的大小提出了限制(batch size过大依旧会增加计算量),并且不适用于RNN。

Layer normalization

        网络层输出的变化会引起下一层总输入产生相应变化,特别是对于输出变化较大的ReLU单元,这表明“协方差偏移”问题可以通过固定各层内总输入的均值和方差来缓解。因此,我们采用如下方式计算同一层中所有隐含单元的归一化统计量:

(3)

其中 H 表示一个网络层所含隐含单元的数目。公式(2)和(3)的不同之处在于,层归一化中某个网络层的所有隐含单元都共享相同的均值与方差,但是在不同训练案例时均值与方差不同(意思是说在单次训练过程中,所有隐含单元的统计参数更新是共享的;但是,下一次训练,也就是有新的样本数据输入时,隐含单元的统计参数会从头开始新一轮更新)。与批量归一化不同,层归一化不会对batch size作出限制。

层归一化中某个网络层的所有隐含单元都共享相同的均值与方差,批量归一化每个隐藏层可以直接分别存储各自的统计量,也就是隐含单元间参数不共享。

Layer normalized recurrent neural networks

        最近的序列到序列模型利用紧凑的循环神经网络来解决NLP中的序列预测问题。在NLP任务中,对于不同的training case,句子长度往往不同,这在RNN这种很容易处理,因为在每个时间步都使用相同的权重。但是,当我们在RNN中执行批量归一化时,需要计算并存储每个时间步各自的统计量,如果某个测试序列的长度比每个训练序列都更长,会产生问题。不过层归一化不存在这个问题,因为它的归一化项只依赖于当前时间步某一层的总输入,并且仅有的一组增益和偏置参数在所有时间步上共享。

        在标准RNN中,循环网络层的总输入由当前输入 x^t 和上一层隐含状态 h^{t-1} 计算,计算公式为:a^t = W_{hh}h^{t-1} + W_{xh} x^t。 层归一化循环层使用类似于式(3)的额外归一化项来对 a^t 进行中心化与缩放。

(4)

其中 W_{hh} 是 h^{t-1} 的隐含权重,W_{xh} 是当前输入 x^t 的隐含权重。\bigodot是两个向量之间的元素级乘法(点乘)。bg 分别是偏置参数和增益参数,维度均与 h^{t} 相同。

         在RNN中,循环单元的总输入的平均幅度有增长或者减小的趋势,导致梯度爆炸或者梯度消失。执行层归一化后,归一化项可以令每一层的总输入保持稳定,最终令隐含层状态的动态变化更加稳定。

Related work

        批量归一化已经被推广到RNN模型中,早先的研究表明,在每一个时间步上保持归一化统计量的独立性才能达到最好效果,论文作者发现,将批量归一化中的增益参数初始化为0.1能得到更好效果。我们的研究也与权重归一化相关,我们使用输入权重的L2范数而不是方差来归一化神经元的总输入。使用期望统计量执行权重归一化或者批量归一化相当于对原始前馈神经网络进行不同的参数化。在Path-normalized SGD中研究ReLU网络的再参数化。但是层归一化方法并不是对原始神经网络执行再参数化,因此,层归一化具有不同于其他方法的稳定性。

Analysis

研究不同归一化方案的不变性。

Invariance under weights and data transformations

        层归一化与批量归一化、权重归一化有关联,尽管它们的归一化统计量计算方式不同,但这些方法都可以被归结为通过均值和方差来对神经元的总输入进行归一化,同时它们都会在归一化过程中学习到偏置参数 b 和增益参数 g

h_i = f(\frac{g_i}{\sigma _i}(a_i - \mu _i) + b_i)

(5) 

需注意,对于层归一化和批量归一化,\mu 和 \sigma 分别根据公式(2)和公式(3)计算;对于权重归一化,\mu 为 0,\sigma = \left \| w \right \|_2

 weight re-scaling and re-centering:权重缩放与权重中心化(均值调整为0)

        首先,我们发现在批量归一化和权重归一化中,对单个神经元的输入权值 w_i 的缩放不会对神经元总输入的归一化造成影响,因为如果权重向量经过参数 \delta 缩放,那么统计量 \mu 和 \sigma 也会按照  \delta 缩放,这使得归一化的总输入在缩放前后不会改变。因此,批量归一化和权重归一化对权重向量的缩放是 invariant 的。

        而层归一化对权重向量的缩放不具备invariant,取而代之的是层归一化对整个权重矩阵的缩放和中心化是invariant的。假设有两组模型参数 \theta 和 \theta' ,其权重矩阵 W 和 W' 的关系为:W' = \delta W + 1 \gamma^T,在层归一化中两组模型参数会计算出相同的结果:

h' = f(\frac{g}{\sigma '}(W'x - \mu ') + b) = f(\frac{g}{\sigma '}((\delta W + 1\gamma ^T)x - \mu ') + b) \\ = f(\frac{g}{\sigma}(Wx - \mu) + b) = h

 (6)

 Data re-scaling and re-centering: 样本数据缩放与中心化

        神经元的总输入在数据集变化时保持不变,所以可以证明归一化方法对数据集的缩放是不变的。更进一步,层归一化对单个训练案例的缩放具有invariant,因为公式(3)中给的归一化变量 \mu 和 \sigma 仅依赖于当前的输入数据。令 x' 是 x 经过 \delta 缩放后的参数,则:

(7)

不难看出,在层归一化中,对个别数据点进行缩放并不会改变模型的预测效果。

Geometry of parameter sapce during learning

        我们研究了在参数中心化与缩放时模型预测能力的不变性,但是,即使模型采用相同的底层函数,在不同参数下依旧会有不同的学习表现。接下来,我们通过参数空间的几何和流形来分析学习行为,研究表明归一化项 \sigma 能够隐式地减少学习率并使学习更稳定。

Riemannian metric(黎曼度量)

        统计模型中的可学习参数构成了一个光滑流形,它包含了模型中所有可能的输入输出关系。当模型的输出是概率分布时,可以使用KL散度(Kullback-Leibler divergence,是一种衡量两个分布之间距离的度量,能反映两个分布的相似度)来衡量流形上两个点的距离。在KL散度度量下,参数空间被称为黎曼流形。

        黎曼流形的曲率完全由黎曼度量描述,它的二次型记为 ds^2,即参数空间中某点在切空间中的无穷小距离。直观地说,它测量了模型输出在参数空间中沿着切向量方向的变化情况。Amari (1998) 研究了在 KL 度量下的黎曼度量,并通过二阶 Taylor 展开使用 Fisher 信息矩阵将其近似,达到了很好的效果。

The geometry of normalized generalized linear models

Conclusion

        本篇论文中,我们介绍了层归一化用于加速神经网络的训练,并提供一个理论分析,比较了层归一化与批量归一化、权重归一化的不变性性质。研究表明层归一化对每个训练案例下的特征缩放与中心化都是invariant的。

        我们发现RNN从层归一化方法中获益最大,特别是对于长序列和小batch size的情况。

二、论文总结

1、What is the research problem, and what is the significance of the research?

       随着神经网络的深度越来越深,训练网络所需的时间开销也越来越大,所以需要想办法减少网络训练时间,提高科研效率。

2、What is state-of-the-art research status of the research problem?

加速网络训练的方法如下:

(1)分布式训练:将训练集划分为多个子集,部署在不同机器上,或者将神经网络分布式部署在不同机器上,使用多台机器的算力加速运算。缺点是对硬件要求高。

(2)归一化方法:批量归一化(batch normalization)。将训练数据集划分为多个批次(batch),在每个批次的训练中,计算该批次所用到样本的均值和方差,然后再对该批次中的样本进行归一化。经过归一化后,损失函数的等高图更接近圆形(二维情况下),梯度方向更容易指向圆心方向,收敛速度也会更快。批量归一化的缺点是不适用于RNN,不适用于大规模数据集。

原始图
归一化后

3、Describe the methodology of the paper, and describe the advantage of the proposed method over state-of-the-art.

本文提出层归一化,它与批量归一化的不同之处在于:

(1)批量归一化是对同一批次的不同样本求统计值,层归一化是对同一样本内部进行归一化(目前尚不理解具体原理)。

(2)批量归一化是对单个神经元进行归一化,层归一化是对单个网络层中的所有神经元进行归一化。

(3)层归一化适用于RNN。

(4)批量归一化要求batch size不能过大,层归一化对batch size没有限制。

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值