Neural Machine Translation by Jointly Learning to Align and Translate 学习笔记

Neural Machine Translation by Jointly Learning to Align and Translate 学习笔记

本文就Neural Machine Translation by Jointly Learning to Align and Translate 一文进行学习总结,有何不妥的地方,烦请各位指正。

  • Neural Machine Translation by Jointly Learning to Align and Translate 学习笔记
    • 0. 概述
    • 1. 对齐翻译结构
      • 1.1 解码器:一般描述
      • 1.2 编码器:标记序列的双向RNN
      • 1.3 RNN
      • 1.4 对齐模型
    • 2. 实验
    • 3. 结论

0. 概述

神经机器翻译不像传统的统计机器翻译,它的目的是建立一个单一的神经网络,使这个网络能够最大化翻译效果。NMT通常是编码器和解码器的结合,编码器把源语句转化为固定长度的向量,由解码器生成翻译。这篇论文认为使用固定长度的向量是提升编码器解码器结构效果的瓶颈,所以提出通过让模型自动(平滑地)搜索源语句中与预测目标单词相关的部分来提升效果,而不是明确地把这些部分转化为生硬的部分。实验显示,效果不错。
之前的NMT在处理长句子的时候会有些困难,尤其是比训练数据集更长的文本。随着数据句子长度增加,基本的编码解码器表现会急剧下降。因此,该论文提出将编码解码模型拓展,使其能够连带地学习去对齐和翻译。每翻译一个单词,它就在源语句中查找信息最相关的位置集合。这个模型基于与这些源位置相关联的上下文向量和所有之前形成的目标单词预测目标单词。
最大的区别在于它不是尝试去把一整个输入句子编码为一个单一的固定长度的向量。而是把输入的句子编码为向量的序列,解码翻译的时候选择这些向量的一个子集。这也就解放了NMT,不需要再把源语句所有的信息,不管有多长,压缩成一个固定长度的向量。这个模型对长句子表现要更好。不过任何长度上它的优势都很明显。在英法翻译的任务中,这个方法可以媲美卷积的基于短语的系统。而且分析显示这个模型在源语句和对应的目标语句之间的对齐效果更好。

1. 对齐翻译结构

这部分提出一个NMT的新结构。这个新结构包括一个双向的RNN作为编码器,解码翻译期间在源语句中查找的解码器。

1.1 解码器:一般描述

在这个新模型里,我们把每个条件概率定义为:
该图片截取自原论文
si是i时刻的一个RNN隐含层,这样计算:
该图片截取自原论文
需要注意的是,并不像之前的编码解码器那样,这里的概率是以每个目标单词yi不同上下文的向量ci作为条件的。
上下文向量ci依靠的是编码器将数据的句子映射的一个注解的序列(h1,…,hTx)。每个注解hi都包含了整个输入序列的信息,而这个信息在输入序列的第i个单词周围的部分有很大的注意力。
上下文向量ci是算了这些注解hi的加权求和:
该图片截取自原论文
每个注解hj的权重αij是这样计算的:
该图片截取自原论文
eij是一个对齐模型,它是给j位置的输入和i位置的输出匹配的好坏打分的。这个分数基于RNN的隐含层si-1和输入句子中的第j个注解hj。
把对齐模型a作为前向反馈神经网络,让它和系统其他的部分一起训练。注意,与传统的机器翻译不同,对齐值不作为一个潜在的变量。对齐模型定向地计算一个柔和的对齐,这就允许代价函数的梯度来反向传播。这个梯度就可以随着整个翻译模型一起训练这个对齐模型。
可以把求所有注解的加权和的方法看作是计算一个期望的解释,期望值是在可能的对齐值之上的。让αij成为目标单词yi对齐源单词xj,或者由xj翻译的概率。然后第i个上下文向量ci就是超过所有以概率为αij的标记的期望的解释。
概率αij,或者与之相连的能量eij,
反映了在决定下一个状态si和形成yi的时候,考虑到之前的隐藏状态的si-1的标记hj的重要性。直观上,这也实现了解码器的attention机制。这个解码器决定了源语句的哪些部分需要注意。通过让解码器有了attention机制,也就把编码器从不得不将源语句中的所有信息编码为一个固定长度的向量这一难关中解救出来。有了这个方法,信息就可以在标记序列中传播,也可以被解码器选择性地恢复。

1.2 编码器:标记序列的双向RNN

通常来讲,RNN是顺序地从开始标志x1到最后xTx读取输入序列x的。然后,这里的结构是想要每个单词的解释既总结前面的单词,还有后面的单词。因此,此处使用双向RNN(BiRNN)。
BiRNN包含前向和反向RNN。前向RNN f→按顺序读输入序列(从x1到xTx),并计算前向的隐藏状态(h1→,…,hTx→)的序列。反向RNN按相反的顺序读取序列(从xTx到x1),生成一个反向隐藏层状态(h1←,…,hTx←)的序列。
通过连接前向隐藏状态hj→和反向状态hj←,例如:该图片截取自原论文
得到每个单词xj的一个注解。标记hj包含了前向的单词和反向的单词。由于RNN的趋势能过够更好的代表最近的输入,所以标记hj会关注xj周围的单词。这个标记序列是被解码器使用的,对齐模型之后也要计算上下文向量。
下图为模型的图像描述:
Neural Machine Translation by Jointly Learning to Align and Translate 学习笔记_第1张图片

1.3 RNN

RNN的激活函数f,我们使用门隐藏单元。这个门隐藏单元是一个卷积单元的一个选项,比如一个按元素的tanh。这个门单元和LSTM类似,可以更好地建模和学习长期依赖。这就使得在展开的RNN中得到计算路径成为可能,就能让导数的结果接近1。这些路径可以让梯度简单地回流,而不需要承受太多的消失的影响。因此使用LSTM单元取代门隐藏单元也是可以的。用n个门隐藏单元RNN的新状态si是这样计算的:
该图片截取自原论文
o是按元素乘法,zi是更新门的输出,推荐的更新状态si~这样计算:
该图片截取自原论文
e(yi-1)∈Rm 是一个单词yi-1的n维向量,ri是重置门的输出。当yi作为1:K的向量时,e(yi)就只是一个向量矩阵E∈Rm*K的一列。无论何时可能的话,就省略偏离值来写一个不太混乱的等式。
更新门zi允许每个隐藏单元来保持他之前的激活值,重置门ri控制有多少之前的状态信息和什么样的信息应该被重置。这样计算:
该图片截取自原论文
σ(.)是逻辑sigmoid函数
解码器的每一步用一个多层的函数来计算输出概率。用一个最大输出单元的隐藏层和softmax函数正则化输出概率(每个单词一个)。

1.4 对齐模型

对齐模型设计时应该考虑到每一个长度为Tx和Ty的句子对,模型需要计算Tx*Ty次。为了减少计算,使用一个单层的多层感受机如下:
该图片截取自原论文
Wa∈Rn*n,Ua∈Rn*2n,va∈Rn都是权重矩阵。因为Uahj不依赖i,所以可以提前计算它来最小化计算花销。

2. 实验

该论文使用的是ACL的WMT14的数据集,完成了英法互译的任务。与RNN编码解码器做了对比。
实验过程和结果此处不再赘述,感兴趣的话可以查阅原论文。

3. 结论

这篇论文提出了一种新的结构,拓展了基础的编码器解码器,让模型生成每个目标单词的时候只查找输入单词或者注释中的一个子集。这就解放了模型,不用再把一整个源句子编码成一个固定长度的向量,也让模型只关注与下一个目标单词的生成相关的信息。这大大有利于NMT系统在长句子上获得好的结果。与传统机器翻译系统不同,这个翻译系统的所有部分,包括对齐机制,一起训练,得到正确翻译的概率更高。实验证明确实如此。未来需要增加unknown和稀有词的处理。

你可能感兴趣的:(论文笔记)