文章翻译自《XLM-Enhancing BERT for Cross-Lingual Language Model》[1]
在自然语言处理领域,基于注意力机制的语言模型,尤其是BERT,在文本分类和机器翻译两个任务上一次又一次刷新成绩。Facebook AI最近发表的一篇论文《Cross-Lingual Language Model Pretraining》[2],提出了基于BERT优化的跨语言模型XLM,该模型拿得了以上两个任务的SOTA。
XLM模型,基于BERT,通过众所周知的BPE预处理方法以及双向语言训练机制,来学习不同语言的单词之间的关系。在跨语言分类任务里,模型的表现不失所望地超越了以往其他模型;此外,在机器翻译任务里,XLM模型通过将预训练模型用于初始化翻译模型,显著地提升了翻译效果。
背景
XLM模型有以下几个关键的概念:
Transformer,2017年由Google提出用于机器翻译,采用注意力机制来处理整段文本输入,同时学习不同单词或子单词之间的上下文关系。Transformer包括Encoder和Decoder两部分:Encoder负责将输入文本转化成特征表示(譬如词向量);Decoder则负责通过前面的特征表示生成翻译内容。Transformer的深入分析可以参考博文《The Illustrsated Transformer》[3].
不过,在处理文本时Transfomer只能够利用有限的上下文信息:单词的上文,直到2018年谷歌推出了BERT模型,这一情况才有所改进。BERT模型,采用Transformer 的Encoder部分,通过随机掩盖部分单词然后预测被掩盖单词的方式MLM学习语言模型,该学习过程能够利用完整的上下文信息,包括被掩盖单词的上文和下文。
在注意力模块里,因为要并发处理所有Token,模型需要获取更多关于Toekn位置的信息。通过一种叫Position Encoding的步骤,用sin函数处理每个Token的位置信息,模型网络能够更好地学习到Token之间的关系。更多关于BERT的总结可以参考博文《BERT-State of the Art Language Model for NLP》[4]。
2018年,Lample等发表论文《Phrase-based & Neural Unsupervised Machine Translation》[5],提出一种由Transformer和Phrase-based概率模型PBSMT构成的翻译模型。其中,后者是由不同语言的短语对构成的概率表。论文里有一个很重要的概念:Back-Translation,先将句子翻译成目标语言,再翻译成原来句子的语言。Back-Translation方式允许用一种更通用、能容易收集到更大数据规模的语言语料做单语言数据集,用作双语言数据集的语言可以是不怎么通用、数据规模较小的语言,来进行监督学习。Lample等在论文中指出,对于机器翻译模型,特别是应用了Back-Translation,Token-Embedding的初始化处理非常重要。虽然在论文里作者只是用FastText来做Word Embedding,他们还是提出建议:使用更强大的语言模型能够更好地提升效果。
原理
论文[1]提出了两个创新点:一种新的训练机制,用于BERT的多语言分类任务;用BERT预训练模型初始化机器翻译模型。
跨语言模型BERT用于分类。
虽然BERT模型对超过100种语言进行训练,但作为跨语言模型BERT不是最佳的,不同语言之间大多数词汇并不是共享的,因此共享的知识是有限的。为了解决这个问题,XLM模型通过以下几种方式改进BERT:
首先,替换原来用单词或字符作为模型输入的方式,XLM模型采用一种Byte-Pair Encoding(BPE)编码方式,将文本输入切分成所有语言最通用的子单词,从而提升不同语言之间共享的词汇量。这是一种通用的预处理算法,其总结可以参考博文《Multilingual Sentence Embeddings for Zero-Shot Transfer - Applying a Single Model on 93 Languages》[6]。
其次,基于BERT架构,并做了两点升级:
XLM模型的每个训练样本由两段内容一样但语言不通的文本组成,而BERT模型的训练样本都是单一语言。BERT的目标是预测被掩盖单词,而XLM模型不仅仅如此,基于新架构,能够利用一个语言的上下文去预测另一种语言的Token,此外,每一种语言都会被随机掩盖单词。
XLM模型还会分别输入语言ID以及每一种语言的Token位置信息。这些新的元数据能够帮助模型更好地学习不同语言相关联Token之间的关系信息。
在论文[2]里,以上这种升级的BERT模型又叫翻译语言模型TLM,而基于BPE预处理方式的BERT则叫掩码语言模型MLM。
完整的XLM模型是通过MLM和TLM两种策略进行训练和交互。
单语言模型MLM和双语言模型TLM
作者用包含15种语言的XNLI数据集来评估模型在句对Entailment关系识别任务的效果,结果表明XLM模型显著超越了以往表现不错的模型,包括Zero-Shot模型和BERT模型。评估实验基于所有配置:Zero-Shot,只有英语的训练集和所有语言的测试集;Translate-Train,机器翻译成所有语言的训练集;Translate-Test,机器翻译成英语的训练集和测试集。所有的实验结果都是SOTA。
采用不同训练和测试配置模型在XNLI的结果对比,每一列代表一种语言
用预训练的MLM模型初始化翻译模型。
论文同样评估和对比了翻译模型的不同初始化策略,BERT结合改进后的MLM策略是一个更好的选择。基于预训练的MLM获得每个Token的初始化Embedding,然后输入到翻译模型,取代FastText的Embedding方式。
从下表可以看出,基于Transformer的翻译模型采用这些Embedding方式初始化Encoder和Decoder的Token,翻译质量最高能够提升7个BLEU。
基于不同初始化机制的翻译效果,CLM指因果语言模型,每个单词基于上文并且没用用Masking技术
Note:论文[2]还指出,基于跨语言数据集训练出来的语言模型,同样适用于语料资源少的语言,因为BPE预处理机制,模型能够从其他语言,特别是相似的语言,学习到语料资源少的语言的数据特性。该结论跟论文《Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond》[7]提到的其中一点很相似。
实现
模型是用PyTorch实现,源代码在Github[8],包括预训练模型。训练过程,64 Volta GPU用于语言模型任务,8 GPU用于翻译任务,但论文[2]并没有详细说明训练持续多长时间。更加精确的实现细节参考论文[2]的5.1和5.2章节。
总结
跟最近很多研究成果一样,论文[2]给我们展示了语言模型和迁移学习的强大能力,特别是BERT,能够在很多NLP任务提升效果。基于简单的BERT预训练模型再微调,比其他跨语言分类模型表现更好,同时能显著提升翻译模型效果。
有意思的是,论文[2]里提到的翻译模型以及用于初始化的MLM模型,都是基于Transformer,可以保守地说,未来我们可以看到更多类似这种的组合,譬如最新用于初始化的Transformer-XL。
相关链接
_________________
[1]《XLM-Enhancing BERT for Cross-Lingual Language Model》https://www.lyrn.ai/2019/02/11/xlm-cross-lingual-language-model/
[2]《Cross-Lingual Language Model Pretraining》https://arxiv.org/abs/1901.07291
[3]《The Illustrsated Transformer》https://jalammar.github.io/illustrated-transformer/
[4]《BERT-State of the Art Language Model for NLP》https://www.lyrn.ai/2018/11/07/explained-bert-state-of-the-art-language-model-for-nlp/
[5]《Phrase-based & Neural Unsupervised Machine Translation》https://arxiv.org/abs/1804.07755
[6]《Multilingual Sentence Embeddings for Zero-Shot Transfer - Applying a Single Model on 93 Languages》https://www.lyrn.ai/2019/01/06/massively-multilingual-sentence-embeddings-for-zero-shot-transfer/#appendix-a-bpe
[7]《Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond》https://arxiv.org/abs/1812.10464
[8]Github: https://github.com/facebookresearch/XLM
扫描二维码,关注公众号IchbinDerek
【自然语言处理】