【论文翻译】联合学习对齐和翻译的神经机器翻译
这篇论文在采用RNN编码器-解码器结构做端到端的神经机器翻译的基础上,使得模型可以在预测下一个词的时候,自动地搜索源句子相关的部分,这就是attention机制。
原论文链接: Neural Machine Translation by Jointly Learning to Align and Translate
最近开始研究端到端语音合成,由于Attention机制在端到端的语音合成以及识别中的广泛应用,找到了这篇最早提出Attention概念的机器翻译论文。相关的论文原本准备自己翻译,看到网上已经有翻译的比较好的版本,
故转载于此,仅作重新排版和细节修改。 翻译原地址:https://my.oschina.net/stephenyng/blog/1631754
摘要
1. 介绍
2. 背景: 神经机器翻译
2.1 RNN 编码器-解码器
h_t = f(x_t,h_{t-1}) \tag{1}并且:
c=q(\{h_1,...,h_{T_x}\})
其中,hthth_t属于n维实数空间,是t时刻的隐藏状态,c是由所有隐藏状态生成的向量,f和q是非线性函数。例如,Sutskever et al. (2014) 使用一个LSTM作为f,并令q({h1,...,hT})=hTq({h1,...,hT})=hTq(\{h_1,...,h_{T}\})=h_{T}。
解码器被训练用来在给定上下文向量c和所有之前的已预测词{y1,…,yt′−1}{y1,…,yt′−1}\{y_1,…,y_{t'-1}\}的情况下,预测下一个单词yt'yt′y_{t′},换句话说,解码器通过把联合概率分解成一系列条件概率,定义了翻译结果y的概率p:
p(y)=\prod_{t=1}^Tp(y_t\ |\ \{y_1,...,y_{t-1}\},c)\tag{2}
其中y=(y1,…,yTy)y=(y1,…,yTy)y = (y_1, … , y_{T_y})。在RNN中每个条件概率被建模为:
p(y_t\ |\ \{y_1,...,y_{t-1}\},c)=g(y_{t-1},s_t,c)\tag{3}
其中g是一个多层非线性函数,用以输出ytyty_t的条件概率;ststs_t是RNN的隐藏状态。请注意解码器也可以使用如RNN和反卷积神经网络的混合体(Kalchbrenner and Blunsom, 2013)等其他架构。
3. 学习对齐和翻译
在这一部分,我们提出一个全新的神经机器翻译架构。这个新架构包含一个双向RNN作为编码器(参照3.2),和一个在翻译过程中对源句子进行仿真搜索的解码器(参照3.1)。
3.1 解码器: 概要描述
在新模型架构中,我们定义公式(2)中的条件概率为:
p(y_i\ |\ y_1,...,y_{i-1},x)=g(y_{i-1},s_i,c_i)\tag{4}
其中sisis_i是i时刻RNN的隐藏状态,其计算公式为:
s_i=f(s_{i-1},y_{i-1},c_i)
请注意既存的编码器-解码器方法(公式(2))中,每个单词使用的概率条件是相同的上下文向量c,而这里使用的概率条件是特定于每个目标单词yiyiy_i的不同的上下文向量cicic_i。
上下文向量cicic_i依赖于由编码器从输入句子中映射过来的标注序列(h1,...,hTx)(h1,...,hTx)(h_1,...,h_{T_x}),其中的每一个标注hihih_i都包含了输入句子的整体信息,并对输入句子中的第i个单词的附近部分给予了强烈关注。我们在3.2节详细解释如何计算这些标注。
然后对标注hihih_i进行加权求和得到上下文向量cicic_i:
c_i=\sum_{j=1}^{T_x} \alpha_{ij}h_j\tag{5}
标注hjhjh_j的对应权重αijαij\alpha_{ij}的计算方法:
\alpha_{ij}=\frac{exp(e_{ij})}{\sum_{k=1}^{T_x} exp(e_{ik})}\tag{6}
其中:
e_{ij}=a(s_{i-1},h_j)
是一个对齐模型,它评价了输入句子的第j个单词附近的信息,在多大程度上与翻译输出的第i个单词相匹配。对齐模型的评价得分依赖于RNN隐藏状态si−1si−1s_{i-1}(恰在输出yiyiy_i之前的状态,参考公式(4))和输入句子的第j个标注hjhjh_j。
我们将对齐模型aaa参数化为一个前馈神经网络,它同系统的其他组件一起进行联合训练。注意不像传统机器翻译那样作为一个隐变量,这里的对齐模型直接计算一个软对齐,这使得损失函数的梯度可以向后传播,因此对齐模型可以同整个翻译模型一起进行联合训练。
对所有标注加权求和的操作,我们可以理解成计算一个期望标注,这里的期望是指对齐的概率在标注序列上的分布。设αij" role="presentation">αijαij\alpha_{ij}是目标单词yiyiy_i和源单词xjxjx_j的对齐或翻译概率,那么第i个上下文向量cicic_i就是给定所有标注和他们各自对应概率αijαij\alpha_{ij}情况下的期望标注。(译者注:cicic_i的意义就是统计了第i个目标单词与原始序列中的每个词,以及每个词附近的信息,如何发生关系,在多大程度上有关系,这就是第i个目标单词在原始序列中的上下文,恰好诠释了上下文这个概念。)
概率αijαij\alpha_{ij},或者其关联的能量eijeije_{ij},反映了在给定前一个隐藏状态si−1si−1s_{i-1}的情况下,在决策下一个隐藏状态sisis_i和生成下一个目标单词yiyiy_i的时候,标注hjhjh_j有多重要。直觉上,这是在解码器中实现了一个注意力机制,解码器可以决定应该关注源句子中的哪些部分。传统的编码器不得不将源句子的所有信息编码到定长向量中,我们通过让解码器拥有注意力机制,把编码器从这种负担中解脱了出来。这个新方法使得信息散布在标注序列中,在后续处理中解码器可以从标注序列中选择性的获取信息。
3.2 编码器:双向RNN生成标注序列
公式(1)描述的通常的RNN,从输入序列X的第一个字符x1x1x_1顺序读入,直到最后一个字符xTxxTxx_{T_x}。在我们提出的结构中,在每个单词的标注信息中,不仅要归纳前面单词的信息,还要归纳后面单词的信息,因此我们提议使用最近在语音识别(例如 Graves et al., 2013)中成功应用的双向RNN(BiRNN, Schuster and Paliwal, 1997)。
一个BiRNN包含一个前向和一个后向RNN。前向RNN f→f→\overrightarrow{f}按照输入序列的顺序读取(从x1x1x_1到xTxxTxx_{T_x}),同时计算前向隐藏状态序列(h→1h→1\overrightarrow{h}_1, … , h→Txh→Tx\overrightarrow{h}_{T_x})。而后向RNN f←f←\overleftarrow{f}逆序读取输入序列(从xTxxTxx_{T_x}到x1x1x_1),同时计算后向隐藏状态序列(h←1h←1\overleftarrow{h}_1, … , h←Txh←Tx\overleftarrow{h}_{T_x})
对每个单词xjxjx_j,通过拼接前向隐藏状态h→jh→j\overrightarrow{h}_j和后向隐藏状态h←jh←j\overleftarrow{h}_j,我们得到标注:hj=[h→Tj;h←Tj]Thj=[h→jT;h←jT]Th_j=[\overrightarrow{h}_j^T;\overleftarrow{h}_j^T]^T。这样一来,标注hjhjh_j就同时包含了前后两个方向的单词信息。由于RNN倾向于对最近的输入有更好的表达,标注hjhjh_j将会聚焦于xjxjx_j附近的单词。这些标注组成的序列被后面的解码器和对齐模型用来计算上下文向量(公式(5)–(6))。
图1展示了我们提出的模型。
4. 实验设定
我们在英法翻译任务上,使用ACL WMT ’14 (http://www.statmt.org/wmt14/translation-task.html)提供的双语平行语料验证我们提出的方法。作为比较,我们对最近由Cho et al. (2014a)提出的RNN编码器-解码器模型也做了一个性能报告。在两个模型上我们使用同样的训练步骤和同样的数据集(模型实现在这里:https://github.com/lisa-groundhog/GroundHog)。
4.1 数据集
WMT ’14 数据集包含下面的英法平行语料: 欧洲议会(61M words),新闻评论(5.5M), 联合国(421M) ,以及两个大小分别是90M和272.5M的爬虫语料,总计850M单词。我们使用Cho et al. (2014a)中描述的步骤,使用Axelrod et al. (2011) (获取网址: http://www-lium.univ-lemans.fr/˜schwenk/cslm_joint_paper/)提出的数据选取方法,将联合语料大小缩减到348M。尽管可以使用大得多的单语言语料来预训练编码器,但是我们没有使用前面提到的平行语料之外的任何单语言数据。我们把数据集WMT ’14中的news-test-2012 和news-test-2013拼接在一起作为开发(验证)数据集,并在测试集news-test-2014上做模型评估,其包含了不在训练数据中的3003个句子。
经过常规的分词(我们使用开源的机器翻译包Moses中的分词脚本),我们使用每种语言中的前30000个高频词来训练模型,任何没有出现在这个名单中的词都被映射为一个特殊的词([UNK])。在此之外,我们没有对数据做任何其他特殊预处理,如小写转换或词干提取等。
4.2 模型
我们训练两个模型,一个是RNN编码器-解码器模型(RNNencdec, Cho et al., 2014a),另一个是我们提出的模型,称它为RNNsearch。我们对每个模型训练两次:第一次使用长度不大于30的句子(RNNencdec-30, RNNsearch-30)训练,第二次使用长度不大于50的句子训练(RNNencdec-50, RNNsearch-50)。
RNNencdec的编码器和解码器各自包含1000个隐藏单元【在这篇论文中,提到“隐藏单元”我们是指门控隐藏单元(参照附录A.1.1)】。RNNsearch的编码器由前向RNN和后向RNN构成,分别包含1000个隐藏单元,RNNsearch的解码器也包含1000个隐藏单元。两个模型都使用多层网络,后接一个单层maxout (Goodfellow et al., 2013)隐层来计算每个目标单词的条件概率(Pascanu et al., 2014)。
我们使用minibatch随机梯度下降算法,并使用Adadelta (Zeiler, 2012)优化算法来训练每个模型,每次梯度更新使用80个句子作为minibatch,每个模型我们训练了大概5天。
一旦模型训练完毕,我们使用集束搜索(beam search)方法找到使得条件概率最大化的翻译结果(例如Graves, 2012; Boulanger-Lewandowski et al., 2013)。Sutskever et al. (2014)在他们的神经机器翻译模型中使用了此方法来生成翻译结果。
实验中使用的更多模型架构和训练过程的细节,请参照附录A和B。
5. 结果
5.1 定量结果
在表1中我们列出了翻译性能的BLEU得分。很明显在各种情况下RNNsearch都比传统的RNNencdec优秀,更重要的是,当我们用只包含认识单词的句子评估我们提出的模型时,其性能与传统的基于短语的翻译系统(Moses)一样好。这是一个重要的成就,考虑到Moses除了我们使用的平行语料外,还使用了额外的单语言语料(418M单词)。
我们提出这个方法的背后动机之一就是,基本的编码器-解码器方法中的定长上下文向量可能会带来限制。我们推测这种限制使得基本编码器-解码器方法在处理长句子时表现不佳。在图2中,我们看到当句子长度增加时RNNencdec的性能急剧下降,另一方面,RNNsearch-30和RNNsearch-50对句子长度更鲁棒,特别是RNNsearch-50,即使句子长度达到甚至超过50仍然没有性能恶化。表1中可以看到RNNsearch-30要比RNNencdec-50的性能还要好,这使我们提出的模型相对于基本编码器-解码器模型的优势得到了进一步确认。
5.2 定性分析
5.2.1 对齐
我们提出的方法提供了一个直观的方式来观察翻译结果和源句子单词之间的(软)对齐,这是通过对公式(6)中的标注权重αijαij\alpha_{ij}进行可视化来实现,如图3所示。每个图中的矩阵的每一行表明了与标注关联的权重。通过这个图我们可以看到源句子中哪些位置在生成翻译目标单词时更重要。
我们可以从图3的对齐中看出,英语和法语之间的单词对齐大致是单调性的,我们可以看到矩阵对角线上的权重最强。但是,也可以发现一些非平凡的,非单调的对齐。通常形容词和名词在法语和英语中的顺序是不同的,图3(a)中有一个这样的例子,图中显示模型正确地将短语[European Economic Area]翻译成了[zone ´economique europ´een]。RNNSearch模型能够跳过两个单词([European] and [Economic]),正确的将法语的zone和英语的area对齐,然后每次再回退一个词来完成整个短语[zone ´economique europ´een]。
与硬对齐相比,软对齐的优势是明显的,比如图3(d),源短语[the man]被翻译成了[l’ homme],所有的硬对齐会把[the]对应到[l’],把[man]对应到[homme],但这样的对应无助于翻译,因为你必须[the]后面跟了什么单词才能决定[the]应该被翻译成[le], [la], [les] 还是 [l’]。我们的软对齐方法通过让模型同时关注[the]和[man],从而自然而然的解决了这个问题,所以在这个例子中,我们看到模型正确地将[the]翻译成了[l’]。类似的结果可以在图3的所有例子中看到。软对齐的一个额外的好处是,它能够顺理成章地应对源句和目标句之间的长度差异,不需要以一种违反直觉的方式将某些单词与 ([NULL])对应起来(例如Koehn, 2010的第4,5章)。
5.5.2 长句子
可以清楚地从图2看到,在翻译长句子时,提出的模型(RNNsearch)比传统模型(RNNencdec)要好得多。这可能是由于RNNsearch不需要完美地将长句子编码成定长向量,只需要准确编码输入句子围绕特定单词的部分。
例如,考虑测试集中的这个源句:
RNNencdec-50将这句话翻译成:
RNNencdec-50正确地翻译源句子直到[a medical center]。然而从那开始(下划线处),翻译偏离了源句的本义。例如,它使用[en fonction de son ´etat de sant´e] (“based on his state of health”)替换了源句的[based on his status as a health care worker at a hospital]。
另一方面,RNNsearch生成了以下的正确翻译,保留了输入句子的完整含义而没有遗漏任何细节。
让我们再考虑测试集中的另一个句子:
RNNencdec-50的翻译是:
和前一个例子一样,RNNencdec-50在生成大约30个词之后,开始偏离源句的正确含义(看下划线的短语)。在那个点之后,翻译的质量开始恶化,犯了一些基本错误,比如右引号缺失。
再次,RNNsearch能够正确地翻译长句:
结合已经呈现的定量结果,这些定性的观察证实了我们的假说:相比标准的RNNencdec模型,RNNsearch架构可以实现可靠得多的长句翻译。
在附录C中,我们提供了更多一些的长句示例翻译,它们分别由RNNencdec-50,RNNsearch-50,谷歌翻译以及参考翻译生成。
6. 相关研究
6.1 对齐学习
最近Graves (2013)在手写体合成任务中,也提出了一个类似的把输出符号与输入符号进行对齐的方法。手写体合成任务中要求模型根据给定的字符串产生手写体。在Graves的研究中,他使用混合高斯核来计算标注的权重,这里使用一个对齐模型来预测位置,宽度以及核函数的混合系数。更具体一点,他的对齐限定在了预测位置以使位置可以单调增长。
与我们的方法的主要不同在于,Graves的标注的权重是单向移动的。而在机器翻译任务中,这会产生非常严重的限制,因为为了生成语法正确的翻译,经常需要调整语序(例如英语-德语翻译)。
相反,我们的方法,要求为翻译结果的每个单词计算源句子的每个单词的标注权重,这会增加计算量,但不是很严重,因为在翻译任务中,大多数句子的长度在10-40个单词之间。然而,这一点可能会限制其应用到其他任务。
6.2 用于机器翻译的神经网络
Bengio et al. (2003)介绍了一种神经概率语言模型,在给定固定数量的前序单词的前提下,使用一个神经网络对下一个单词的条件概率进行建模。从这份研究以后,神经网络就开始在机器翻译中广泛使用。然而,神经网络的功能受到了很大的限制,只用于为既存的统计机器翻译系统提供单一的特征,或者对既存系统提供的候选翻译进行重新排序。
例如,Schwenk (2012)提出使用一个前馈神经网络来计算一对源短语和目标短语的得分,将得分作为一个追加特征应用在既存的基于短语的统计机器翻译系统中。最近,Kalchbrenner and Blunsom (2013) 和Devlin et al. (2014)报告称,他们成功的将神经网络作为既存翻译系统的一个子模块。传统上,训练一个神经网络作为目标语言模型,用于重新评分或者对候选翻译进行重新排序(see, e.g., Schwenk et al., 2006)。
尽管我们上面介绍的方法提高了翻译性能,超过了既存最好的机器翻译系统,但我们更有兴趣基于神经网络设计一个全新的翻译系统。因此我们在这片论文中提出的神经机器翻译方法,是之前的研究的一个转折点。不是把神经网络作为既存系统的一部分,我们的模型可以独立运行并从源句子直接生成翻译结果。
7. 结论
传统的神经机器翻译方法,是一个编码器-解码器结构的方法,它将整个输入句子编码成一个定长向量然后由解码器将其解码成翻译结果。基于最近Cho et al. (2014b) and Pouget-Abadie et al. (2014)的研究,我们推测固定长度的上下文向量的使用在翻译长句子时会有问题。
在这篇论文中,我们提出了解决这个问题的一个新架构。我们通过在生成每个目标单词时,使模型可以对输入单词或者对通过编码器计算出的标注信息进行搜索,扩展了基本的编码器-解码器架构。这将模型从不得不把输入句子编码成定长向量的尴尬中解放出来,也使得模型只聚焦在与下一个目标单词相关的信息上。这个方法的一个主要的积极影响是,使得神经机器翻译系统可以在翻译长句子时产生好的结果。不同于传统的机器翻译系统,系统的所有组件,包括对齐机制,都可以联合进行训练,以更高的对数似然概率生成正确的翻译。
我们把提出的模型称为RNNsearch,在英法翻译任务中对其进行了测试。实验表明,在任何长度的句子中,RNNsearch模型都显著优于传统的编码器-解码器模型(RNNencdec),并且其对句子长度的鲁棒性强很多。在定性分析中,我们研究了RNNsearch生成的软对齐,从中我们可以得出结论,正是该模型可以将每个目标单词与相关源单词,或者源单词的标注对齐,因此才生成了正确的翻译结果。
或许更重要的是,我们提出的方法的性能可以与既存的基于短语的统计机器翻译系统相媲美。考虑到我们提出的架构,或者整个神经机器翻译家族,是在今年才被提出的,所以可以说这一性能是一个突出的成果。我们相信这里提出的架构对更好的机器翻译和更好的自然语言理解来说,是一个有前景的开始,
这里留下的一个挑战是,如何更好地处理未知词,或者罕见词。为了更广泛的应用,以及在所有的场景中匹敌当前机器翻译系统的最佳性能,这是必须要解决的问题。
【论文翻译】联合学习对齐和翻译的神经机器翻译相关推荐
- nlp论文-《Neural Machine Translation by Jointly Learning to Align and Translate》-基于联合学习对齐和翻译的神经机器翻译(一)
<Neural Machine Translation by Jointly Learning to Align and Translate>--基于联合学习对齐和翻译的神经机器翻译 作者 ...
- nlp论文-《Neural Machine Translation by Jointly Learning to Align and Translate》-基于联合学习对齐和翻译的神经机器翻译(二)
1.论文整体框架 1.1 摘要 神经机器翻译的任务定义: 传统神经机器翻译所用的编码器-解码器模型的缺陷: 本文提出一种能够自动搜索原句中与预测目标词相关的神经机器翻译模型: 所提出的模型的效果: 1 ...
- 用于学术论文阅读外文学习的高效翻译工具——多译
多译是一款体验极佳的桌面端翻译工具,支持 MacOS 与 Windows 系统,支持文段翻译.截图翻译.查词等功能,还能够呈现多个翻译引擎的翻译结果. 本文将会介绍多译是怎么诞生的,为什么多译这么好用 ...
- 神经机器翻译(Neural machine translation, NMT)学习笔记
神经机器翻译(Neural machine translation, NMT)是最近提出的机器翻译方法.与传统的统计机器翻译不同,NMT的目标是建立一个单一的神经网络,可以共同调整以最大化翻译性能.最 ...
- 经典神经网络论文超详细解读(三)——GoogLeNet InceptionV1学习笔记(翻译+精读+代码复现)
前言 在上一期中介绍了VGG,VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩,而今天要介绍的就是同年分类任务的第一名--GoogLeNet . 作为2014年Ima ...
- 经典神经网络论文超详细解读(八)——ResNeXt学习笔记(翻译+精读+代码复现)
前言 今天我们一起来学习何恺明大神的又一经典之作: ResNeXt(<Aggregated Residual Transformations for Deep Neural Networks&g ...
- 【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)
前言 从这篇开始,我们将进入YOLO的学习.YOLO是目前比较流行的目标检测算法,速度快且结构简单,其他的目标检测算法如RCNN系列,以后有时间的话再介绍. 本文主要介绍的是YOLOV1,这是由以Jo ...
- 经典神经网络论文超详细解读(二)——VGGNet学习笔记(翻译+精读)
前言 上一篇我们介绍了经典神经网络的开山力作--AlexNet:经典神经网络论文超详细解读(一)--AlexNet学习笔记(翻译+精读) 在文章最后提及了深度对网络结果很重要.今天我们要读的这篇VGG ...
- trans【Total3DUnderstanding】论文翻译+解读学习 2020.10.14
Total3D Understanding 摘要 1 Introduction 2 related work 3 Method 3.1 3D目标检测和布局估计 3.2. Mesh Generation ...
最新文章
- 对象----《你不知道的JS》
- Linux下安装Redis php-redis扩展 redis重启shell脚本 超详细!
- JQuery实现滚动广告(转)
- Eva.js 渲染Web页面动画
- configure: error: Cannot find OpenSSL's libraries
- PHP动态生成select标签
- (翻译)从底层了解ASP.NET体系结构 [转]
- 返回顶部代码 缓慢的返回顶部
- 代码调试全指南-自然语言处理-基于预训练模型的方法,车万翔
- Python:实现miller rabin米勒-拉宾素性检验算法(附完整源码)
- Attention机制原理
- Google的通用翻译机能成为未来的巴别鱼吗?
- 视频画面添加图片,这个方法分享给你
- 用matlab求雅可比迭代法,基于matlab的jacobi(雅可比)迭代法求解线性方程组
- 【网络编程实践】2.4.2 muduo库安装与 procmon 编译
- 摄像头焦距与摄像范围的关系表
- 海思芯片HI35xx NNIE踩坑录
- 网易考拉在服务化改造方面的实践
- NAT之SNAT和DNAT
- raid卡三块硬盘以上,创建没有raid5