Edinburgh Neural Machine Translation Systems
爱丁堡大学从WMT2016到WMT2018的变迁
这几天在整理爱丁堡大学参加WMT16、WMT17、WMT18的相关文档,记录一下。
WMT2016
对于WMT2016,Edinburgh训练了4个语言对的NMT模型,分别是 English ← → \leftarrow\rightarrow ←→Czech、English ← → \leftarrow\rightarrow ←→German、English ← → \leftarrow\rightarrow ←→Romanian和English ← → \leftarrow\rightarrow ←→Russian。
NMT模型为attentional encode-decoder network,主要训练方法有BEP subward segment、automatic back-translation、pervasive dropout、和target-bidirectional model。
好想在这里帖一堆参考文献了事(^_^)(@_@)(#_#)
不过关于attentional encode-decoder network的确可以不做详细描述,一篇参考文献搞定
- BEP subward segment
很明显,孩子没娘说来话长,Sennrich等人在2016年提出的Subword Units已经算是BPE的最终版本了,而最早提出BPE算法的论文则可以追溯到1994年(那个时候我老妈的孩子还没开始打酱油呢! (^_^))。当然最开始的BPE只是一种数据压缩算法,而发展到subword segment则变成了机器翻译中解决未登陆词的一种行之有效的方法。具体来说就是将一句话看作是每个字符的组合(不再以词级别去观察句子),同时在每个单词的结尾给添加一个特定的符号表示单词的结束(通常情况下使用</w>),然后将频率最高的字符组合合并为一个整体,重复上述步骤直到 a set number of merge operations have been learned.
通过这种方式可以得到一个从char-level到word-level的字典,在机器翻译处理数据的时候则会根据这个字典来选择将一个完整的单词切分或者保留。
为了提高目标语言和源语言在分词上的一致性,Edinburgh将源语言和目标语言合并在一起来训练BPE模型(a set number of merge operations),个人认为这里目标语言和源语言能够存在分词上的一致性大概是因为这四种语言都属于印欧语系把(^…^) - automatic back-translation
Back Translation作为机器翻译最主要的数据增强方式应该是得到大家认同的,不过知乎上有个观点很有意思。 - pervasive dropout
我猜我什么都不用说
- target-bidirectional model
说起这个方法Edinburgh的研究员们似乎非常的伤心(In parallel to our experiments, this idea was published by Liu et al. (2016).),论占坑有多么重要!!!那么target-bidirectional model究竟是怎么回事哩,索性这次可以不用从我出生前谈起了。
Liu等人在Agreement on Target-bidirectional Neural Machine Translation认为当前(2016年)基于RNN的Seq2Seq机器翻译模型存在一个问题,即generating unbalanced outputs,译文句子后缀的质量低于前缀的质量。为了解决这一问题,Liu等人提出了一种agreement(joint) model,包括一个left-to-right model和一个right-to-left model(注意这里的left、right都指的target的顺序)。
l = ∑ < x , y > l o g   p ( y ∣ x ; θ 1 ) + l o g   p ( y τ ∣ x ; θ 2 ) l=\sum_{<x,y>}log\,p(\mathbf{y}|\mathbf{x};\theta_1) + log\,p(\mathbf{y}^\tau|\mathbf{x};\theta_2) l=<x,y>∑logp(y∣x;θ1)+logp(yτ∣x;θ2)
其中 y τ = < y n , y n − 1 ⋅ ⋅ ⋅ , y 1 > \mathbf{y}^\tau=\lt y_n,y_{n-1} \cdot \cdot \cdot ,y_1\gt yτ=<yn,yn−1⋅⋅⋅,y1>是序列 y \mathbf{y} y的倒序。
于是在机器翻译中首先使用beam search单独的在顺序和逆序模型中选出最好的 2 k 2k 2k个结果(每个模型 k k k个)然后再利用joint model给出最优的结果。
WMT2017
WMT2017是WMT16的升级版(We follow our setup from last year and build BPE-based models with parallel and backtranslated monolingual training data.)主要做了三个方面的改进:深层的网络结构、层归一化处理、通过改进BPE来精简模型。
- bpe模型的改进
Edinburgh在训练bpe模型拒绝了 rare subword units(在训练语料中频率低于50的子串),这样做的效果是可以极大的减少词表的规模(当然是以增加句子长度为代价的)。在他们的实验中使用了9000个 joint BPE operation将英文词汇表的规模从80581降到了51092,而句子长度仅增长了0.2%。如前文所说BPE模型是将源语言和目标语言混合在一起训练的,然而在中英语言上对则不适合使用这种方式(我傲娇的大中文岂能与尔等印欧语系为伍),只能训练两个separate BPE models。 - 层归一化处理
相较于WMT0216,他们在所有的 recurrent 和 feed-forward层都使用了归一化处理,在优化算法方面他们选择了adam取代了去年使用的adadelta。这样的改变使得他们的模型收敛速度更快(In preliminary experiments, we found that both adam and layer normalisation lead to faster convergence, and result in better performance.)。 - 深层的网络结构
关于这一部分Edinburgh使用了Miceli Barone等人于2017年在文章Deep Architectures for Neural Machine Translation提出的Deep Transition Architectures。关于模型细节就再提及,请大家直接参考论文。
WMT2018
Transformer已经在冷板凳上坐了很久,对于愚蠢的博主至今未提及它的名字表现的愤愤不平。
终于,Edinburgh在2018年添加了新的architecture(除了2017所使用的Deep Transition Architectures他们也使用了Transformer)。而其它方面的改进主要是Data selection,此外在TR
←
→
\leftarrow\rightarrow
←→EEn语言对上使用了重复的Back-translation,在RU
←
→
\leftarrow\rightarrow
←→EN使用了一个"in-domain"数据集进行了Fine-tuning.
Data selection
这一步的主要工作是为了数据去燥(All parallel data contains a certain amount of noise, and the problem was exacerbated this year since the organisers provided a ParaCrawl corpus1 for most language pairs2 as additional training data)主要过程及方法包含下面几项。主要的去燥对象是ParaCrawl这个语料库。
[外链图片转存失败(img-GvLeQALi-1562122811682)(http://wx3.sinaimg.cn/large/e16fc503gy1fh82je92kjg205k040nd8.gif#pic_center)]
1.1 Language Identifier Filtering
使用langid去识别每一个语言对,删除那些源语言或者目标语言与识别出的语言不符的。
1.2 Data Selection with Translation Perplexity
这个方法主要针对ET
←
→
\leftarrow\rightarrow
←→EN语言对和FI
←
→
\leftarrow\rightarrow
←→EN语言对。主要步骤如下:
首先使用其他语料库训练该语言对的RNN模型;
其次根据这些模型对ParaCrawl语料库中的每句话进行打分(打分完毕后要根据句子长度进行标准化);
然后根据上一步给出的分数对句子进行重排,按照10分位数进行grid search(这里在训练模型时需要添加其它的平行语料库);
根据Edinburgh的实验,他们在ET
←
→
\leftarrow\rightarrow
←→EN语言对中取了0.3,在FI
←
→
\leftarrow\rightarrow
←→EN语言对中取了1.0
1.3Aligment-based Filtering
这一条规则主要应用的语言对是DE
→
\rightarrow
→EN主要的思路还是对语料库中每个句子进行某种维度的打分,然后根据这个分数去筛选句子。
首先利用fastalign来做平行语料库的字对齐,然后计算前向和后向对齐概率的均值作为衡量语言对质量的指标。根据这一指标对语料库进行降序排序,然后在这个排好序的语料库中训练模型。接下来便是最关键的“确定临界值”,Edinburgh所采用的方式是在训练模型的过程中去寻找验证集上的表现开始deteriorate的点,然后将这个点所对应的的评分作为筛选语料库的临界值(We used the translation plausibility score at this point as the threshold for selecting data for training the final systems.)