Press "Enter" to skip to content

三种Cross-lingual模型 (XLM, XLM-R, mBART)详解

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本文将详述三种Cross-lingual模型,按照其在Arxiv上发表论文的时间,分别是 XLM(2019/1/22)
XLM-R(2019/11/5)
mBART(2020/1/22)
,有意思的是这三篇文章均出自FaceBook,他们是不是对跨语言模型有什幺执念?

 

XLM (Cross-lingual Language Model Pretraining)

 

尽管原有的BERT模型可以在上百种语言上进行预训练,但是语言之间的信息并不是互通的,不同的语言模型之间没有共享知识。 Facebook的XLM模型
克服了信息不互通的难题,将不同语言放在一起采用新的训练目标进行训练,从而让模型能够掌握更多的跨语言信息。这种跨语言模型的一个显着优点是,对于预训练后的后续任务(比如文本分类或者翻译等任务),训练语料较为稀少的语言可以利用在其他语料上学习到的信息

 

文章提出 3个预训练任务
,其中2个仅需要 单语种数据集(无监督方式)
,另一个需要 平行语料(有监督方式)

 

Shared sub-word vocabulary

 

假设有$N$个语种,对应的语料记为$\{C_i\}_{i=1,2,…,N}$,$C_i$中的句子数量用$n_i$表示

 

作者的所做的实验中,所有的语种共用一个字典,该字典是用Byte Pair Encoding(BPE)构建的。共享的内容包括相同的字母、符号token如数字符号、专有名词。这种共享字典的方式能够显着的提升不同语种在嵌入空间的对齐效果。本文在单语料库中从随机多项式分布中采样句子进行BPE学习。为了保证语料平衡,句子的采样的概率如下:

 

$$
q_i=\frac{p^\alpha_i}{\sum_{j=1}^Np^\alpha_j}\;\;\;\;\;with\;\;\;\;\;p_i=\frac{n_i}{\sum_{k=1}^Nn_k}
$$

 

其中$\alpha=0.5$。使用这种概率函数进行抽样,可以提高训练语料较少的语言出现的频率,同时可以避免小语种在BPE的过程中直接被切割成单个字符

 

注:很多博客直接把这个公式往这一贴就草草了事,下面我会讲解一下这个公式

 

假设现在有三个语种的语料$C_1,C_2,C_3$,他们对应的句子数分别为$n_1=100,n_2=190,n_3=10$

 

那幺

 

$$
p_1=\frac{100}{300}=\frac{1}{3}, \ p_1^\alpha \approx 0.57\\
p_2=\frac{190}{300}=\frac{19}{30}, \ p_2^\alpha \approx 0.79\\
p_3=\frac{10}{300}=\frac{1}{30}, \ p_3^\alpha \approx 0.18 \\
q_1=\frac{0.57}{1.54}\approx 0.37 \\
q_2 = \frac{0.79}{1.54} \approx 0.51\\
q_3 = \frac{0.18}{1.54} \approx 0.11\\
$$

 

可能读者看到这个概率没什幺感觉,假设单纯的使用句子数的比例$p$进行采样,可以到看$C_1$被采样的概率是$C_3$的10倍。但是如果使用$q$概率进行采样,$C_1$被采样的概率仅是$C_3$的3倍多,虽然$C_3$被采样的概率从数值上来看仍然很小,但是相对来看,小语料被采样的概率确实是提升了

 

Pre-training tasks

 

作者提出了三种预训练任务:CLM、MLM和TLM,下面分别介绍:

 

CLM (Causal Language Modeling)

 

文中的因果语言建模 (CLM) 任务其实是一个Transformer语言模型,该模型被训练来对给定句子预测后一个单词的概率$P(w_t\mid w_1,…,w_{t-1},\theta)$

 

MLM (Masked Language Modeling)

 

就是你知道的BERT的MASK任务,稍微有一些不同的是,论文使用 由任意数量的句子(每个句子截断256个token)组成的文本流
,而不是BERT中仅两个句子组成的文本对。并且为了平衡高频词与低频词之间的差异,在遮住词的时候采用了与上文所述的重采样类似的方法

 

 

TLM (Translation Language Modeling)

 

CLM和MLM都是无监督的,只需要单语数据,如何设计一个针对平行语料的有监督任务呢?翻译任务就是个不错的选择。论文提出 一种新的翻译语言建模方法 (TLM) 来提高跨语言训练的效果。TLM的实际上是MLM的扩展,TLM不考虑单语种的文本流, 而是将并行的翻译句对拼接起来

 

 

如上图所示,在source句子和target句子中都随机mask一些词。当要预测英语句子中被mask的词时,模型首先需要从英语句子的上下文入手,特别地,如果模型仅通过英语句子不足以推断出被mask的单词时,还能够注意到对应法语的翻译内容。这就能够引导模型将英语和法语的表征进行对齐

 

我们还注意到上图Position embeddings与传统PE有些不一样。具体来说,在target句子的部分,位置编码需要重置。同时,无论是这三个预训练任务中的哪一个,我们都会额外输入一个Language embeddings给模型

 

Cross-lingual Language Models

 

跨语言预训练模型由 CLM与MLM
或 MLM与TLM
结合的模型组成

 

对于 CLM与MLM
的组合,文本训练模型的过程中,每个batch包含64个句子流,每个句子流由256个token组成。每次迭代,一个batch来自于同一语种的句子,句子的采样概率与sub-word vocabulary采样的概率函数设计方式一样,只不过其中的$\alpha$变为0.7

 

对于 TLM和MLM
的组合,训练时需要在这两个任务交替进行,并用类似的方法采样翻译的句对

 

Experiences & Results

 

Cross-lingual classification

 

对于跨语言文本分类,论文采用模型的最后一层第一个token的输出作为后续线性分类器的输入。首先用MLM任务在各个语言的单语语料上进行训练(也有加上额外的平行语料进行TLM训练的部分),然后再用英文训练集进行fine-tune,最后在XNLI多语种数据集上进行评估,结果如下表所示

 

注:XNLI的任务是判断两个来自相同语言的句子之间是否有Entailment, Contradict或Natural的关系

 

 

Unsupervised Machine Translation (UMT)

 

无监督机器翻译用的比较多的方法是去噪自编码器+循环翻译。具体来说,对于英译德这个任务,搭建起Encoder-Decoder模型之后,可以用英文文本加上噪声,输入Encoder,然后Decoder出一个德文伪数据,再将该德文伪数据输入Encoder,我们希望Decoder输出的是原始的无噪声英文文本,有一种AutoEncoder的感觉在里面(English->Devon->English)

 

在该论文中,其实就是用CLM或MLM去初始化Encoder和Decoder,下表展示了用不同初始化方法的结果

 

 

Supervised Machine Translation (SMT)

 

下表展示了几种不同预训练方式的结果

 

Sennrich et al.
:这是之前的SOTA
ro -> en:这个是使用单向的数据进行fine-tune
ro <-> en:这个是使用双向的数据进行fine-tune
ro <-> en + BT:用双向的数据进行fine-tune,同时进行Back-Translation(先从A->B生成B的伪数据,然后再翻译回A)

Unsupervised cross-lingual word embeddings

 

这里主要是验证无监督情况下生成的多语Embedding的准确(优秀)程度,具体方法是验证各种源单词与其翻译对应的词之间的距离,结果如下表

 

 

XLM模型的代码开源在 https://github.com/facebookresearch/XLM

 

XLM-R (Unsupervised Cross-lingual Representation Learning at Scale)

 

XLM-R全称叫做XLM-RoBERTa,为了更好的理解这个模型,我下面会简略的概述一下RoBERTa

 

RoBERTa

 

RoBERTa相较于BERT最大的改进有三点:

 

 

    1. 动态Masking

 

    1. 取消NSP (Next Sentence predict) 任务

 

    1. 扩大Batch Size

 

 

静态Masking VS 动态Masking

静态Maksing:在数据预处理期间Mask矩阵就已生成好,每个样本只会进行一次随机Mask,每个Epoch都是相同的
修改版静态Maksing:在预处理的时候将数据拷贝10份,每一份拷贝都采用不同的Mask,也就说,同样的一句话有10种不同的mask方式,然后每份数据都训练N/10个Epoch
动态Masking:每次向模型输入一个序列时,都会生成一种新的Maks方式。即不在预处理的时候进行Mask,而是在向模型提供输入时动态生成Mask

 

取消NSP任务

 

其实到2020年了,很多论文早已不再使用NSP任务,但是RoBERTa算是比较早的一批质疑NSP任务的模型。RoBERTa实验了4种方法:

SEGMENT-PAIR + NSP:输入包含两部分,每个部分是来自同一文档或者不同文档的 segment (segment 是连续的多个句子),这两个segment 的token总数少于 512 。预训练包含 MLM 任务和 NSP 任务。这是原始 BERT 的做法
SENTENCE-PAIR + NSP:输入也是包含两部分,每个部分是来自同一个文档或者不同文档的单个句子,这两个句子的token 总数少于 512 。由于这些输入明显少于512 个tokens,因此增加batch size的大小,以使 tokens 总数保持与SEGMENT-PAIR + NSP 相似。预训练包含 MLM 任务和 NSP 任务
FULL-SENTENCES:输入只有一部分(而不是两部分),来自同一个文档或者不同文档的连续多个句子,token 总数不超过 512 。输入可能跨越文档边界,如果跨文档,则在上一个文档末尾添加标志文档边界的token 。预训练不包含 NSP 任务
DOC-SENTENCES:输入只有一部分(而不是两部分),输入的构造类似于FULL-SENTENCES,只是不需要跨越文档边界,其输入来自同一个文档的连续句子,token 总数不超过 512 。在文档末尾附近采样的输入可以短于 512个tokens, 因此在这些情况下动态增加batch size大小以达到与 FULL-SENTENCES 相同的tokens总数。预训练不包含 NSP 任务

 

扩大Batch Size

 

其实之前我看到过一个说法(源自 Chinese-BERT-wwm
): 降低batch size会显着降低实验效果

 

RoBERTa论文作者也做过相关实验,采用大的Batch Size有助于提高性能

 

 

其中,bsz是Batch Size;steps是训练步数(为了保证bsz*steps近似相同,所以大bsz必定对应小steps);lr是学习率;ppl是困惑度,越小越好;最后两项是不同任务的准确率

 

XLM-R的改进

 

 

    1. 在XLM和RoBERTa中使用的跨语言方法的基础上(所以,本质就是XLM+RoBERTa,没有其他了),在新模型中 增加了语种数量

 

    1. 和 训练数据集的数量

 

    1. ,具体来说使用 超过2TB

 

    1. 预处理过的CommonCrawl数据集,以自监督的方式训练跨语言表征

 

    1. 在fine-tuning期间,基于多语言模型的能力来使用多语言的标注数据,以提升下游任务的性能

 

    1. 调整了模型的参数,以抵消以下不利因素:使用跨语言迁移来将模型扩展到更多的语言时限制了模型理解每种语言的能力。我们的参数更改包括在训练和词汇构建过程中对低资源语言进行上采样,生成更大的共享词汇表,以及将整体模型增加到5.5亿参数量

 

 

Masked Language Models

 

XLM-R的模型主体还是Transformer,训练目标是多语种的MLM,基本和XLM一样。作者从每个语种的语料中采样出文本,再预测出被Mask的tokens。从各语种采样的方法与XLM中相同,只是重新设置$\alpha=0.3$。另一个与XLM不同的是,文本 不使用Language Embeddings
。本文的词典大小是250k,训练了两个模型:

$XLM-R_{Base}$(L= 12, H = 768, A = 12, 270M params)
$XLM-R$(L = 24, H = 1024, A = 16, 550M params)

Scaling to a hundred languages

 

XLM-R的预训练基于100种语言,下图展示了XLM-R和XLM-100相同的88种语言以及各个语料的大小

 

 

Cross-lingual Understading Results

 

下表展示了在XNLI上进行跨语言分类实验的结果。其中D列表示用于预训练的数据,#M列表示模型数量,#lg表示表示语种数量。可以看出XLM-R以82.4%的平均准确率取得了SOTA

 

 

Named Entity Recognition

 

 

Question Answering

 

 

XNLI: XLM versus BERT

 

多语言模型常常招致的一个批评是其在单语言任务上的表现往往不好。但是XLM-R的实验结果却令人刮目,竟然可以超越单语种BERT。具体对比结果见下表

 

 

注:个人感觉作者这里为了证明比单语言模型好,真是穷极手段。首先并没有用XLM-100,而是用了一个少语种的XLM-7。其次,没有和RoBERTa对比,而是和BERT掰手腕

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注