对于翻译系统,如语言A翻译到语言B,通常需要大量的语言对来训练神经机器翻译,而数据量的增大会大大的增加成本。本文通过构建两个神经翻译网络,θAB和θBA,这两个网络分别用于将语言A翻译到语言B和语言B翻译到语言A。文章先采用少量的语言对训练好这两个模型。之后,采用无监督学习,训练这两个模型,具体为将语言A输入网络θAB,同时将θAB的输出输入到网络θBA中,再采用强化学习的思想,对网络θAB和网络的θBA输出进行奖惩,构建损失函数。
算法具体流程如下:
1.语言模型
分别训练好语言模型 LMA , LMB ,语言模型用于判别一个句子的自然度,相当语seq2seq的decoder阶段,模型结构为rnn,模型输入为一个句子,模型输出为decoder的句子,要使输入和输出句子相等,模型结构为:
我们分别使用语言A、B训练语言模型 LMA , LMB ,得到语言模型后,便可以对该语言模型进行输入一个句子,并预测这个句子的概率,把这个概率作为该语句的自然度。
2.翻译系统
得到训练好的语言模型后,初始化语言模型 LMA , LMB 和翻译模型 θAB , θBA ,将语s输入翻译模型 θAB ,采用beam search生成k个中间语句,将这k个语句输入语言模型 LMB ,从而得到这k个语句的自然度 r1,k ,从而得到奖励 r1,k 。同时将这k个语句输入翻译模型 θBA ,计算这k个语句预测输入语句s的概率,即交流得分 r2,k ,最后我们得到总的得分: rk=α∗r1,k+(1−α)∗r2,k 。
梯度计算:
计算翻译模型 θAB 的梯度为:
计算翻译模型 θBA 的梯度为:
模型更新为: