追溯XLNet的前世今生:从Transformer到XLNet-程序员宅基地

640?wx_fmt=jpeg

作者丨李格映

来源 | 转载自程序员宅基地


导读: 2019 年 6 月,CMU 与谷歌大脑提出全新 XLNet,基于 BERT 的优缺点,XLNet 提出一种泛化自回归预训练方法,在 20 个任务上超过了 BERT 的表现,并在 18 个任务上取得了当前最佳效果! 从 BERT 到 XLNet,预训练模型在不断进步,本文将解读 XLNet 的诞生过程,回顾它的前世今生。


前言


正当 GPT-2 还拿着 15 亿参数的模型吊着人们的胃口时,XLNet 带着开源的代码和 20 项 SOTA 的成绩悄悄发布了。从 BERT 到 XLNet,大一统预训练模型的成功,无疑昭示着行业的快速进步。现在是最好的时机。回到正题,本文虽篇幅较长,但能提供不一样的视角,帮你迅速理清模型的细节。废话不多说,笔者这就将带你快速品读,XLNet 诞生之路上最重要的三篇论文:


  • Attention Is All You Need (12 Jun. 2017)

  • Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (9 Jan. 2019)

  • XLNet: Generalized Autoregressive Pretraining for Language Understanding (19 Jun. 2019)


一、Attention Is All You Need


论文链接:https://arxiv.org/abs/1706.03762

代码链接:https://github.com/tensorflow/tensor2tensor


这篇论文诞生于 2017 年 6 月,彼时 RNN、LSTM、GRU 早已名扬天下,发迹于 2015 年的 Attention 机制也在经历各种变形的考验,两者相互合作,占据了 NLP 的半边天。循环神经网络最大的缺陷,在于其序列依赖性,上一时刻输出的隐藏状态(以及 LSTM 的记忆细胞)和本时刻的输入共同作为新一轮的单元细胞处理材料,如此往复。


出于自回归的特性,单单凭借一到两个矩阵完整而不偏颇地记录过去几十个甚至上百个时间步长的序列信息,显然不太可能,其权重在训练过程中反复调整,未必能刚好应用到测试集的需求上。更不用提训练时梯度消失导致的难以优化的问题。这些缺陷从 LSTM 的单元公式便足以看出。后续新模型的开创者们始终没有推出一个可以完美解决以上问题,同时保证特征抽取能力的方案,直到 Transformer 出现。(下图为应用于文本摘要任务的模型结构示例,结构为双向 LSTM 搭配 Attention 机制)


640?wx_fmt=png


在各种情景下历经切除试验而始终保持稳健性的 Attention 机制不能抛弃,于是 Transformer 的发明者选择将其保留,而彻底摒弃循环神经网络的设计架构。取而代之的,是回炉再造后焕然新生的 Attention 机制,叫做 Self-Attention,意为 “Attention on oneself”。


Attention机制


在介绍 Self-Attention 前,我们首先回顾一下 Attention 机制的原理,委屈一下对 Attention 机制熟悉的读者。Attention 机制的目的是作为 Encoder 的附加层,提取更为丰富的特征信息。其核心在于三个要素:Query, Key 和 Value,公式如下,


Attention(Q,K,V)=Similarity(Q,K)V 


640?wx_fmt=png


640?wx_fmt=png


640?wx_fmt=png

其中分dk一般为词向量的维度。在此基础上进一步变形,将 Query, Key, Value 经过多组线性变换后分别放入 Scaled Dot-Product Attention,对得出的结果进行合并并进行二次线性变换,这样的 Attention 机制称为 Multi-Head Attention:


640?wx_fmt=png


 640?wx_fmt=png

在另一方面,以上问答系统案例中的 Query 和 Key 分别来自与文本和问题有关的隐藏状态,而当 Query 和 Key 来自同一组对象时,即计算相似度时我们将词向量与文本本身的其他词向量组合求相似度,不引用任何其他信息,这样的 Attention 机制称为 Self-Attention。自注意力输出的特征直接替换原隐藏状态,不再与其合并。以上四者的结合便是 Attention 机制在 Transformer 中的应用,更多细节我们将在下文中介绍。除以上几者之外,Attention 还有诸多不同的变形方式,包括拼接后导入感知机代替点积进行相似度计算,以及以加权平均的方式代替 Attention 输出特征与 Query 的纵向合并,感兴趣的读者可自行了解。


Transformer


使用循环神经网络搭配 Attention 机制进行各种变形形成 Encoder,再接一个作为输出层的 Decoder 形成 Encoder-Decoder 架构,是 Transformer 诞生前夕各类主流 NLP 神经网络的设计思路。


例如动态协同注意网络 (Dynamic Coattention Network, DCN) 使用作为 Encoder 的单向 LSTM + 协同注意力编码器对来自文本和问题的隐藏状态进行多次线性/非线性变换、合并、相乘后得出联合矩阵,再投入由单向 LSTM、双向 LSTM 和 Highway Maxout Networks (HMN) 组成的动态指示解码器 (Dynamic Pointing Decoder) 导出预测结果;双向注意流网络 (Bi-Directional Attention Flow, BiDAF) 除特殊的由循环神经网络构成的结构外,同时使用问题到文本和文本到问题的注意力矩阵提取特征。


在问答领域还包括 DrQA、AoA、r-Net 种种变形后表现有所提升的模型,其他领域则更多。但无论如何,始终摆脱不掉 RNN 或 CNN 的影子。


Transformer 超脱于其中,是第一个使用自注意力机制,彻底摆脱循环或卷积神经网络依赖的模型。模型结构如下:


640?wx_fmt=png


左侧和右侧分别是基础的 Encoder 单元和 Decoder 单元,两者搭配在一起组成一个 Transformer 层 (Transformer-layer)。为行文清晰,我们将模型细节由浅入深,整理为以下要点:


  • Inputs:模型的训练基于单向 many-to-many,不要求 Inputs 和 Outputs 的长度相等,两者不等长时将空缺部分填充为 0 向量。

  • Outputs (shifted right):在一般任务下,模型训练的目的为预测 next token probability,从而保持 Inputs 和 Outputs 等长,Outputs 取自于文本中相对于 Inputs 右移一个位置,即 shifted right;在进行翻译任务的训练时,则输入一个不等长的句子对。

  • Nx:论文中的 Transformer 深度为六层。在每一层的结尾,Encoder 输送隐藏状态给下一层 Encoder,Decoder 同理。

  • 三个箭头:通向每个注意力层的三个并列的箭头从左到右分别为 Value、Key 和 Query。Encoder 在每一层将隐藏状态通过线性变换分化出 Key 和 Value 输送给 Decoder 的第二个注意力层。

  • Input Embedding:使用预训练词向量表示文本内容,维度为 dmodel  ,论文中 dmodel=512.

  • Positional Embedding:依据单词在文本中的相对位置生成正弦曲线,以记录序列长度信息,针对 pos pospos 位置上的奇数维和偶数维,


640?wx_fmt=png

  •  Masked Multi-Head Attention:仅应用于 Decoder 的第一个注意力层。在 Multi-Head Attention 的基础上做 Masking 处理,其目的在于计算某一位置 Self-Attention 时不利用到右侧我们将要预测的信息,所有与右侧位置的点积不参与计算,直接取值为 −∞,这样一来经过 Softmax 归一化处理,右侧位置的权重将接近于 0。

  • Linear:输出模型结果的概率分布,输出维度为预测目标的词汇表大小。


以上概括虽简短,但皆是论文内容的高度浓缩,相信读者到这里已经非常清楚 Transformer 的架构了。由于引入了自注意力机制,Transformer 避免了使用自回归模型提取特征的弊端,得以充分捕获近距离上文中的任何依赖关系。不考虑其优良的并行特性,在应对文本总长度小于词向量维度的任务时 (例如机器翻译),模型的训练效率也显著高于循环神经网络。夸归夸,Transformer 也有不足之处。之所以说是捕获近距离的任何依赖关系,是因为论文没有提到,当输入文本的固定长度持续增长时,其训练时间也将呈指数上涨。也因此,Transformer 的序列建模长度不如 LSTM,输入句子对是标准的训练形式。


成绩


论文作者在两项机器翻译任务上训练 Transformer,并刷新了历史最佳成绩。分别为 WMT 2014 年英德翻译数据集 (包含450万个句子对),和 2014 年英法翻译数据集 (包含3,600万句子对)。前者预测的是德语语料的双字节编码 (byte-pair encoding),词汇大小为 37,000,后者则是纯粹的单词,共计 32,000 个。


每次投入包含 25,000 个源语言词汇以及 25,000 个目标语言词汇的句子对批量进入模型训练。训练在 8 块 Nvidia P100 GPU 上进行,依据上文所述超参数进行配置的基础模型使用了 12 个小时训练了 100,000 个步长,平均每个步长耗时 0.4 秒;而经过反复调参,表现最好的大参数模型花费 3.5 天训练了 300,000 个时间步长,每个步长耗时 1 秒。


优化器选用 Adam Optimizer。训练时采用了三种正则化方式:1)在每一个注意力层和前馈层后接一个概率为 Pdrop=0.1 的 Dropout 层;2)在将 Input 或 Output Embedding 和 Positional Embedding 进行加法运算后以同样的概率随机 Dropout;3)对模型标签采用 els=0.1 的平滑处理。这三种方式都一定程度地提高了模型的泛化能力。更多细节请读者自行参考论文。


640?wx_fmt=png


最终 Transformer 在第一个任务上将历史最佳表现提升两个百分点到 BLEU 28.4,第二个任务提升 0.5 个百分点到 BLEU 41.8。除这两个任务以外,论文阐述了在英文句法分析 (Consituency Parsing) 上也取得了不错的效果。


640?wx_fmt=png


Transformer 最大的成就在于引入自注意力机制,摆脱了序列模型自回归式的设计。由于没能在实际任务的应用上大范围地刷新 RNN 系模型的成绩,因而没有引起如同 BERT 和 XLNet 诞生之时的轰动。在此期间,仍然有大量的学者致力于研究 LSTM 梯度消失问题的解决方案,包括调整参数初始化,增强记忆结构,调整单元架构等等,没有将注意力放在 Transformer 上。正是借助 OpenAI GPT、BERT 这些表现亮眼的上层模型,Transformer 才在一两年后逐渐奠定它的江湖地位。


二、Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context


论文链接:https://arxiv.org/abs/1901.02860

代码链接:https://github.com/kimiyoung/transformer-xl


这篇论文发布于今年年初 (9 Jan. 2019)。论文中,Transformer-XL 旨在于解决长期以来困扰 NLP 界的难题:捕捉长距离依赖关系,这也是其名称的由来 XL: extra long。有学者研究表明,LSTM 的平均上下文长度为 200 (Transformer 低于 50)。而在同等的计算力下,Transformer-XL 最终可以捕获的依赖关系距离比循环神经网络远 80%,更超出 Transformer 450%。


这还不够,next token prediction 速度更是 vanilla Transformer (Transformer 在字符级和深度上的改良版本) 的 1,800+ 倍。这其中的秘诀在于 Transformer-XL 对自注意力机制引入的两项调整 —— 循环机制 (recurrence mechanism) 和 相对位置编码 (relative positional encoding)。但 Transformer-XL 和 Transformer 的区别还远不止于此,我们会在下文中逐步展开相关介绍。


Vanilla Transformer


两者还存在诸多区别的原因,在于 Transformer-XL 并非直接从 2017 年发布的原始 Transformer 演化而来,而是一个叫 vanilla Transformer 的版本。该版本首次出现在 Rami Al-Rfou 等人于 2018 年发布的 Character-Level Language Modeling with Deeper Self-Attention (9 Aug. 2018),论文链接。(该论文中并没有提到 vanilla 的字样,至于本文作者为何称呼该模型为 vanilla,笔者暂未找到答案,尚且沿用这一称呼)。


Vanilla Transformer 将 Transformer 的深度扩展到 64 层,并应用了 标准 Transformer 架构 (standard Transformer architecture):将每一层中的 Decoder 剔除,并将 Encoder 中的自注意力层改为 Masked 自注意力层,由此一来模型结构大大简化,使得 Transformer 具备成为优秀特征提取器的资质 (如同当年 RNN 那样)。在下文中介绍 BERT 和 XLNet 时我们将会多次提到这一概念。


Vanilla Transformer 还引入了一些其他独特的设计,包括在中间层添加辅助损失函数提前参与收敛,这里不进行赘述。训练时,首先将完整的语料分成若干个等长的 segment,计算 self-attention 不考虑本 segment 以外的语料信息,由此预测 segment 内部的 next token probability。而在推理 (预测) 时,逐字划分 segment 边界,每过一个时间步长则向右滑动一个单位。如下图所示:


640?wx_fmt=png


本论文指出,这样的设计存在两个重要缺陷:1)捕捉长距离依赖关系依然受限于 segment 的长度,同时无法充分利用自注意力机制的优化优势;2)将语料序列直接划入等长的 segment 将把句子横空切断,造成上下文碎片化 (context fragmentation)。


循环机制


爱之深,责之切。批评过后,论文提出了解决方案:循环机制。同 vanilla Transformer 一样,将语料事先划分为等长的 segments,训练时将每一个 segment 单独投入计算 self-attention。每一层输出的隐藏状态作为记忆存储到内存中,并在训练下一个 segment 时,将其作为额外的输入,代表上文中的语境信息。这样一来便在上文与下文之间搭建了一座桥梁,使得模型能够捕获更长距离的依赖关系:


640?wx_fmt=png


数学上,假设两个相邻的 segment 分别为,

640?wx_fmt=png


Transformer-XL


将循环机制和相对位置编码结合起来,也就得到了完整的 Transformer-XL 模型。最终表达式为,


640?wx_fmt=png


成绩


Transformer-XL 承袭了 vanilla Transformer 适用于字符级 (character-level) 任务的特性,并能够连续生成包含数千个字符的文本 (尚且不知同等参数量下,生成效果和后来大名鼎鼎的 OpenAI GPT-2 相比如何)。


论文作者将 Transformer-XL 广泛应用在词汇级和字符级的数据集上,包括 WikiText-103,enwik8,text8,One Billion Word,以及 Penn Treebank。前三个数据集重在检测长距离依赖关系的捕捉能力,Transformer-XL 不负所望,所有表现皆优于当下 SOTA 模型;


第四个数据集 One Billion Word 由于句子被打乱,考验的是短距离依赖关系的捕捉能力,Transformer-XL 依旧刷新了最佳成绩;第五个数据集体量仅有100万,不足前四者的百分之一,考验的是小数据集训练后的泛化能力,Transformer-XL 表现仍然亮眼。模型设置方面,注意力长度 O(N×L) O(N\times L)O(N×L) 训练时从 384 起底,最高 784,而预测时 Large 模型更是达到了原来不可想象的 3,800 的高度;Encoder 和 Decoder 层数从 12 层到 24 层不定。


640?wx_fmt=png

640?wx_fmt=png


RECL


abbr. Relative Effective Context Length。在论文的结尾,作者提出了将 RECL 作为判断模型有效文本利用长度的基准,换句话说,衡量模型对长距离关系的捕获能力。原理在于找出 r rr 百分比个最难预测的 token,求得能极小化损失函数的注意力长度。设定 r=0.1 r=0.1r=0.1,Transformer-XL 最终的成绩为 900,这便是前文中 80% 和 450% 数字的由来:


640?wx_fmt=png


而在预测速度上,1,800+ 的数字来自于:


640?wx_fmt=png


既能捕获长距离依赖关系,也能充分利用短距离依赖关系,Transformer-XL 名副其实地成为第一个同时在字符级和词汇级任务上超越循环神经网络的自注意力模型,并在为构建集成网络,刷新问答、分类、推理等 NLP 领域的成绩做着全面的准备。


三、XLNet: Generalized Autoregressive Pretraining for Language Understanding


论文链接:https://arxiv.org/abs/1906.08237

代码链接:https://github.com/zihangdai/xlnet


6 月 19 日,带着 Transformer-XL 的优良特性,XLNet 终于问世。自一月份 Transformer-XL 的论文发布以来,已过去五个月。期间,擅长暴力美学,堆砌训练材料和参数体量的 GPT-2 (16 Feb. 2019) 因续写文章表现出色,难以辨识真假,引发一阵道德舆论风暴。


但在模型设计本质上,GPT-2 相对于 GPT 并未获得具有价值的创新,因而论文中鲜有涉及 GPT-2 的讨论。相对地,无论是最终的模型表现,还是部分细节的设计初衷,XLNet 都和 BERT 紧密相关。因此读懂这篇论文,需要对 BERT 的原理有基本的了解。如果你对 BERT 不甚熟悉,没关系,笔者将带着你一起回顾。


BERT


如果说 BERT 的出现代表基于 Transformer 的自注意力派系彻底战胜基于 RNN 的自回归系,那么 XLNet 则是出自自注意力派系门下,融合两家武学之长的集大成者。BERT 出自论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (11 Oct. 2018),论文链接。以下是 BERT 的结构:


640?wx_fmt=png


由图我们看出,BERT 由双层双向 Transformer 构建而成,训练分为两个步骤:预训练 (pre-training) 和 微调 (find-tuning)。预训练是为了在输入的词向量中融入上下文特征,微调则是为了使 BERT 能适应不同的下游任务,包括分类、问答、序列标注等,两者是独立进行的。


由此我们可以看出,BERT 是一个普适性非常强的模型,而不像过去几年中很多为特定任务设计的模型 (feature-based task-specific models) 那样,只能应用于单一场景 ,这为 BERT 刷新 11 项记录奠定了基础。预训练时,BERT 采用的策略与标准 Transformer 不同的地方在于,后者是基于预测 next token,只在输入句子的结尾进行预测;而前者预测的是句子本身,只是输入时 15% 的 token 被随机遮盖 (mask) 掉了,这便是 BERT 独特的 Mask 机制,也是众多 data corruption 方式中的一种。而 BERT 在标准 Transformer 的位置编码基础上,还添加了一项 segment 编码,如下图:


640?wx_fmt=png


这是 BERT 预训练时最标准的输入形式。每个训练步长,BERT 输入句子 A,然后以 50% 的概率选择下一个连续的句子作为 B,另外 50% 的概率是从语料中随机抽取不连续的 B 取而代之。这便是 BERT 论文中所提到的 Next Sentence Prediction。因此模型训练时的输出除了完整的句子本身外,还有一个是或否的标签,判断两个句子是否连续。


这样设计的初衷在于增强 BERT 的上下文推理能力。以上是预训练,在微调时,只需要改变模型的输入和输出即可。关于 BERT 的简短介绍就进行到这里。最终,BERT 在以下十一个任务上取得了 SOTA 成绩:


  • 分类及推理:GLUE (MNLI, QQP, QNLI, STS-B, MRPC, RTE, SST-2, CoLA), SWAG

  • 序列标注:CoNLL-2003 NER

  • 问答:SQuAD


由于 BERT 不是本文的重点,更多细节请读者自行参读论文,或参考网络博客 (出于 BERT 的知名度,网上的解读非常详尽)。以下将会经常提到关于 BERT 的以上内容。


▌有序因子排列


BERT 与 XLNet 的首要不同在于,BERT 底层应用的是 Mask 机制下的 标准 Transformer 架构,而 XLNet 应用的是在此基础上融入了自回归特性的 Transformer-XL。前者无论是在训练还是预测,每次输入的文本都相互独立,上一个时间步长的输出不作为下一个时间步长的输入;而传统的循环神经网络正好相反。


论文将满足前者特性的模型归类于 自编码 (autoencoding, AE) 语言模型,而把 RNN 系归类于自回归 (autoregressive, AR) 语言模型。以 BERT 为首的自编码模型虽可以学得上下文信息,但在 data corruption 设计上存在两个天然缺陷:


1)忽视了训练时被 Mask 掉的 token 之间的相关关系;


2)这些 token 未能出现在训练集中,进一步导致预训练的模型参数在微调时产生差异。而自回归模型虽不存在以上缺陷,但只能基于单向建模。双向设计 (如 GPT 的双层 LSTM) 将产生两套无法共享的参数,本质上仍为单向模型,利用上下文语境的能力有限。


640?wx_fmt=png

640?wx_fmt=png


不同的排列方式,使模型的训练充分融合上下文特征,同时不会造成 Mask 机制下的有效信息缺失,从而使模型充分利用自编码和自回归的优势,而避免了两者的不足。这样独特的思路并不是创造 XLNet 的学者们拍拍脑袋想出来的,而是借鉴了发表于 2016 年的一篇论文中的思想,只不过后者对元素的排列并没有如同 XLNet 进行有序的规划,而是全程无序的,论文指出这样的思路会使序列退化为词袋,从而丢失关键信息,因而做出调整。


▌双流自注意力


双流自注意力 (Two-Stream Self-Attention) 为配合有序因子排序而生,是相对于 Transformer-XL 的单流自注意力而言的。由于论文没有对 Transformer-XL 展开详细的介绍,因此不熟悉 Transformer-XL 的读者读到这里会觉得晦涩难懂 (笔者在阅读本论文前看了几篇知名博主发布的关于 XLNet 的解读,都没能将它解释清楚)。鉴于此,笔者会在后面详细解释相关要点,我们先依旧按照论文的逻辑展开。第一步,先尝试将有序因子排列应用在 Transformer-XL 上。似然函数表达式:


640?wx_fmt=png


640?wx_fmt=png


当读者看到上述公式中 Query Stream 的 Key 和 Value 用的是来自 Content Stream 的隐藏状态时,应当非常熟悉,这正是 2017 年发布的第一代 Transformer 的设计:将固定长度的语料作为 Inputs 导入 Encoder,而将语料整体向右移动一个字符作为预测对象 Outputs 导入 Decoder;Inputs 经过一个自注意力层和一个前馈层后,从输出结果中分离 Key 和 Value 给 Decoder;Decoder 经过一个 Mask 自注意力层后保留 Query,接收来自于 Encoder 的 Key 和 Value 进行进一步运算。


对以上过程不熟悉的读者可参读本文第一节。而在第二节中我们提到过,Transformer-XL 由 vanilla Transformer 演变而来,使用的是标准 Transformer 架构。这个架构本身的特点在于 Query 和 Key 你我不分家,两者通过不同的参数从一个矩阵线性 (隐藏状态) 变换而来;继续往下追溯,两者取自同一块语料;属于单流自注意力设计。因此双流自注意力实际上是 XLNet 为了配合有序因子排列,而将 Transformer-XL 的结构还原回初代 Transformer 的架构。Query Stream 中剔除 640?wx_fmt=png等同于初版 Transformer 中 Decoder 对 Query 的 Mask 操作。


回到论文内容。这时的模型已经可以投入使用,但经过试验发现,有序因子排序增加了数倍的计算量使得模型的收敛速度过于缓慢,为此 XLNet 引入一项超参数 K KK,只对排列尾部的 1/K 1/K1/K 个元素进行预测,最大化似然函数。如此以来效率大大提高,而同时不用牺牲模型精度。这个操作称为 partial prediction,同 BERT 只预测 15% 的 token 类似。


XLNet


关于模型的设计还有以下要点:


  • Transformer-XL:关于 Transformer-XL 中的循环机制 (recurrence mechanism) 以及相对位置编码 (relative position encoding),应用到 XLNet 中并没有发生改变。XLNet 会为每一种排列记录隐藏状态记忆序列,而相对位置编码在不同排列方式间保持一致,不随排列方式的变化而变化。以一句话作为总结,我们可以将 XLNet 看成是不同排列下多个 Transformer-XL 的并行。

  • 训练过程:与 BERT 同样分为预训练和微调。预测时只需要关闭 Query Stream,将 Transformer-XL 再度还原回单流注意力的标准形态即可。

  • 问答任务:应用于提供一个问题和一段文本的问答任务时,仿照 BERT,从语料中随机挑选两个样本 segment 组成一个完整的 segment 进行正常训练。只有当两者来自于同一个上下文范围时使用循环机制。而对于相对位置编码,使用可训练参数替换原来的正弦曲线。经过切除测试 (ablation study),BERT 中的 next sentence prediction 并未对模型效果有显著提高,因此不使用。


到这里,XLNet 的介绍也就基本结束了。


成绩


集百家之长,避百家之短的 XLNet 融汇了过去几年里几乎所有相关模型的先进思想,成为超越 BERT 的又一个大一统的集成模型,并在 20 项任务上全面超越前者。其中,18 项任务创造了 SOTA 记录:


  • 分类:GLUE (MNLI, QNLI, STS-B, MRPC, RTE, SST-2, WNLI), RACE, IMDB, Yelp-2, Yelp-5, DBpedia, AG, Amazon-2, Amazon-

  • 文档排序:NDCG@20, ERR@20

  • 问答:SQuAD

 

640?wx_fmt=png


640?wx_fmt=png


640?wx_fmt=png


XLNet 同时克服了自编码模型和自回归模型的缺陷,并出于 Transformer-XL 优秀的长距离依赖关系捕捉能力,对 BERT 的表现形成碾压趋势。其中最大体量的 XLNet-Large 参照 BERT-Large 的配置,包含 3.4 亿参数,16 个注意力头,24 个 Transformer 层,1024 个隐藏单元。论文指出即使是这样的配置,在训练过后依然呈现欠拟合的态势,而 15 亿参数量 GPT-2 的诞生无疑也预示着,将来 NLP 前沿模型将会持续保持大体量和大规模。


这对各项任务的数据提出了更高的要求。更有专业人士研究表明,XLNet 的训练成本高达 6 万美元,接近 BERT 的 5 倍 和 GPT-2 的 1.5 倍。我们期待未来的 NLP 前沿模型能适用于更多的 NLP 任务以及更小的数据集。


后续


XLNet 的官方 Github 地址 提供了使用预训练模型参数,以及应用于单场景下游任务 (回归/分类/SQuAD) 的微调 (fine-tuning) 教程。目前只发布了包含了 24 层自注意力,1024 个隐藏单元和 16 个注意力头的 XLNet-Large (TensorFlow 1.13.1, Python 2),将于近期发布 XLNet-Base,请读者自行关注官方网址以跟进动态。


作者介绍:


李格映,数据科学专业研究生,来自于香港中文大学(深圳)高等金融研究院,目前就职于华为 (实习)。在自然语言处理的命名实体识别、问答系统领域具备一定研究经验。


原文链接:

https://blog.csdn.net/weixin_43269174/article/details/94323036


(*本文为 AI科技大本营转载文章,转载请联系原作者


精彩推荐



“只讲技术,拒绝空谈”2019 AI开发者大会将于9月6日-7日在北京举行,这一届AI开发者大会有哪些亮点?一线公司的大牛们都在关注什么?AI行业的风向是什么?2019 AI开发者大会,倾听大牛分享,聚焦技术实践,和万千开发者共成长。


目前,大会盲订票限量发售中~扫码购票,领先一步!

                       

640?wx_fmt=jpeg

推荐阅读


640?wx_fmt=png 你点的每个“在看”,我都认真当成了喜欢
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/95937139

智能推荐

什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?_成员内部类和局部内部类的区别-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别

分布式系统_分布式系统运维工具-程序员宅基地

文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具

用Exce分析l数据极简入门_exce l趋势分析数据量-程序员宅基地

文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量

宁盾堡垒机双因素认证方案_horizon宁盾双因素配置-程序员宅基地

文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置

谷歌浏览器安装(Win、Linux、离线安装)_chrome linux debian离线安装依赖-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖

烤仔TVの尚书房 | 逃离北上广?不如押宝越南“北上广”-程序员宅基地

文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...

随便推点

java spark的使用和配置_使用java调用spark注册进去的程序-程序员宅基地

文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序

汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用_uds协议栈 源代码-程序员宅基地

文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码

AUTOSAR基础篇之OS(下)_autosar 定义了 5 种多核支持类型-程序员宅基地

文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型

VS报错无法打开自己写的头文件_vs2013打不开自己定义的头文件-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件

【Redis】Redis基础命令集详解_redis命令-程序员宅基地

文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令

URP渲染管线简介-程序员宅基地

文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线