最近要开始使用Transformer去做一些事情了,特地把与此相关的知识点记录下来,构建相关的、完整的知识结构体系, 动机Bert在预训练语言模型上被广泛应用,但是现在主要的研究都集中在英文上,在跨语言的场景下,Bert的训练能不能带来提升呢?答案几乎是肯定的,就看怎么做了。 论文[1]提出了两种方法来训练跨语言的语言模型:
共享sub-word词表不管是有监督还是无监督的方法,都需要让多语言共享一个词表,如果是词语直接混合的话,那么随着语言数目的增多,词表的增长会很大。不过好在Bert模型的词表本身就是sub-word的,通过Byte Pair Encoding(BPE)方法进行学习可以得到一个较为合适且合理的词表。 BPE需要迭代多次获得最后的词表结果。所以会有两个缺点:
因此,采用了一种采样的方式来生成一个子数据集,然后在这个子数据集上去运行BPE算法。采样的概率公式如下,p是每种语言在总语料中的概率,q则是采样概率,从公式中可以看出,q是p经过指数归一化之后的结果,一般情况下,会将alpha设为0.5。 alpha越低,越倾向于出现频次较低的语言。 训练语言模型的目标论文中使用的训练语言模型的目标有三种:
MLM和TLM的输入输出如下图: 在训练的时候,依然会使用类似于学习词表时的采样方法,只不过alpha设为0.7。 模型预训练首先,模型在一个预先处理好的Wiki数据上进行了预训练,使用的设置包括:
实验效果XNLI分类实验在XNLI数据集上进行了实验,XNLI是十五个语言的文本分类数据集。预训练好的模型在XNLI的英文语料上进行fine-tune,然后在15个语言上进行评测。为了和之前的论文可以比较,还做了两个baseline:
可以看到,MLM + TLM的方式会比MLM要好很多,另外,在翻译后的语言上进行微调还可以达到更好的效果。 无监督机器翻译用预训练好的模型来初始化翻译模型,可以达到更好的效果。EMB是只用预训练好的embedding来初始化翻译模型的embedding。另外,翻译模型的Encoder-Decoder都可以使用XLM来初始化,这样就有了九种组合设计,即Encoder和Decoder可以分别使用随机初始化,CLM预训练、MLM预训练三种方式初始化。 有监督机器翻译类似于无监督的实验,Encoder和Decoder都使用MLM预训练的模型来做初始化。 Low-Resource语言模型XLM还有助于语料较少的语言上的语言模型构建,如下图所示,用Nepali + English + Hindi的语料训练得到的语言模型比Nepali自己得到的要好很多。 总结与思考从上面的实验可知,XLM可以在三个方面带来提升:
另外,从实验上看,对于机器翻译问题,模型的初始化是非常重要的一个方面。 参考
|
|