机器翻译(MT):将一段文本从一种语言自动翻译为另一种语言,用神经网络解决这个问题通常称为神经机器翻译(NMT)。 主要特征:输出是单词序列而不是单个单词。 输出序列的长度可能与源序列的长度不同。

Encoder-Decoder

机器翻译的模型_机器翻译


为了解决输入和输出序列长度不等的问题,机器翻译使用了Encoder-Decoder结构,Encoder将输入序列转化成语义编码,Encoder再将语义编码转化成输出序列。

Sequence to Sequence 模型

Sequence to Sequence 是一种序列转换模型,广泛地应用于机器翻译、语音识别等领域中,一般采用Encoder-Decoder结构。

在机器翻译的训练阶段,Encoder的输入是原始序列,hidden state即语义编码。Decoder是一个生成式语言模型,初始化是Encoder的hidden state。机器翻译的模型_最优化_02是开始符,作为第一个输入,结合hidden state,预测第一个单词。接下来的输入是目标序列,结合前一个神经元的hidden state,预测下一个单词,直到机器翻译的模型_机器翻译_03(结束符)。然后和目标序列作比较,计算损失函数。

机器翻译的模型_bc_04


在机器翻译的预测阶段,Encoder部分与训练阶段相同。由于不知道目标序列,Decoder把上一个预测的单词作为下一个神经元的输入,直到结束。

机器翻译的模型_bc_05

具体结构

机器翻译的模型_机器翻译的模型_06


Encoder和Decoder都可以由n层的RNN构成,RNN的输入是序列单词的词向量。dense层(全连接层)将隐藏单元映射到单词表中,选择得分最高的单词作为输出。

beam search

在Seq2Seq预测过程中,需要通过上一个预测的单词,来预测下一个词,然后再将得到的单词作为输入,预测下一个单词。这种方法效率很高,但有个问题就是它只考虑了局部最优化,没有考虑到全局最优化。如果在预测序列中有一个单词预测的不准确,那么它会影响后面所有单词的预测。
Seq2Seq在预测下一个单词过程中会得到所有单词出现的概率,一般取概率最高的单词作为输出。Beam Search如果把Beam设置为n,算法每次搜索到概率最大的n个单词,而不是一个单词。
假如词表大小为5,里面有abcde五个单词,Beam大小为2,预测到的第一个单词是c和e,单词是c时下个输出可能是ca,cb,cc,cd,ce,单词是e时,下个输出是ea,eb,ec,ed,ee,我们在这10个可能中挑到概率最大的两个组合ce和eb,依次再以e和b为输入获得10个组合可能,找到概率最大的两个组合,这就是Beam Search的基本原理。