Layer Normalization层归一化 加速神经网络训练的有效技术 归一化与批归一化和权重归一化进行了比较 递归神经网络(RNN)Transformer

Layer Normalization

Layer Normalization
层归一化(Layer Normalization) 是一种用于深度神经网络训练的归一化技术,它针对每一层神经元的激活进行归一化,而不是像批归一化(Batch Normalization)那样基于小批量数据中的神经元激活进行归一化。层归一化的主要优点在于它不需要依赖大批量数据来计算归一化参数,这使得它特别适合那些难以获得大批量数据的场景,以及在处理变长序列时(如递归神经网络RNN和长短期记忆网络LSTM)的应用。

层归一化的基本思想是在神经网络的每一层内,对每个神经元的激活值进行归一化。具体做法是计算当前层中所有神经元激活值的均值和方差,然后使用这些统计量对每个神经元的激活值进行归一化。之后,为每个神经元引入可学习的缩放参数(增益)和偏移参数(偏差),以恢复数据的表达能力。

在递归神经网络中,层归一化可以应用于每个时间步的隐藏状态,从而在每个时间步上独立地计算归一化统计量。这使得层归一化特别适用于处理变长序列,因为不同长度的序列可以在不同的时间步上独立地进行归一化。

与批归一化相比,层归一化在训练和测试期间执行完全相同的计算,这简化了训练和测试的流程,并且使得模型更容易部署。此外,层归一化通常不需要像批归一化那样精心调整小批量大小,因为它不依赖于小批量数据中的统计信息。

在经验上,层归一化已经被证明可以显著提高深度神经网络的训练速度和性能,特别是在处理变长序列和难以获得大批量数据的场景中。

Abstract

训练最新的深度神经网络在计算上是昂贵的,减少训练时间的一种方法是归一化神经元,最近引入的一种称为批归一化的技术使用训练案例的小批量上神经元的总输入分布来计算均值和方差,然后使用均值和方差对每个训练案例中该神经元的总输入进行归一化,这大大减少了前馈神经网络的训练时间。但是,批归一化的效果取决于小批量的大小,如何将其应用于递归神经网络尚不明显。在本文中,我们通过在单个训练案例上计算从层的所有总输入到神经元的归一化的均值和方差,将批归一化转换为层归一化。像批归一化一样,我们还为每个神经元提供了自己的自适应偏差和增益,这些偏差和增益在归一化之后且在非线性之前应用。与批归一化不同,层归一化在训练和测试期间执行完全相同的计算。通过在每个时间步分别计算归一化统计量,将其应用于递归神经网络也很简单。层归一化在动态稳定循环网络中的隐藏状态方面非常有效。从经验上讲,我们表明与以前发布的技术相比,层归一化可以大大减少训练时间。

Introduction

已经证明,使用某种形式的随机梯度下降训练的深度神经网络在计算机视觉和语音处理的各种监督学习任务上的性能大大优于以前的方法。但是最先进的深度神经网络通常需要几天的训练,可以通过在不同机器上为训练案例的不同子集计算梯度或在许多机器上拆分神经网络本身来加快学习速度,但这可能需要大量的交互且复杂 软件,随着并行度的增加,这将导致收益迅速减少。正交方法是修改在神经网络的前向传递中执行的计算,以使学习更轻松。最近,提出了批归一化,以通过在深度神经网络中包括其他标准化阶段来减少训练时间。归一化使用训练数据中的平均值和标准差对每个求和的输入进行标准化,即使使用简单的SGD,使用批归一化训练的前馈神经网络也能更快收敛,除了改善训练时间外,批统计中的随机性还可以作为训练期间的正则化器。

尽管简单,但批归一化仍需要对求和的输入统计信息求平均值,在深度固定的前馈网络中,直接为每个隐藏层分别存储统计信息很简单,但是,递归神经网络(RNN)中递归神经元的总输入通常随序列长度而变化,因此对RNN应用批归一化似乎需要针对不同时间步长进行不同统计。此外,批归一化不能应用于在线学习任务或批必须很小的超大型分布式模型

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

层归一化(Layer Normalization)是一种用于加速深度神经网络训练速度的技术,特别是在递归神经网络(RNN)中。尽管批归一化(Batch Normalization)在减少训练时间和提高性能方面取得了显著效果,但它依赖于小批量数据中的统计信息,这在处理变长序列的RNN中可能不适用,或者在在线学习任务和大型分布式模型中受到限制。

层归一化的核心思想是在每个训练案例的每一层内部,对神经元的激活值进行归一化。与批归一化不同,层归一化不依赖于小批量数据中的统计信息,而是计算当前层中所有神经元激活值的均值和方差,并使用这些统计量对每个神经元的激活值进行归一化。这种方法允许层归一化在RNN的每个时间步上独立地计算归一化统计量,从而使其适用于处理变长序列。

层归一化的优点在于:

不依赖于小批量数据:层归一化不依赖于小批量数据中的统计信息,因此可以在在线学习任务或批大小较小的超大型分布式模型中使用。
适用于RNN:由于层归一化在每个时间步上独立地计算归一化统计量,因此它可以轻松地应用于RNN,并改善其训练时间和泛化性能。
简单有效:层归一化的实现相对简单,但可以有效地加速训练并提高性能。
在本文中,作者通过实验证明了层归一化在RNN中的有效性,并表明它可以大大减少训练时间并改善泛化性能。此外,层归一化还具有在训练和测试期间执行相同计算的优点,这简化了训练和测试的流程,并使得模型更容易部署。

总之,层归一化是一种简单而有效的归一化方法,适用于各种神经网络模型,特别是RNN。它通过在当前层内部对神经元的激活值进行归一化来加速训练并提高性能,而不依赖于小批量数据中的统计信息。

Background

前馈神经网络是从输入模式 x x x到输出向量 y y y的非线性映射,考虑深度前馈神经网络中的第 l l l个隐藏层,并将 l l l表示为该层中神经元的总输入的向量表示,通过权重矩阵 W l W^l Wl和自下而上的输入 h l h^l hl的线性投影来计算总和输入,如下所示:
a i l = w i l T h l a_{i}^{l}={w_{i}^{l}}^{T}h^l ail=wilThl h i l + 1 = f ( a i l + b i l ) h_{i}^{l+1}=f(a_{i}^{l}+b_{i}^{l}) hil+1=f(ail+bil)
其中f(.)是逐个元素的非线性函数,而 w i l w_{i}^{l} wil是第 i i i个隐藏单元的传入权重, b i l b_{i}^{l}

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EwenWanW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值