XLM解读(论文 + PyTorch源码)

这篇论文是Facebook在BERT的基础上发展出来的Cross-Lingual版本,即多语的。BERT的github上实际上也有一个多语版本的,但却没有提到是怎么训练的,也没有任何的信息。这里的XLM提出了一些策略用于多语言学习,并与multi-lingual的BERT进行了对比,效果确实会好。

一. 前言

一开始BERT出来的时候,只有英语的,这对于各个国家的广大AI爱好者,是十分不便的,大家都希望能有自己国家语言的版本。这不,后面BERT又出了多语言版本,FB也紧跟着出了一个更好的多语言版本(不过貌似语言比较少?主要还是针对翻译和XNLI任务而定制的,不像BERT的那个那么多语言,而且很通用)

这里复述一下作者在第一章总结的他们的贡献:

  1. 引入了一个新的无监督方法,用于训练多语的表征,并且提出两个单语的预训练LM目标
  2. 提出了一种新的有监督方法,使用平行语料,来增强多语预训练的表现
  3. 在跨语言分类、有/无监督机器翻译任务上,达到了新的SoTA
  4. 对于resource比较少的语言,用这种预训练方式很有帮助
  5. 重点来了!有源码和预训练模型

下面来看看XLM具体是怎么操作的~

PS:不知道有没有读者和笔者一样,一看到这种多语的啊,pair的啊,parallel的啊这类的词眼,就觉得整个逻辑非常的晕,这篇论文,尤其是实验部分,真的是结合源码看了好久,大概率是笔者太菜了吧。。。

二. XLM原理

1. 多语词表构建

既然是多语的模型嘛,总不可能是一个语言一个model,然后封装在一起,假装是多语模型吧,肯定是只有一个模型的,那么就要求这个模型能接收各个语言的句子作为输入,因此这里就需要构建包含各个语言词的多语词表。

与BERT一样,这里也是使用BPE,但不是简单地把各个语言的bpe词表进行拼接,那样也太大了,,这里是先对多语语料按照如下的概率进行采样,然后将多语语料进行拼接,最后进行正常的BPE统计。采样的目的是对大语种的语料和小语种的语料进行一下平滑,省的全采到大语种上面了,小语种连词表都没有了(或者小语种都被按照char拆分了)。。这里取 α = 0.5 \alpha=0.5 α=0.5

q i = p i α ∑ j = 1 N p j α   w i t h   p i = n i ∑ k = 1 N n k q_i = \frac{p_i^ \alpha}{\sum_{j=1}^N p_j^ \alpha}\ with\ p_i = \frac{n_i}{\sum_{k=1}^N n_k} qi=j=1Npjαpiα with pi=k=1<

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值