《动手学深度学习Pytorch版》Task4-机器翻译及相关技术;注意力机制与Seq2seq模型;Transformer

机器翻译及相关技术

Task2中的循环神经网络部分,有实现预测歌词的功能。在那个任务中,训练数据的输入输出长度是固定的,而在机器翻译中,输出的长度是不固定的,所以不能直接用RNN来处理这种任务。

Encoder-Decoder框架是常用于机器翻译,对话系统这类场景的框架。
《动手学深度学习Pytorch版》Task4-机器翻译及相关技术;注意力机制与Seq2seq模型;Transformer

《动手学深度学习Pytorch版》Task4-机器翻译及相关技术;注意力机制与Seq2seq模型;Transformer
需要注意的是,在训练过程中Decoder的输入是真实的label,而预测时,输入是上一个ceil的预测值

机器翻译解码 通常用beam search。beam search是一种贪心算法,不是全局最优解。

注意力机制

在“编码器—解码器(seq2seq)”⼀节⾥,解码器在各个时间步依赖相同的背景变量(context vector)来获取输⼊序列信息。当编码器为循环神经⽹络时,背景变量来⾃它最终时间步的隐藏状态。将源序列输入信息以循环单位状态编码,然后将其传递给解码器以生成目标序列。然而这种结构存在着问题,尤其是RNN机制实际中存在长程梯度消失的问题,对于较长的句子,我们很难寄希望于将输入的序列转化为定长的向量而保存所有的有效信息,所以随着所需翻译句子的长度的增加,这种结构的效果会显著下降。

Transformer

《动手学深度学习Pytorch版》Task4-机器翻译及相关技术;注意力机制与Seq2seq模型;Transformer
图中展示了Transformer模型的架构,seq2seq模型相似,Transformer同样基于编码器-解码器架构,其区别主要在于以下三点:

Transformer blocks:将seq2seq模型重的循环网络替换为了Transformer Blocks,该模块包含一个多头注意力层(Multi-head Attention Layers)以及两个position-wise feed-forward networks(FFN)。对于解码器来说,另一个多头注意力层被用于接受编码器的隐藏状态。
Add and norm:多头注意力层和前馈网络的输出被送到两个“add and norm”层进行处理,该层包含残差结构以及层归一化。
Position encoding:由于自注意力层并没有区分元素的顺序,所以一个位置编码层被用于向序列元素里添加位置信息。