基于大规模语料的多语言预训练模型汇总
一、多语言模型的动机
以BERT为代表的通过利用大规模未标记文本语料进行预训练而得到的语言模型改变了自然语言处理的研究范式。通过迁移学习,即便在标记数据很少的情况下仍然可以借助预训练语言模型得到不错的任务表现。然而,大部分研究还是聚焦于英语文本,低资源和中资源语言并没有得到充分应用。为解决这个问题,多语言模型应运而生。多语言模型是一个可以同时处理多种语言的单个模型。多语言模型可以克服必须为每个语言专门训练一个单独的单语模型的困难。
多语言预训练语言模型(MPLMs, Multilingual Pre-trained Language Models)是在基于大规模语料的预训练语言模型(PLMs, Pre-trained Language Models)的基础上,将训练集扩展为未标记的多语言语料库,并把所有语言投射到同一个语义空间中。多语言模型也采用跟相对应的一般的预训练语言模型相同的预训练任务和模型结构。与一般的预训练语言模型相比,多语言模型的词汇量会更大,比如基础BERT模型的词汇量为28,996,而基础的多语言BERT基础模型词汇量则为119,547。
多语言模型拥有跨语言迁移的能力。 一种常见的范式是针对某一任务,在英语训练集上对模型微调,然后直接应用在其他语言的任务集中,也就是所谓的“零样本”学习。“零样本”学习就是利用多语言模型跨语言迁移能力的一个例子。
二、常见的多语言模型
1. multilingual BERT
多语言BERT模型选取了维基百科规模最大的104个语言,并把这些语言对应的维基百科语料作为预训练集。和BERT模型一样,多语言BERT的预训练任务也是掩码语言建模(Masked Language Modeling, MLM)和下句预测(Next Sentence Prediction, NSP),是一个自监督学习的过程。
在选取维基百科作为预训练语料时,考虑到不同语言维基百科库的规模相差甚远,低资源语言可能会在神经网络模型中得不到充分表征,同时模型在训练过程中可能对那些维基百科规模特别小的语言出现过拟合现象。因此,在创建预训练数据集阶段,会通过指数平滑的方式对高资源语言进行低采样,对低资源语言进行高采样。具体来说就是改变原本采样时按照语言频率分布的概率分布,比如原本英语文本被采样的概率P(English)=0.21,那也就是说英语文本在所有语言的维基百科语料中占21%。通过设置一个系数S,比如S=0.7,让所有语言的概率与该系数S进行指数运算,再对所有语言的概率重新归一化。原本的概率分布中,英语被采样的概率是冰岛语的1000倍,而新的平滑后的语言概率分布可以使英语被采样的概率变为冰岛语的100倍。
与BERT模型一样,多语BERT模型的词汇单位使用的也不是完整的单词,而是词汇片段(WordPiece)。对于汉语、日语等不包含空格符的语言,会首先对中日韩统一字符编码中的字符添加空格再使用词汇片段。
2. XLM
XLM模型也是基于Transformer的语言模型,和BERT类似,XLM的预训练任务也包括掩码语言建模(MLM)。在此基础上,XLM模型还增加了翻译语言建模(Translation Language Modeling, TLM)作为第二个目标函数来增强模型学习不同语言之间相似表征的能力。XLM模型完成掩码语言建模的预训练任务时使用的是维基百科语料库作为预训练数据集,在完成翻译语言建模预训练任务时,根据不同语言选择不同的平行语料库。
基本的XLM模型包含XNLI数据集中的所涵盖的15种语言。XLM还有两个扩展模型,分别包含17种和100种语言。两个扩展模型只使用了掩码语言建模完成预训练,没有使用翻译语言建模。XLM模型均使用字节对编码(BytePair Encoding, BPE)的方法生成最小词汇单位,扩展模型的词汇量规模在20万左右。
3. XLM-R
XLM-R模型是RoBERTa模型的多语言版本。值得注意的是,XLM-R模型并没有像最原始的XLM模型一样使用翻译语言建模作为预训练的目标函数,它是完全按照RoBERTa模型的方式进行预训练的。该模型使用2.5TBCommonCrawl提供的过滤后的网络爬虫数据集完成预训练,训练集包含100种语言。RoBERTa模型包含50,000个词汇单位,和原始的RoBERTa模型相比,XLM-R的词汇量达到25万。
和BERT模型类似,RoBERTa模型也是采用无须标注的生文本通过自监督的方法完成预训练。预训练的目标函数同样为掩码语言模型。通过这种方式模型可以学习到训练集中100种语言的内部表征并用于下游任务。
4. M2M100
M2M100模型是一个多语翻译模型,使用的是解码器-编码器(序列到序列)的结构,用于多对多的多语翻译。该模型可以直接对100种语言两两之间翻译,共有100*99=9900种翻译方向。在使用M2M100模型翻译时,需要把目的语的id作为解码器生成的第一个词符(token)。
5. mBART-50
多语翻译模型mBART-50是多语版的BART模型,是一个多语的序列到序列的预训练模型,使用多语降噪预训练的方法完成预训练。mBART-50模型支持50种语言之间的相互翻译。mBART-50模型证明多语翻译模型可以通过多语微调的方法来实现,与通常在一个翻译方向上进行微调操作不同,预训练的mBART-50模型可以同时在多个方向上进行微调。
多语降噪预训练:模型首先把所有语言的单语语料库合并联接成一个数据集D={D1, ..., Dn}, Di是语言i的单语语料库。源语言文本用两种方法进行噪音标记。第一,随机打乱原始句子的顺序;第二,用一个掩码词符代替一段连续的文本,通过泊松分布的方式随机取样一段文本长度,使35%的单词被掩码取代。在多语降噪预训练任务中,模型的任务是把原始文本重新建构出来。
mBART-50模型也需要一个特殊的语言标记id词符来区分不同语言的输入或输出,因此在该模型中,一段文本X的表示形式为 [lang_code] X [eos],lang_code代表源语言或者目的语的id。
三、多语言模型展望
最近HuggingFace的BigScience研究坊正在训练一个高达1760亿参数规模、包含46种语言的多语言模型。该模型与GPT类似,是一个生成模型,只有解码器。该模型包含70层,每层有112个注意力头,隐藏层的维度高达14,334,序列长度达2,048,总词汇量为25万左右。
多语言模型展现出了强大的能力,但是大家依然期待多语言模型的跨语言迁移能力能够进一步改善和挖掘。如果多语言模型可以和中低资源语言的单语模型的表现分庭抗礼的话,那么人们就不需要做大量的工作和计算在单语模型上面了。那样的话,将会有一个可能的有趣的研究方向,那就是从高性能的多语言模型中抽取或者提炼更小但是更有效率的单语语言模型。
参考资料
【1】A deep dive into multilingual NLP models, A deep dive into multilingual NLP models - Peltarion
【2】Cross-lingual pretraining sets new state of the art for natural language understanding, https://ai.facebook.com/blog/cross-lingual-pretraining/
【3】XLM-R: State-of-the-art cross-lingual understanding through self-supervision, https://ai.facebook.com/blog/-xlm-r-state-of-the-art-cross-lingual-understanding-through-self-supervision/
【4】Multilingual models for inference, Multilingual models for inference
【5】Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
【6】Lample G, Conneau A. Cross-lingual language model pretraining[J]. arXiv preprint arXiv:1901.07291, 2019.
【7】Conneau A, Khandelwal K, Goyal N, et al. Unsupervised cross-lingual representation learning at scale[J]. arXiv preprint arXiv:1911.02116, 2019.
【8】Fan A, Bhosale S, Schwenk H, et al. Beyond english-centric multilingual machine translation[J]. Journal of Machine Learning Research, 2021, 22(107): 1-48.
【9】Tang Y, Tran C, Li X, et al. Multilingual translation with extensible multilingual pretraining and finetuning[J]. arXiv preprint arXiv:2008.00401, 2020.