XLNet

2020-06-25  本文已影响0人  京漂的小程序媛儿

1、XLNet的出发点

自回归语言模型AR:仅根据上文预测,或仅根据下文预测。ELMO、GPT。优势是擅长生成式自然语言处理任务。 因为在生成上下文时,通常是前向的。缺点是仅利用一边,信息利用不充分。
噪声自动编码器DAE:DAE是从损坏的输入重建原始数据。比如Bert。缺点是1、输入侧引入[Mask]标记,导致预训练阶段和Fine-tuning阶段不一致的问题。2、Bert是基于被Mask的token之间完全独立假设。如[New, York, is, a, city]中New, York被mask。Bert是用 is, a, city预测New,用 is, a, city预测York。但其实New和York之间也是有相关性的,也就是被mask的词之间并不一定独立。

XLNet的出发点就是:能否融合自回归LM和DAE两者的优点。

2、XLNet基本思想

XLNet初衷:如何实现,看上去仍然是从左向右的输入和预测模式,但是其实内部已经引入了当前单词的下文信息呢?即仍然用自回归LM的方法,但是要考虑两侧上下文信息。
在预训练阶段,引入Permutation Language Model(排列LM)的训练目标。首先将句子的 token 随机排列,然后采用 AR 的方式预测句子末尾的1/k个单词,这样 XLNet 即可同时拥有 AE 和 AR 的优势。


如果我们的语言模型遍历T!种分解方法,并且这个模型参数共享,那么这个模型应该就能(必须)学习到各种上下文。现实中是随机采样部分排列。

3、 XLNet实现

3.1 PLM


输入序列不变,在transformer内部,通过Attention Mask,把其它没有被选到的单词Mask掉,不让它们在预测单词Ti的时候发生作用。看着就类似于把这些被选中的单词放到了上文Context_before的位置了。

3.2双流自注意力模型

因为引入了PLM,所以对于每个词,我们有时候只要位置信息,有时候位置信息和内容信息都要。所以需要两个流,分别是Query Stream和Content Stream。



3.2.1 Query Stream

g表示Query Stream,只包含位置信息,h表示Content Stream,包含位置和内容信息。在计算上层该token的Query Stream时,用到了该token的位置信息作为Q和其他可见token的内容信息KV,哪些token的内容信息可见,用Query Stream mask矩阵表示。


3.2.2Content Stream

计算上层该token的Content Stream时,用到了该token的内容信息作为Q和其他可见token的内容信息作为KV,哪些token的内容信息可见,用Content Stream mask矩阵表示。比Query Stream mask矩阵多了对角线。


3.2.3Query Stream和Content Stream的结合

最下面是输入层, e(x) 是单词的词向量,表示输入的 Content Stream,而 w 表示输入的位置信息,即 Query Stream。

3.3 Partial Prediction部分预测

XLNet在实现的时候,为了提升效率,选择每个句子最后末尾的1/K单词被预测(前面词的上下文比较少)。XLNet-Large 时使用的 K 为 6,大约是预测末尾 14.3%的 token。

3.4 pretraining和finetuning的区别

fine-tuning的时候,只使用Content Stream,并且Mask为全为0,这样每个Token都可以attend to其它所有的Token。

4、XLNet集大成者

XLNet就是Bert、GPT 2.0和Transformer XL的综合体变身。
1、它通过PLM预训练目标,吸收了Bert的双向语言模型;
2、GPT2.0的核心其实是更多更高质量的预训练数据,这个明显也被XLNet吸收进来了(扩充数据规模,并对质量进行了筛选过滤);Bert使用的预训练数据是BooksCorpus和英文Wiki数据,大小13G。XLNet除了使用这些数据外,另外引入了Giga5,ClueWeb以及Common Crawl数据,并排掉了其中的一些低质量数据,大小分别是16G,19G和78G。
3、Transformer XL的主要目标是解决Transformer对于长文档NLP应用不够友好的问题。XLNet吸收了相对位置编码以及分段RNN机制。

上一篇下一篇

猜你喜欢

热点阅读