前言
论文地址:https://aclanthology.org/D19-1071.pdf
代码地址:https://github.com/Imagist-Shuo/CMLM(空)
前人工作&存在问题
初始化对UNMT很重要,最近的预训练模型基于共享的BPE,以一种不显式、局限的方式学习跨语言信息,具体表现在:
- 以BPE为单位的预训练完成了BPE级别的对齐,n-gram可能不对齐
- 不同语种的BPE共享情况不同
本文贡献
使用外部的n-gram对齐工具创建n-gram对齐table;使用mask n-gram并预测对应翻译的预训练方法显式加强跨语言信息;使用IBM模型解决预测对应翻译长度不对等的损失函数问题。
具体方法
第一步:n-gram对齐表的构建
首先使用fastText分别获取语种X和语种Y的n-gram及其embedding;
然后用vecmap做n-gram的对齐,利用图1中的度量,为语种X中的最常见n-gram,找到top-k个候选翻译,完成对齐表的构建。
隐含的第二步:
对X+Y学习共享的BPE,也用vecmap对BPE做对齐(?)
第二步:Cross-lingual Masked Language Model(CMLM)
文中说“in CMLM, we sample 15% BPE n-grams”,这和我的理解产生的冲突。我认为是随机挑选存在于词表中的source n-gram,直到覆盖了15%的BPE。再对70%的BPE做mask。
对于每一个masked source n-gram
x
1
l
x_1^l
x1l,和它对应的target n-gram
y
1
m
y_1^m
y1m,单步的损失函数如下:
其中:
- 不知道叫什么的符号:表示给定 x 1 l x_1^l x1l,对应翻译长度为m的概率,可能是统计出来的
- α使用归一化的token x i x_i xi和token y j y_j yj相似度代替(应该是对x做归一化)
- p是模型的softmax输出
总的损失函数如下:
第三步:
DAE + BT
第四步:
以上收敛之后,再开启一轮,使用bt产生伪并行句子,用GIZA++来抽取对齐的n-gram,更新n-gram对齐表,再次训练
具体实验
和baseline的比较
decoder的初始化策略
考虑
- 把预训练好的LM做decoder的初始化,将其作为一个feature extractor,在上面多加了几层transformer(随机初始化)
- 固定pretrained LM,finetune新加的
结论:
- 2、3行:随机初始化的参数不容易训练UNMT
- 4、5行:pretrained LM虽然包含了大量的跨语言信息,但作为decoder的初始化不合适
单词对齐任务
消融实验
考虑
- 删去MLM
- 不预测n-gram的对应翻译,而是预测n-gram本身
- 不mask n-gram,而是mask BPE tokens(回退到MLM,也就是XLM模型)
结论:
- MLM让模型学习单语的上下文建模
- CMLM加强了跨语言信息的建模
- 是否有两个对齐步骤:1. n-gram的对齐 2. BPE token的对齐