在神经机器翻译(Neural Machine Translation, NMT)中,由于机器不具有人类的智慧,因此常常会犯一些低级的错误。例如,在中-英翻译中,原中文句子含有 10 个词,而机器却有时翻译出一个含有 50 个词的句子或者是只含有 2 个词的句子。 不管内容如何,在人类看来这样的翻译很显然是不对的。那么如何能让机器拥有人类的智慧,从而避免这种低级的错误呢?近日,我们有幸采访到了清华大学的张嘉成,介绍他发表在 ACL2017 上的工作 - Prior Knowledge Integration for Neural Machine Translation using Posterior Regularization。
我们常常将“人类的智慧”称为“先验知识(prior knowledge)”。如何将“先验知识”融合到机器学习模型中?该工作沿用了 Kuzman Ganchev 等人在 2010 年提出的“后验正则化(Posterior Regularization, PR)”方法。该方法可以表示为公式 (1),(2)。其中公式 (2) 代表先验知识的约束;公式 (1) 表示为使得模型求出的后验分布 P(y|x) 和先验分布 q(y) 尽可能地接近,将两者的 KL 距离作为模型目标函数的正则项。但是这个方法难以直接应用到 NMT 领域,原因有两点:1)对于不同的先验知识,很难给出一个固定的 b 作为边界值;2)训练目标是一个 max-min 问题,需要通过 EM 算法求解,难以通过基于导数的优化方法训练。
因此在张嘉成等人的工作中,他们将公式 (2) 中的约束集合替换为对数线性模型表示的先验分布,如公式 (3),(4) 所示。公式 (4) 中的 ϕ(x,y) 代表“特征函数”,对于不同句对 (x, y),先求出其特征值并乘以权重参数 γ,再经过 softmax 得到先验分布 Q(y|x),该分布即为原方法中的 q(y)。经过这种改进,使得模型可以直接利用基于导数的优化方法训练,而不需使用 EM 算法进行求解。同时,特征函数 ϕ(x,y) 可以有不同的定义,因此增大了模型的通用性和可扩展性。
为引入不同的先验知识,文章中采用了 4 类特征:
1. 双语词典特征:人的先验知识中包含词和词的对应关系,例如,爱-love。因此,对于双语词典 D 中的任意一个词对 <x, y>,该特征值定义为公式 (5)。含义为,如果该词对出现在翻译句对中,则记 1。也就是对于一个翻译句对,该特征表示“原句和翻译句中出现的词对的数量”。目的是鼓励按照词典进行翻译。
2. 短语表特征:同样,人还知道词组和词组的对应关系,例如:纽约- New York。因此这个特征的定义和双语词典特征类似,如公式(6)所示。对于外部短语表中的任意短语对<x ̃, y ̃>, 如果出现在翻译句对中,则记1。也就是对于一个翻译句对,该特征表示“原句和翻译句中出现的短语对的数量”。目的是鼓励按照短语表进行翻译。