BERT 带来的影响还未平复,CMU 与谷歌大脑提出的 XLNet 在 20 个任务上超过了 BERT 的表现,并在 18 个任务上取得了当前最佳效果。使人激动的是,目前 XLNet 已经开放了训练代码和大型预训练模型,这又能够玩一阵了~
机器之心报道,机器之心编辑部。
git
2018 年,谷歌发布了基于双向 Transformer 的大规模预训练语言模型 BERT,刷新了 11 项 NLP 任务的最优性能记录,为 NLP 领域带来了极大的惊喜。很快,BERT 就在圈内普及开来,也陆续出现了不少与它相关的新工做。github
BERT 带来的震撼还未平息,今日又一全新模型出现。网络
来自卡耐基梅隆大学与谷歌大脑的研究者提出新型预训练语言模型 XLNet,在 SQuAD、GLUE、RACE 等 20 个任务上全面超越 BERT。架构
而此论文的做者也都是咱们熟知的研究者:共同一做为杨植麟(曾经的清华学霸,如今 CMU 读博)与 Zihang Dai(CMU 博士),此外还包括 CMU 教授 Yiming Yang,CMU 语言技术中心的总负责人 Jaime Carbonell,CMU 教授、苹果 AI 负责人 Russ Salakhutdinov,谷歌大脑的创始成员、AutoML 的缔造者之一 Quoc Le。并发
论文地址:https://arxiv.org/pdf/1906.08237.pdf
app
预训练模型及代码地址:https://github.com/zihangdai/xlnet框架
那么,相比于 BERT,XLNet 有哪些提高呢?函数
做者表示,BERT 这样基于去噪自编码器的预训练模型能够很好地建模双向语境信息,性能优于基于自回归语言模型的预训练方法。然而,因为须要 mask 一部分输入,BERT 忽略了被 mask 位置之间的依赖关系,所以出现预训练和微调效果的差别(pretrain-finetune discrepancy)。性能
基于这些优缺点,该研究提出了一种泛化的自回归预训练模型 XLNet。XLNet 能够:1)经过最大化全部可能的因式分解顺序的对数似然,学习双向语境信息;2)用自回归自己的特色克服 BERT 的缺点。此外,XLNet 还融合了当前最优自回归模型 Transformer-XL 的思路。学习
最终,XLNet 在 20 个任务上超过了 BERT 的表现,并在 18 个任务上取得了当前最佳效果(state-of-the-art),包括机器问答、天然语言推断、情感分析和文档排序。
之前超越 BERT 的模型不少都在它的基础上作一些修改,本质上模型架构和任务都没有太大变化。可是在这篇新论文中,做者从自回归(autoregressive)和自编码(autoencoding)两大范式分析了当前的预训练语言模型,并发现它们虽然各自都有优点,但也都有难以解决的困难。为此,研究者提出 XLNet,并但愿结合大阵营的优秀属性。
AR 与 AE 两大阵营
无监督表征学习已经在天然语言处理领域取得了巨大的成功。在这种理念下,不少研究探索了不一样的无监督预训练目标,其中,自回归(AR)语言建模和自编码(AE)成为两个最成功的预训练目标。
AR 语言建模旨在利用自回归模型估计文本语料库的几率分布。因为 AR 语言模型仅被训练用于编码单向语境(前向或后向),于是在深度双向语境建模中效果不佳。而下游语言理解任务一般须要双向语境信息。这致使 AR 语言建模没法实现有效预训练。
相反,基于 AE 的预训练模型不会进行明确的密度估计,而是从残缺的输入中重建原始数据。一个著名的例子就是 BERT。给出输入 token 序列,BERT 将一部分 token 替换为特殊符号 [MASK],随后训练模型从残缺版本恢复原始的 token。因为密度估计不是目标的一部分,BERT 容许使用双向语境进行重建。
可是,模型微调时的真实数据缺乏 BERT 在预训练期间使用的 [MASK] 等人工符号,这致使预训练和微调之间存在差别。此外,因为输入中预测的 token 是被 mask 的,所以 BERT 没法像自回归语言建模那样使用乘积法则(product rule)对联合几率进行建模。
换言之,给定未 mask 的 token,BERT 假设预测的 token 之间彼此独立,这被过分简化为天然语言中广泛存在的高阶、长期依赖关系。
两大阵营间须要新的 XLNet
现有的语言预训练目标各有优劣,这篇新研究提出了一种泛化自回归方法 XLNet,既集合了 AR 和 AE 方法的优点,又避免了两者的缺陷。
首先,XLNet 不使用传统 AR 模型中固定的前向或后向因式分解顺序,而是最大化全部可能因式分解顺序的指望对数似然。因为对因式分解顺序的排列操做,每一个位置的语境都包含来自左侧和右侧的 token。所以,每一个位置都能学习来自全部位置的语境信息,即捕捉双向语境。
其次,做为一个泛化 AR 语言模型,XLNet 不依赖残缺数据。所以,XLNet 不会有 BERT 的预训练-微调差别。同时,自回归目标提供一种天然的方式,来利用乘法法则对预测 token 的联合几率执行因式分解(factorize),这消除了 BERT 中的独立性假设。
除了提出一个新的预训练目标,XLNet 还改进了预训练的架构设计。
受到 AR 语言建模领域最新进展的启发,XLNet 将 Transformer-XL 的分割循环机制(segment recurrence mechanism)和相对编码范式(relative encoding)整合到预训练中,实验代表,这种作法提升了性能,尤为是在那些包含较长文本序列的任务中。
简单地使用 Transformer(-XL) 架构进行基于排列的(permutation-based)语言建模是不成功的,由于因式分解顺序是任意的、训练目标是模糊的。所以,研究人员提出,对 Transformer(-XL) 网络的参数化方式进行修改,移除模糊性。
目标:排列语言建模(Permutation Language Modeling)
从上面的比较能够得出,AR 语言建模和 BERT 拥有其自身独特的优点。咱们天然要问,是否存在一种预训练目标函数能够取两者之长,同时又克服两者的缺点呢?
研究者借鉴了无序 NADE 中的想法,提出了一种序列语言建模目标,它不只能够保留 AR 模型的优势,同时也容许模型捕获双向语境。具体来讲,一个长度为 T 的序列 x 拥有 T! 种不一样的排序方式,能够执行有效的自回归因式分解。从直觉上来看,若是模型参数在全部因式分解顺序中共享,那么预计模型将学习从两边的全部位置上收集信息。
为了提供一个完整的概览图,研究者展现了一个在给定相同输入序列 x(但因式分解顺序不一样)时预测 token x_3 的示例,以下图所示:
模型架构:对目标感知表征的双流自注意力
对于参数化,标准 Transformer 架构存在两个互相矛盾的要求:1)预测 token 应该仅使用位置 z_t 而不是内容 x_z<t,否则该目标函数就变得不重要了;2)为了预测另外一个 token x_zj,其中 j>t,
应该编码内容 x_z<t,以提供完整的上下文信息。为了解决这一矛盾,该研究提出使用两个隐藏表征的集合,而不是只用其中一个。
这两个隐藏表征即内容表征 h_zt 和 Query 表征 g_zt,下图 2 的 a、b 分别展现了这两种表征的学习。其中内容表征与 Transforme 的隐藏状态相似,它将同时编码输入自己的内容及上下文信息。Query 表征仅能获取上下文信息及当前的位置,它并不能获取当前位置的内容。
因为目标函数适用于 AR 框架,研究者整合了当前最佳的 AR 语言模型——Transformer-XL 到预训练框架中,并将其体如今方法名字中。具体来讲,他们借鉴了 Transformer-XL 中的两项重要技术——相对位置编码范式和分割循环机制。如今,结合双流注意力和 Transformer-XL 的改进,上面图 2(c) 展现了最终的排列语言建模架构。
实验结果
和 BERT 相同,研究者使用了 BooksCorpus 和英文维基百科做为预训练数据,文本量达到 13GB。此外,论文还使用了 Giga 5(16GB 文本),ClueWeb 2012-B 和 Common Crawl 数据集进行预训练。他们在后两个数据集上使用了启发式搜索过滤掉较短或低质量的文本,最终分别剩余 19 GB 和 78 GB 文本。
这项工做中的最大模型 XLNet-Large 拥有与 BERT-Large 相同的架构超参数,所以模型大小也类似。研究者在 512 块 TPU v3 上借助 Adam 优化器对 XLNet-Large 训练 500K 步,学习率线性降低,batch 大小为 2048,训练时间为 2.5 天。