46

XLM: 跨语言的Bert

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650416343&%3Bidx=3&%3Bsn=901287bb7aa4393546be0c52c512d646
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Znui6v.jpg!mobile

最近要开始使用Transformer去做一些事情了,特地把与此相关的知识点记录下来,构建相关的、完整的知识结构体系,

以下是要写的文章,本文是这个系列的第十四篇:

动机

Bert在预训练语言模型上被广泛应用,但是现在主要的研究都集中在英文上,在跨语言的场景下,Bert的训练能不能带来提升呢?答案几乎是肯定的,就看怎么做了。

论文[1]提出了两种方法来训练跨语言的语言模型:

  • 无监督学习,仅依赖于单语言数据。

  • 有监督学习,依赖于双语平行语料。

共享sub-word词表

不管是有监督还是无监督的方法,都需要让多语言共享一个词表,如果是词语直接混合的话,那么随着语言数目的增多,词表的增长会很大。不过好在Bert模型的词表本身就是sub-word的,通过Byte Pair Encoding(BPE)方法进行学习可以得到一个较为合适且合理的词表。

BPE需要迭代多次获得最后的词表结果。所以会有两个缺点:

  • 如果语料过大,会导致BPE的运行较为耗时。

  • 稀有语言往往语料较少,可能导致BPE最后的结果中无法有足够的该语言的sub-word。

因此,采用了一种采样的方式来生成一个子数据集,然后在这个子数据集上去运行BPE算法。采样的概率公式如下,p是每种语言在总语料中的概率,q则是采样概率,从公式中可以看出,q是p经过指数归一化之后的结果,一般情况下,会将alpha设为0.5。

IFnYR3I.png!mobile

alpha越低,越倾向于出现频次较低的语言。

训练语言模型的目标

论文中使用的训练语言模型的目标有三种:

  • CLM, Casual Language Modeling。自回归式的,即GPT式的学习方式,使用Transformer的Decoder部分。

  • MLM, Masked Language Modeling。Bert式的学习方式,把其中15%的token遮挡住,作为预测目标。区别就是Bert中因为有Next Sentence Prediction,所以是两个句子拼起来。而在论文[1]中使用的则是连续的一整个句子,按照长度256截断。

  • TLM, Translated Language Modeling。和MLM类似,只不过输入是两个语言的句子拼接起来。另外,position embedding要重置,即目标语言和源语言的位置embedding应该都是从头开始。

MLM和TLM的输入输出如下图:

quQjAvU.png!mobile

在训练的时候,依然会使用类似于学习词表时的采样方法,只不过alpha设为0.7。

模型预训练

首先,模型在一个预先处理好的Wiki数据上进行了预训练,使用的设置包括:

  • MLM, 在单语言训练数据

  • MLM + TLM,除了单语言训练数据外,还有平行语料来训练TLM。

实验效果

XNLI分类实验

在XNLI数据集上进行了实验,XNLI是十五个语言的文本分类数据集。预训练好的模型在XNLI的英文语料上进行fine-tune,然后在15个语言上进行评测。为了和之前的论文可以比较,还做了两个baseline:

  • TRANSLATE-TRAIN: 将XNLI中的英文语料翻译到XNLI上某个的语言,然后在翻译后的语料上进行微调和测试。

  • TRANSLATE-TEST: 仍然将模型在英文上进行问题,然后将XNLI的某个语言翻译到英文,然后再测试。

ymeYne.png!mobile

可以看到,MLM + TLM的方式会比MLM要好很多,另外,在翻译后的语言上进行微调还可以达到更好的效果。

无监督机器翻译

用预训练好的模型来初始化翻译模型,可以达到更好的效果。EMB是只用预训练好的embedding来初始化翻译模型的embedding。另外,翻译模型的Encoder-Decoder都可以使用XLM来初始化,这样就有了九种组合设计,即Encoder和Decoder可以分别使用随机初始化,CLM预训练、MLM预训练三种方式初始化。

yeiqUn.png!mobile

有监督机器翻译

类似于无监督的实验,Encoder和Decoder都使用MLM预训练的模型来做初始化。

aaEzY3E.png!mobile

Low-Resource语言模型

XLM还有助于语料较少的语言上的语言模型构建,如下图所示,用Nepali + English + Hindi的语料训练得到的语言模型比Nepali自己得到的要好很多。

32meyef.png!mobile

总结与思考

从上面的实验可知,XLM可以在三个方面带来提升:

  • 跨语言文本分类问题上所使用的sentence-encoder的更好的初始化方法。

  • 机器翻译问题的更好的初始化方法

  • 低资源语言上构建语言模型的更好的方法。

另外,从实验上看,对于机器翻译问题,模型的初始化是非常重要的一个方面。

参考

  • [1]. Lample, Guillaume, and Alexis Conneau. "Cross-lingual language model pretraining." arXiv preprint arXiv:1901.07291 (2019).

欢迎加入预训练模型交流群

进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注 预训练模型 yi6vEbV.jpg!mobile

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。

yamaeu.jpg!mobile

阅读至此了,分享、点赞、在看三选一吧:pray:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK