前言
论文链接:https://arxiv.org/abs/1901.07291
代码链接:https://github.com/facebookresearch/XLM
前人工作与存在问题
预训练语言模型(transformer encoder)对下游任务有帮助:
- 分类任务:
- 机翻任务:
多语言向量表示的对齐工作:
- 单词:
- 有监督:
- Exploiting Similarities among Languages for Machine Translation 利用了双语词典
- Improving Vector Space Word Representations Using Multilingual Correlation 多语言表示能够用来改善单语表示
- Normalized Word Embedding and Orthogonal Transform for Bilingual Word Translation 利用正交变换来对齐
- Massively Multilingual Word Embeddings 这些技术可以被用于任意数量的语言
- 无监督:
- WORD TRANSLATION WITHOUT PARALLEL DATA 对抗训练
- Unsupervised Cross-lingual Word Embedding by Multilingual Neural Language Models 使用不同语种的句子来训练同一个LSTM,做词向量的对齐和word translation任务
- 有监督:
- 句子
- 有监督:
- 分类:
- Multilingual Models for Compositional Distributed Semantics
- Xnli: Evaluating cross-lingual sentence representations
- Zero-Shot Cross-lingual Classification Using Multilingual Neural Machine Translation
- Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond 表明训练得到的encoder能够产生跨语言的句子嵌入,利用200百万的并行语料,在XNLI上取得了更好的效果。它们在固定的句子表示上层训练了一个分类器。
- 机翻:
- Google’s Multilingual Neural Machine Translation System: Enabling Zero-Shot Translation 使用共享的LSTM encoder和decoder,完成zero-shot translation(并不是无监督?)
- 分类:
- 无监督:
- 有监督:
本文贡献
本文属于无监督句子向量对齐工作,提出了两种无监督跨语言预训练方法,和一种有监督的方法。在分类、机翻任务上表现好,在低资源的语言上得到的困惑度(perplexity)也好。
具体方法
首先对于n种单语语料,通过图1的概率采样,来学习共有的BPE词表。
然后提出了两种无监督的预训练方式:1. CLM 2. MLM。
- 共有:
- 它们的输入不是单个句子,而是文本流(text stream);
- 1个batch有64个文本流,都来自于同一种语种,长度为256个token;
- 1个batch中句子的采样使用BPE中的采样方法,α=0.7;
- 特有:
- CLM的公式如图2所示,特别的,在单语的情况下,上一个batch最后的隐藏层输出可以作为下一个batch第一个隐藏层的初始化,但在多语种共同训练的情况下不适用;
- MLM和bert的不同:1. 文本流;2. 对于token的采样仿照Distributed Representations of Words and Phrases and their Compositionality使用了多项式分布,其权重和逆词频的平方根成正比;MLM和bert的相同:从文本流中采样15%的token,80%的进行mask,10%不变,10%替换成任意token;
最后提出了一种有监督的进一步对齐的方式,从而能够利用好平行语料(TLM,如图3所示)。具体来说,把平行的句子进行拼接,同时掩膜source和target端的部分,这使得:例如,在预测source端时,source端剩下的token并不足以使模型预测出mask,此时模型可以利用target端的信息。pair的采样也是使用BPE中的方法。
具体实验
跨语言分类:
- 做法:
- 使用MLM在大规模单语语料上预训练,取[CLS]作为句子向量表示,再在ENGLISH XNLI数据集上训练分类器。(XLM(MLM))
- 使用MLM在大规模单语语料上预训练、同时交替地在平行语料上训练TLM,取[CLS]作为句子向量表示,再在ENGLISH XNLI数据集上训练分类器。(XLM(MLM+TLM))
- 进一步使用 English MultiNLI -> XNLI训练encoder/decoder(TRANSLATION-TRAIN)
- 进一步使用 XNLI -> English MultiNLI训练encoder/decoder(TRANSLATION-TEST)
- 结论:
- MLM和TLM都好
- 在swahili和urdu这些低资源语料上好
- 把English MultiNLI翻译成XNLI能进一步促进对齐
- 疑问:
- 为什么没有CLM的实验?
图4. 跨语言分类
- 为什么没有CLM的实验?
无监督机器翻译:
- 做法:
- 采用combined BPE预训练embeddings,然后通过denoising auto-encoding(DAE)和online back-translation loss进行训练。(EMB+EMB)
- 其他分别使用CLM和MLM对encoder和decoder初始化的组合。
- 结论:
- MLM\CLM > EMB
- MLM>CLM
- encoder>decoder
- 疑问:
- online back-translation loss所使用的平行语料来自哪里?1. BPE训练完以后,进行BPE BY BPE TRANSLATION? 2. 还是使用word by word translation?
- online back-translation loss所使用的平行语料来自哪里?1. BPE训练完以后,进行BPE BY BPE TRANSLATION? 2. 还是使用word by word translation?
有监督机器翻译:
- 做法
- 单向翻译(Romanian2english)
- 双向翻译(↔)
- 双向翻译+back translation(↔+BT)
- 结论:
- MLM>CLM
- back translation进一步促进结果
- 疑问:
- ro->en中的CLM和MLM预训练是需要多语,还是encoder只需要用ro,decoder只需要用en?
- 双向翻译具体是如何训练?其BELU值是如何计算?
- BT中使用的source句子就是pretrain的单语句子,具体的训练方式?
低资源语言模型:
- 做法:
- 仅在Nepali训练集上训练,然后在训练集上计算perplexity(Nepali)
- 加上不相似的english训练集(Nepali+English)
- 加上相似的Hindi训练集(Nepali+Hindi)
- 结论:
- 相似的语料具有共有的符号和…,更好
无监督跨语言词嵌入:
- 做法:使用对抗训练一文中产生的word translation dictionary来评估以下三种方法的对pair的 1. cosine sim 2. L2 dist ; 以及和SemEval 17单词相似任务的皮尔逊系数。
- 对抗训练(MUSE)
- combined BPE(Concat)
- 本文(XLM)
- 结论:
- XLM牛
- XLM牛
其它资源(数据集\工具包)
CLM和MLM预训练所使用的单语语料:WikiExtractor
TLM所使用的平行语料:
- MultiUN:French,Spanish,Russian,Arabic,Chinese
- IIT Bombay corpus:Hindi
- OPUS website:
- EUbookshop:German,Greek,Bulgarian
- OpenSubtitles 2018:Turkish,Vietnamese,Thai
- Tanzil:Urdu,Swahili
- GlobalVoice:Swahili
分词器:
- Chinese tokenizer
- Japanese tokenizer
- Thai tokenizer
- other tokenizer(Moses)
BPE训练:fastBPE
生词&生句
- a surge of interest:兴趣的激增
- concurrent to our work:与我们的工作同时进行