原文:https://towardsdatascience.com/what-is-xlnet-and-why-it-outperforms-bert-8d8fce710335towardsdatascience.com
在 XLNet 论文发布后的一周内,每个自然语言处理领域的人都在谈论它。
是的,“ 在 20 项任务上改进了 BERT ”确实吸引了我们的目光。但更重要的是要了解它的工作原理以及它优于 BERT 的原因。所以我写这篇博客后,在阅读论文后分享我的想法。
内容结构如下:
首先,XLNet 是一个类似 BERT 的模型,而不是完全不同的模型。但这是一个非常有前途和潜力的。总之,XLNet是一种通用的自回归预训练方法。
那么什么是自回归(AR)语言模型?
AR语言模型是一种使用上下文词来预测下一个词的模型。但是在这里,上下文单词被限制在两个方向,前向或后向。
前向
后向
GPT 和 GPT-2 都 AR 语言模型。
AR 语言模型的优势是擅长生成式自然语言处理任务。因为在生成上下文时,通常是前向的。AR 语言模型很自然地适用于此类 NLP 任务。
但AR语言模型有一些缺点,它只能使用前向上下文或后向上下文,这意味着它不能同时使用前向和后向上下文。
与 AR 语言模型不同,BERT 被归类为自动编码器(AE)语言模型。
AE 语言模型旨在从损坏的输入重建原始数据。
双向
损坏的输入意味着我们在预训练阶段用 [MASK]
替换原始词 into
。目标是预测 into
得到原始句子。
AE 语言模型的优势是,它可以从向前和向后的方向看到上下文。
但 AE 语言模型也有其缺点。它在预训练中使用 [MASK]
,但这种人为的符号在调优时在真实数据中并不存在,会导致预训练-调优的差异。[MASK] 的另一个缺点是它假设预测(掩蔽的)词 在给定未屏蔽的 词 的情况下彼此独立。例如,我们有一句话“它表明住房危机已经变成银行危机”。我们掩蔽“银行业”和“危机”。在这里注意,我们知道掩蔽的“银行业”和“危机”包含彼此的隐含关系。但 AE 模型试图预测“银行业”给予未掩蔽的 词,并预测“危机”分别给出未掩蔽的 词。它忽略了“银行业”与“危机”之间的关系。换句话说,它假设预测(掩蔽)的标记彼此独立。但是我们知道模型应该学习预测(掩蔽)词之间的这种相关性来预测其中一个词。
作者想要强调的是,XLNet 提出了一种让 AR 语言模型从双向上下文中学习的新方法,以避免 MASK 方法在 AE 语言模型中带来的缺点。
AR 语言模型只能向前或向后使用上下文,那么如何让它从双向上下文中学习呢?
语言模型包括两个阶段,即预训练阶段和调优阶段。XLNet 专注于预训练阶段。在预训练阶段,它提出了一个名为排列语言建模的新目标。我们可以从这个名称知道基本思想,它使用排列。
论文中的图示
这里我们举一个例子来解释。序列的次序是 [x1, x2, x3, x4]
。这种序列的所有排列如下。
因此对于这 4 个词的(
)句子,有 24(
)个排列。
情景是我们想要预测 x3
。因此在 24 个排列中有 4 种模式,分别 x3
位于第 1 位,第 2 位,第 3 位,第 4 位。
[x3,xx,xx,xx]
[xx,x3,xx,xx]
[xx,xx,x3,xx]
[xx,xx,xx,x3]
4 个模式
这里我们设置位置 x3
作为 t-th
位置,t-1
标记是用于预测 x3
的上下文单词。
之前的 x3
单词在序列中包含所有可能的单词和长度。直观地,该模型将学习从双向的所有位置收集信息。
实现比上面的解释复杂得多,我在此不再赘述。但是你应该已经了解了关于 XLNet 的最基本和重要的想法。
就像 BERT 将 MASK 方法带给公众一样,XLNet 表明置换方法是语言模型目标的一个很好的选择。可以预见,未来会有更多的工作探索语言模型的目标函数。
论文:https://arxiv.org/abs/1906.08237
代码:https://github.com/zihangdai/xlnet