NLP经典论文:Layer Normalization 笔记

  • 论文
  • 介绍
  • 模型结构
  • batch normalization 和 layer normalization 的相同点
  • batch normalization 和 layer normalization 的不同点
  • 相关视频
  • 文章部分翻译
  • Abstract
  • 1 Introduction
  • 2 Background
  • 3 Layer normalization
  • 3.1 Layer normalized recurrent neural networks
  • 5 Analysis
  • 5.1 Invariance under weights and data transformations
  • 5.2 Geometry of parameter space during learning
  • 5.2.1 Riemannian metric
  • 5.2.2 The geometry of normalized generalized linear models
  • Supplementary Material
  • Application of layer normalization to each experiment
  • 相关的笔记
  • 相关代码
  • pytorch
  • tensorflow
  • keras
  • pytorch API:
  • tensorflow API


论文

NLP论文笔记合集(持续更新)

原论文:《Layer Normalization》

CV经典论文:Batch Normalization 笔记

介绍

2016-07发表的文章,提出了 layer normalization 方法。batch normalization 是一种减少训练时间的方法,详细参考CV经典论文:Batch Normalization 笔记。在NLP任务中,如果将该方法应用于RNN网络,则需要为每一个时间步训练 batch normalization 的参数。但这样会出现问题,因为输入的句子长度并不固定,使得基于数据集计算用于 normalization 的均值 nlpcc 历年文章 nlp经典论文_方差 和方差 nlpcc 历年文章 nlp经典论文_方差_02,在实际中效果并不好,而且预测时,对于输入句子长度比训练时要长的情况,在长了的句段,RNN在该时间步上也没有用于normalization 的均值和方差。为解决这个问题,该文章提出了 layer normalization 方法。

模型结构

nlpcc 历年文章 nlp经典论文_深度学习_03

来源:mingo_敏

图中 C 代表句子长度 seqlen,H,W 代表 embedding 的维度,N 代表 batch-size。

batch normalization 和 layer normalization 的相同点

batch normalization 和 layer normalization 都是先通过计算均值 nlpcc 历年文章 nlp经典论文_方差 和方差 nlpcc 历年文章 nlp经典论文_方差_02 来 normalize 输入 nlpcc 历年文章 nlp经典论文_方差_06,再将 normalized 输入 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_07 传入仿射函数:nlpcc 历年文章 nlp经典论文_深度学习_08, 其中自适应增益 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_09 和偏置 nlpcc 历年文章 nlp经典论文_自然语言处理_10

normalization + 仿射的计算如下:
nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_11nlpcc 历年文章 nlp经典论文_深度学习_12nlpcc 历年文章 nlp经典论文_自然语言处理_13nlpcc 历年文章 nlp经典论文_人工智能_14nlpcc 历年文章 nlp经典论文_自然语言处理_15

在RNN中,结构可参考NLP经典论文:Sequence to Sequence、Encoder-Decoder 、GRU 笔记,一层的隐藏单元数量为 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_16,对于 batch normalization 和 layer normalization 来说,需要学习的 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_09nlpcc 历年文章 nlp经典论文_自然语言处理_10 的参数数量都为 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_16

在 Transformer 中,结构可参考NLP经典论文:Attention、Self-Attention、Multi-Head Attention、Transformer 笔记,layer normalization 层需要学习的 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_09nlpcc 历年文章 nlp经典论文_自然语言处理_10 的参数数量都为 nlpcc 历年文章 nlp经典论文_深度学习_22

batch normalization 和 layer normalization 的不同点

他们不同的地方在于计算均值 nlpcc 历年文章 nlp经典论文_方差 和方差 nlpcc 历年文章 nlp经典论文_方差_02 的方式不一样。batch normalization 按照绿色箭头方向计算,共计算得到 nlpcc 历年文章 nlp经典论文_深度学习_25 个均值 nlpcc 历年文章 nlp经典论文_方差 和方差 nlpcc 历年文章 nlp经典论文_方差_02,这些值会保留在网络当中用于预测;layer normalization 则按照红色箭头方向计算,共计算得到 nlpcc 历年文章 nlp经典论文_人工智能_28 个均值 nlpcc 历年文章 nlp经典论文_方差 和方差 nlpcc 历年文章 nlp经典论文_方差_02,这些值不会会保留在网络当中,在预测时会重新计算。

相关视频

文章部分翻译

Abstract

(注:summed input 指的是 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_31 中的 nlpcc 历年文章 nlp经典论文_人工智能_32,其中 nlpcc 历年文章 nlp经典论文_深度学习_33 是该层的输入,nlpcc 历年文章 nlp经典论文_深度学习_34

训练最先进的深度神经网络在计算上非常高成本的。减少训练时间的一种方法是 normalize 神经元的激活。最近引入的一种称为 batch normalization 的技术,使用 mini-batch 训练样例对一个神经元的 summed input 的分布,计算均值和方差,然后使用均值和方差 normalize 每个训练样例对该神经元的 summed input。这大大缩短了前馈神经网络的训练时间。然而,batch normalization 的效果取决于 mini-batch size,如何将其应用到RNN中也并不显而易见。在本文中,我们从单个训练样例在一个层中对所有神经元的 summed inputs,计算出用于 normalization 的均值和方差,来将 batch normalization 转换为 layer normalization。与 batch normalization 一样,我们也为每个神经元提供其自身的自适应偏置和增益,这些偏置和增益应用于 normalization 之后,于非线性激活之前。与 batch normalization 不同,layer normalization 在训练和测试时执行完全相同的计算。通过在每个时间步分别计算 normalization 统计量,也可以直接应用于RNN。layer normalization 对于稳定循环网络中的隐藏状态的动态过程非常有效。实验上,我们表明,与先前发布的技术相比,layer normalization 可以显著减少训练时间。

1 Introduction

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

尽管 batch normalization 很简单,但它需要 summed input 的统计量的运行平均值。在具有固定深度的前馈网络中,每个隐藏层很容易存储各自的统计量。然而,在循环神经网络(RNN)中,循环神经元的 summed input 通常随序列长度的变化而变化,因此对RNN应用 batch normalization 似乎需要不同时间步的不同统计信息。此外,batch normalization 不能应用于在线学习任务,也不能应用于 mini-batch 必须很小的超大分布式模型。

本文介绍了一种简单的 normalization 方法——layer normalization,以提高各种神经网络模型的训练速度。与 batch normalization 不同,该方法直接从隐层神经元的 summed inputs 估计 normalization 统计量,因此 normalization 不会在训练样例之间引入任何新的依赖关系。我们证明了 layer normalization 对于RNN非常有效,并且改进了现有几种RNN模型的训练时间和泛化性能。

2 Background

前馈神经网络是从输入样例 nlpcc 历年文章 nlp经典论文_深度学习_35 到输出向量 nlpcc 历年文章 nlp经典论文_自然语言处理_36 的非线性映射。考虑深度前馈神经网络中的第 nlpcc 历年文章 nlp经典论文_自然语言处理_37 个隐藏层,并且让 nlpcc 历年文章 nlp经典论文_自然语言处理_38 为该层中对所有神经元的 summed inputs 的矢量表示。通过线性投影计算 summed inputs,加权矩阵 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_39 和自底向上输入 nlpcc 历年文章 nlp经典论文_人工智能_40 如下所示:nlpcc 历年文章 nlp经典论文_方差_41其中 nlpcc 历年文章 nlp经典论文_方差_42 是对应元素逐个相乘的非线性函数,nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_43 是第 nlpcc 历年文章 nlp经典论文_方差_44 个隐藏单元的传入权重,nlpcc 历年文章 nlp经典论文_方差_45

(注:我们将训练过程中深层网络内部节点分布的变化称为 Internal Covariate Shift。)

深度学习的挑战之一是,一层中权重的梯度高度依赖于前一层神经元的输出,特别是当这些输出以高度相关的方式变化时。batch normalization [Ioffe和Szegedy,2015]是为了减少这种不希望得到的“covariate shift”。该方法 normalize 了训练样例中每个隐藏单元的 summed inputs。具体地说,对于第 nlpcc 历年文章 nlp经典论文_自然语言处理_37 层中的第 nlpcc 历年文章 nlp经典论文_方差_44 个 summed input,batch normalization 方法根据其在数据分布下的方差重新缩放 summed inputnlpcc 历年文章 nlp经典论文_人工智能_48其中,nlpcc 历年文章 nlp经典论文_人工智能_49 是第 nlpcc 历年文章 nlp经典论文_自然语言处理_37 层中的第 nlpcc 历年文章 nlp经典论文_方差_44 个隐藏单元的 normalized summed input,nlpcc 历年文章 nlp经典论文_人工智能_52 是在非线性激活函数之前缩放 normalized 激活的增益参数。注:期望值是在整个训练数据集分布下的。准确计算公式(2)中的期望值通常是不切实际的,因为它需要使用当前这组权重的整个训练数据集的向前传播。相反,使用当前 mini-batch 的实验样本估算 nlpcc 历年文章 nlp经典论文_方差nlpcc 历年文章 nlp经典论文_方差_02。这就限制了 mini-batch 的大小,很难应用于循环神经网络。

3 Layer normalization

我们现在考虑 layer normalization 方法,其目的是克服 batch normalization 的缺点。

请注意,一层输出的变化往往会导致下一层的 summed inputs 发生高度相关的变化,特别是那些使用ReLU的单元,它的输出可能发生很大变化。这表明,可以通过固定各层内 summed inputs 的平均值和方差来减少“covariate shift”问题。因此,我们计算同一层中所有隐藏单元的 layer normalization 统计量,如下所示:nlpcc 历年文章 nlp经典论文_方差_55其中 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_16 表示层中隐藏单元的数量。等式(2)和等式(3)之间的区别在于,在 layer normalization 下,层中的所有隐藏单元共享相同的归一化项 nlpcc 历年文章 nlp经典论文_方差nlpcc 历年文章 nlp经典论文_方差_02,但不同的训练样例具有不同的 normalization 项。与 batch normalization 不同,layer normalization 不会对 mini-batch 的大小施加任何约束,它可以用于 batch size 为1的纯在线系统。

3.1 Layer normalized recurrent neural networks

最近的 sequence to sequence 模型[Sutskever等人,2014]利用紧凑的循环神经网络来解决自然语言处理中的序列预测问题。在NLP任务中,对于不同的训练样例,有不同的句子长度是很常见的。这在RNN中很容易处理,因为在每个时间步使用相同的权重。但是,当我们以明显的方式对RNN应用 batch normalization 时,我们需要为序列中的每个时间步计算和存储单独的统计信息。如果测试序列比任何训练序列都长,这是有问题的。layer normalization 没有这样的问题,因为它的 normalization 项只依赖于当前时间步对于层的 summed inputs。它也只有一组在所有时间步上共享的增益和偏置参数。

在标准RNN中,根据当前输入 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_59 和先前隐藏状态向量 nlpcc 历年文章 nlp经典论文_深度学习_60 计算循环层中的 summed inputs,计算为 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_61。该层使用类似于等式(3)的额外归一化项重新中心化与缩放其激活:nlpcc 历年文章 nlp经典论文_方差_62其中 nlpcc 历年文章 nlp经典论文_人工智能_63 是循环的 hidden-to-hidden 的权重,nlpcc 历年文章 nlp经典论文_自然语言处理_64 是自底向上 input-to-hidden 的权重。nlpcc 历年文章 nlp经典论文_深度学习_65 是两个向量之间的元素相乘。nlpcc 历年文章 nlp经典论文_深度学习_66nlpcc 历年文章 nlp经典论文_深度学习_67 定义为与 nlpcc 历年文章 nlp经典论文_深度学习_68

在标准RNN中,循环单元的 summed inputs 的平均幅度在每个时间步都有增长或收缩的趋势,导致梯度爆炸或消失。在 layer normalized RNN中,normalization 项使得在一个层中的对所有 summed inputs 的重新缩放保持不变,从而产生更稳定的 hidden-to-hidden 的动态过程。

5 Analysis

在本节中,我们将研究不同 normalization 方案的不变性。

5.1 Invariance under weights and data transformations

提出的 layer normalization 与 batch normalization 和权重 normalization 有关。尽管它们的 normalization 标量的计算方式不同,但这些方法可以概括为通过两个标量 nlpcc 历年文章 nlp经典论文_方差nlpcc 历年文章 nlp经典论文_方差_02对神经元的总输入 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_71 进行 normalization。在 normalization 后,他们还学习每个神经元的自适应偏置 nlpcc 历年文章 nlp经典论文_方差_72 和增益 nlpcc 历年文章 nlp经典论文_方差_73nlpcc 历年文章 nlp经典论文_自然语言处理_74注意,对于 layer normalization 和 batch normalization,nlpcc 历年文章 nlp经典论文_方差nlpcc 历年文章 nlp经典论文_方差_02 根据公式2和3计算。在权重 normalization 中,nlpcc 历年文章 nlp经典论文_方差 为0,nlpcc 历年文章 nlp经典论文_人工智能_78

nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_79


表1突出显示了三种 normalization 方法的不变性结果。

Weight re-scaling and re-centering:首先,观察在 batch normalization 和权重 normalization 下,对单个神经元传入权重 nlpcc 历年文章 nlp经典论文_人工智能_80 的任何重新缩放对神经元的 normalized summed inputs 没有影响。精确地说,在 batch normalization 和权重 normalization 下,如果权重向量按 nlpcc 历年文章 nlp经典论文_自然语言处理_81 缩放,那么两个标量 nlpcc 历年文章 nlp经典论文_方差nlpcc 历年文章 nlp经典论文_方差_02 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_71 也将按 nlpcc 历年文章 nlp经典论文_自然语言处理_81 缩放。normalized summed inputs 在缩放前后保持不变。因此,batch normalization 和权重 normalization 对权重的重新缩放是不变的。另一方面,layer normalization 对于单个权重向量的单独缩放不是不变的。相反,layer normalization 对整个权重矩阵的缩放是不变的,对权重矩阵中所有传入权重的平移量是不变的。假设有两组模型参数 nlpcc 历年文章 nlp经典论文_人工智能_86nlpcc 历年文章 nlp经典论文_方差_87,其权重矩阵为 nlpcc 历年文章 nlp经典论文_深度学习_88nlpcc 历年文章 nlp经典论文_人工智能_89 是不一样的,nlpcc 历年文章 nlp经典论文_人工智能_89 通过比例因子 nlpcc 历年文章 nlp经典论文_自然语言处理_81 缩放并且所有传入权重也被一个常数向量 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_09 平移,即 nlpcc 历年文章 nlp经典论文_自然语言处理_93. 在 layer normalization 下,两个模型有效地计算相同的输出:nlpcc 历年文章 nlp经典论文_深度学习_94请注意,如果 normalization 仅应用于权重之前的输入,那么模型将不会对权重的重新缩放和重新居中保持不变。

Data re-scaling and re-centering:通过证实神经元的 summed inputs 在变化下保持不变,我们可以证明所有的 normalization 方法对重新缩放数据集是不变的。此外,layer normalization 对于单个训练样例的重新缩放是不变的,因为等式(3)中的 normalization 标量 nlpcc 历年文章 nlp经典论文_方差nlpcc 历年文章 nlp经典论文_方差_02 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_71 仅依赖于当前输入数据。让 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_98 是一个新的数据点,通过 nlpcc 历年文章 nlp经典论文_自然语言处理_81 重新缩放 nlpcc 历年文章 nlp经典论文_深度学习_35 获得。那么我们有,nlpcc 历年文章 nlp经典论文_自然语言处理_101很容易看出,在 layer normalization 下,重新缩放单个数据点不会改变模型的预测。与 layer normalization 中权重矩阵的重新中心化类似,我们还可以证明 batch normalization 对数据集的重新中心化是不变的。

5.2 Geometry of parameter space during learning

我们研究了模型预测在参数重新中心化和缩放下的不变性。然而,在不同的参数化下,学习的行为可能会非常不同,即使模型表达了相同的底层功能。在本节中,我们将通过参数空间的几何和流形来分析学习行为。我们证明了 normalization 标量 nlpcc 历年文章 nlp经典论文_方差_02

5.2.1 Riemannian metric

统计模型中的可学习参数形成一个光滑流形,由模型的所有可能输入输出关系组成。对于输出为概率分布的模型,度量此流形上两点的分隔的自然方法是其模型输出分布之间的 Kullback-Leibler 散度。在 KL 散度度量下,参数空间是黎曼流形。

黎曼流形的曲率完全由其黎曼度量所获得,黎曼度量的二次型表示为 nlpcc 历年文章 nlp经典论文_自然语言处理_103。这是参数空间中某一点在切线空间中的无穷小距离。直观地说,它沿切线方向测量参数空间中模型输出的变化。之前曾研究过 KL 下的黎曼度量[Amari,1998],并使用 Fisher 信息矩阵证明其在二阶泰勒展开下具有良好的近似性:

nlpcc 历年文章 nlp经典论文_深度学习_104


其中,nlpcc 历年文章 nlp经典论文_自然语言处理_81

5.2.2 The geometry of normalized generalized linear models

我们将几何分析的重点放在广义线性模型上。以下分析的结果可以很容易地应用于理解深度神经网络,该网络具有 Fisher 信息矩阵的块对角近似,其中每个块对应于单个神经元的参数。

广义线性模型(GLM)可被视为使用权重向量 nlpcc 历年文章 nlp经典论文_人工智能_106 和偏置标量 nlpcc 历年文章 nlp经典论文_方差_72 对指数族的输出分布进行参数化。为与前面章节一致,GLM 的对数似然可使用 summed inputs nlpcc 历年文章 nlp经典论文_深度学习_108 写成如下:

nlpcc 历年文章 nlp经典论文_方差_109


式中,nlpcc 历年文章 nlp经典论文_方差_42 是神经网络中模拟非线性的传递函数,nlpcc 历年文章 nlp经典论文_方差_111 是传递函数的导数,nlpcc 历年文章 nlp经典论文_自然语言处理_112 是实值函数,nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_113 是对数配分函数。nlpcc 历年文章 nlp经典论文_自然语言处理_114 是缩放输出方差的常数。假设 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_16 维输出向量 nlpcc 历年文章 nlp经典论文_人工智能_116 使用 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_16 个独立的 GLM 和 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_118 建模。设 nlpcc 历年文章 nlp经典论文_深度学习_88 为权重矩阵,其行为单个 GLM 的权重向量,nlpcc 历年文章 nlp经典论文_深度学习_66 表示长度 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_16 的偏置向量,nlpcc 历年文章 nlp经典论文_自然语言处理_122表示 Kronecker 向量算子。多维 GLM 关于其参数 nlpcc 历年文章 nlp经典论文_自然语言处理_123 的 Fisher 信息矩阵只是数据特征和输出协方差矩阵的预期 Kronecker 乘积:

nlpcc 历年文章 nlp经典论文_人工智能_124


我们通过将 normalization 方法获得多个 normalized GLM,该方法通过 nlpcc 历年文章 nlp经典论文_方差nlpcc 历年文章 nlp经典论文_方差_02 应用于原始模型中的 summed inputs nlpcc 历年文章 nlp经典论文_深度学习_108 。在不丧失一般性的情况下,我们将 nlpcc 历年文章 nlp经典论文_深度学习_128 表示为 normalized 多维GLM下的 Fisher 信息矩阵,带有额外增益参数nlpcc 历年文章 nlp经典论文_自然语言处理_129:

nlpcc 历年文章 nlp经典论文_自然语言处理_130


Implicit learning rate reduction through the growth of the weight vector:请注意,与标准 GLM 相比,沿权重向量 nlpcc 历年文章 nlp经典论文_人工智能_80 方向的块 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_132由增益参数和 normalization 标量 nlpcc 历年文章 nlp经典论文_自然语言处理_133 缩放。如果权重向量 nlpcc 历年文章 nlp经典论文_人工智能_80 的范数增长两倍大,即使模型的输出保持不变,Fisher 信息矩阵也将不同。沿 nlpcc 历年文章 nlp经典论文_人工智能_80 方向的曲率将变为1/2倍,因为 nlpcc 历年文章 nlp经典论文_自然语言处理_133

Learning the magnitude of incoming weights:在标准化模型中,传入权重的大小由增益参数显式参数化。在学习过程中,我们比较了在 normalized GLM 中更新增益参数和在原始参数化下更新等效权重的大小之间模型输出的变化。沿 nlpcc 历年文章 nlp经典论文_深度学习_128

Supplementary Material

Application of layer normalization to each experiment

本节描述了如何将 layer normalization 应用到每一篇论文的实验中。为了便于记法,我们将 layer normalization 定义为具有两组自适应参数(增益 nlpcc 历年文章 nlp经典论文_深度学习_138 和偏差 nlpcc 历年文章 nlp经典论文_自然语言处理_10)的函数映射 nlpcc 历年文章 nlp经典论文_人工智能_140
nlpcc 历年文章 nlp经典论文_人工智能_141nlpcc 历年文章 nlp经典论文_自然语言处理_142其中,nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_143 是向量 nlpcc 历年文章 nlp经典论文_人工智能_144 的第 nlpcc 历年文章 nlp经典论文_方差_44

相关的笔记

模型优化之Layer Normalization

相关代码

pytorch

Docs > torch.nn > LayerNorm

torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, device=None, dtype=None)

如本文Layer Normalization所述,对一个 mini-batch 的输入应用 Layer Normalization

nlpcc 历年文章 nlp经典论文_自然语言处理_146


计算最后 D 个维度的均值和标准差,其中 D 是 normalized_shape 的维度。例如,如果 normalized_shape 为(3,5)(二维形状),则计算输入的最后两个维度的均值和标准差(即 input.mean((-2, -1)) )。如果 elementwise_affine = True,则 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_09nlpcc 历年文章 nlp经典论文_自然语言处理_10

注意:
与 Batch Normalization 和 Instance Normalization 不同,Batch Normalization 和 Instance Normalization 使用 affine 选项为每个通道/平面应用标量比例因子和偏置,Layer Normalization 使用 elementwise_affine 选项为每个元素应用比例因子和偏置。

该层使用从训练和 evaluation 模式中的输入数据计算的统计量。


Parameters:
nlpcc 历年文章 nlp经典论文_自然语言处理_149normalized_shape (int or list or torch.Size) —— 输入形状从预期输入的大小为 nlpcc 历年文章 nlp经典论文_nlpcc 历年文章_150。如果使用单个整数,它将被视为一个单例列表,并且该模块将在最后一个维度上进行 normalization,该维度预计是该特定大小的维度。
nlpcc 历年文章 nlp经典论文_自然语言处理_149eps —— 为数值稳定性增加分母的值。默认值:1e-5,公式中的 nlpcc 历年文章 nlp经典论文_自然语言处理_15
nlpcc 历年文章 nlp经典论文_自然语言处理_149elementwise_affine —— 一个布尔值,当设置为 True 时,此模块将每元素的可学习的仿射参数初始化为1(用于权重)和0(用于偏置)。默认值:True。


Variables:
nlpcc 历年文章 nlp经典论文_自然语言处理_149~LayerNorm.weight —— 形状为 normalized_shape 的模块的可学习权重当 elementwise_affine 设为 True。这些值被初始化为1。
nlpcc 历年文章 nlp经典论文_自然语言处理_149~LayerNorm.bias —— 形状为 normalized_shape 的模块的可学习偏置当 elementwise_affine 设为 True。这些值被初始化为0。


Shape:
nlpcc 历年文章 nlp经典论文_自然语言处理_149Input: (N, *)
nlpcc 历年文章 nlp经典论文_自然语言处理_149Output: (N, *)(same shape as input)


nlpcc 历年文章 nlp经典论文_自然语言处理_158

tensorflow

keras

pytorch API:

tensorflow API