Machine Translation

Statistical Machine Translation

早期的机器翻译的方法是 SMT,S 代表 statistic 表示统计的意思,然后 14 年的时候,一切都变了。。。

Neural Machine Translation

NMT 降临了,吊打了 SMT,所以 SMT 我就不学啦,哈哈哈


Seq-to-Seq model

传统的深度神经网络的输入和输出都是固定的,但是在翻译这样的任务中,对于某个长度的句子,它的输出长度是不确定的。。

seq2seq 模型的出现解决了这个问题

  • 上图称为 sequence-to-sequence 模型,有两个 RNN
  • 待翻译的句子为输入 $x$,翻译的结果称为 $y$
  • 第一个 RNN 用来将 $x$ 做一个 encoding,类似于将输入生成一个特征
  • 生成这个特征的结果放到下一个 RNN 中做 Decodeing
  • Decoding 的过程相当于做一连串的单词预测

  • 这是 seq2seq 模型的训练过程
  • 要注意的是,seq2seq 模型最后的 loss 是根据 gt 和 gt 长度内的 predicts 来比较生成的

Beam search decoding

对于每一个单词后面一个单词的预测,最简单的方法就是上面的贪心法 (greedy decoding), 每一步直接输出概率最高的,但是其实这并不是一定我们期望的最优解,甚至离最优解的很远,一组输出的概率表示形式如下:

我们希望输出的值概率尽可能的大,要想获得最大值,最粗暴有效的方法就是遍历上面的所有取值,但是上面的所有取值的复杂度是 $O(V^T)$,于是我们可以做一个在 greedy 和 optimal 之间做一个折衷,这个方法就叫 Beam Search。


Beam search: On each step of decoder, keep track of the k most probable partial translations

举个 $k=2$ 的例子

每个单词我们生成它最大概率的 2 个,然后每次选取概率最大的两个分支继续进行生成

.