XLNet 和BERT的区别是什么?
与AR语言模型不同,BERT被归类为自动编码器(AE)语言模型。
AE语言模型的目的是从损坏的输入中重建原始数据。
损坏的输入意味着我们使用在训练前阶段将原始token替换为 [MASK]
。我们的目标是预测into
来得到原来的句子。
AE语言模型的优点是它可以在向前和向后两个方向上看到上下文。
但是AE语言模型也有其不足之处。它在预训练中使用了[MASK]
,但是这种人为的符号在finetune的时候在实际数据中时没有的,导致了预训练 — finetune的不一致。[MASK]
的另一个缺点是它假设所预测的(mask掉的)token是相互独立的,给出的是未掩码的tokens。例如,我们有一句话“It shows that the housing crisis was turned into a banking crisis”。我们盖住了“banking”和“crisis”。注意这里,我们知道,盖住的“banking”与“crisis”之间隐含着相互关联。但AE模型是利用那些没有盖住的tokens试图预测“banking”,并独立利用那些没有盖住的tokens预测“crisis”。它忽视了“banking”与“crisis”之间的关系。换句话说,它假设预测的(屏蔽的)tokens是相互独立的。但是我们知道模型应该学习(屏蔽的)tokens之间的这种相关性来预测其中的一个token。
作者想要强调的是,XLNet提出了一种新的方法,让AR语言模型从双向的上下文中学习,避免了AE语言模型中mask方法带来的弊端。
XLNet如何工作?
AR语言模型只能使用前向或后向的上下文,如何让它学习双向上下文呢?语言模型由预训练阶段和调优阶段两个阶段组成。XLNet专注于预训练阶段。在预训练阶段,它提出了一个新的目标,称为重排列语言建模(PLM)。我们可以从这个名字知道基本的思想,它使用重排列。
这里我们用一个例子来解释。序列顺序是[x1, x2, x3, x4]
。该序列的所有排列如下。
。
对于这4个tokens (N)的句子,有24个(N!)个排列。假设我们想要预测x3。24个排列中有4种模式,x3在第1位,第2位,第3位,第4位。