neural machine translation by jointly learning to align and translate阅读

原文地址 2015
摘要
与传统的统计机器翻译不同的是,神经机器翻译的目的是建立一个单一的神经网络,可以协同调整,使翻译性能最大化。
我们推测,固定长度向量的使用是编码-解码结构性能提升的瓶颈;因此,本文提出了下面的方法来提升性能,通过让模型自动(soft-)搜索与预测目标词相关的源句部分,而不需要显式地将这些部分分块(hard segment)。
通过定性分析,验证了我们方法的正确性。

引言

背景:神经机器翻译

RNN Encoder-Decoder
简单介绍一下RNN Encoder-Decoder(Cho et al 2014aSutskever et al 2014),我们再次基础上建立了一个能够同时进行对齐和翻译的新框架。
在Encoer-Decoder框架中,
解码器读取输入句子——矢量序列x = (x1,x2,...,xTx)(x_1, x_2, ..., x_{T_x}), 得到向量c,最常用的方法时使用一个RNN:ht = f(xt, ht1)h_t\,=\,f(x_t, \,h_{t-1})c = q({h1,...,hTx}),c\,=\,q(\{h_1, ..., h_{T_x}\}),其中,htRnh_t\in R^n是在时间步 t \,t\,的隐藏状态, c \,c\,是由隐藏状态序列生成的向量。 f  q \,f\,和\,q\,是非线性函数。
解码器利用上下文向量 c \,c\,和所有之前预测的单词{y1,...,yt1}\{y_1,...,y_{t'-1}\}来预测下一个单词yty_{t'}。即,解码器通过将联合概率分解为有序条件来定义译文 y \,y\,的概率:p(y) = t=1Tp(yt{y1,...,yt1,c}),(2)p(y)\,=\,\prod_{t=1}^Tp(y_t|\{y_1,...,y_{t-1},c\}),\qquad\qquad(2)其中,y=(y1,...,yTy)y ={(y_1, ..., y_{T_y})},利用RNN,每个条件概率的模型如下:p(yt{y1,...,yt1},c)=g(yt1,st,c),(3)p(y_t|\{y_1,...,y_{t-1}\},c)=g(y_{t-1},s_t,c),\qquad\qquad(3)其中,gg是一个非线性,潜在的多层函数,它输出概率yty_tsts_t是RNN的隐藏状态。注意还可以使用其他构架,如RNN和de-convolutional神经网络混合的结构Kalchbrenner and Blunsom 2013

learning to align and translate

本文主体。结构包括一个双向RNN编码器和一个能够对源句子进行搜索的解码器。
解码器:一般描述
我们使用(2)p(y) = t=1Tp(yt{y1,...,yt1,c})p(y)\,=\,\prod_{t=1}^Tp(y_t|\{y_1,...,y_{t-1},c\})式定义条件概率:p(yi{y1,...,yi1},x)=g(yi1,si,ci),(4)p(y_i|\{y_1,...,y_{i-1}\},x)=g(y_{i-1},s_i,c_i),\qquad\qquad(4)其中,sis_i是RNN在时间 ii 的隐藏状态:si=f(si1,yi1,ci).s_i = f(s_{i-1},y_{i-1},c_i).注意:与现有的Encoder-Decoder方法不同(2),这里,每个目标单词yiy_i的概率以一个distinct(明显的)上下文向量cic_i为条件。
cic_i由注释序列(h1,...,hTx)(h_1,...,h_{T_x})决定,而(h1,...,hTx)(h_1,...,h_{T_x})是输入句子经过编码器映射的输出。每个hih_i都包含了关于整个输入序列的信息,并着重于围绕输入序列的第i个单词的部分。
neural machine translation by jointly learning to align and translate阅读
图1:给定源句子(x1,x2,...,xT)(x_1,x_2,...,x_T),生成tt个目标单词yty_t模型的图形化注释。
上下文向量cic_i通过对这些hih_i加权得到:ci=j=1Txαijhjc_i=\sum_{j=1}^{T_x}\alpha_{ij}hj权值αij\alpha_{ij}计算方法如下:αij=exp(eij)k=1Txexp(eik),(6)\alpha_{ij} = \frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ik})},\qquad (6)其中,eij=a(si1,hj)e_{ij}=a(s_{i-1},h_j)是对齐模型,它是对位置j出的输入和位置i出的输出匹配程度的度量。得分是基于RNN隐藏状态si1s_{i-1}(Eq(4))和输入句子的第jj个注释hjh_j
我们将对齐模型参数化为一个前馈神经网络,该神经网络与所提系统的所有其他组件共同训练。注意:对齐不被认为是一个潜在变量,Instead, the alignment model directly com-putes a soft alignment, which allows the gradient of the cost function to be backpropagated through.

αijxjyithe ith context vector ci is the expected annotation over all the annotations with probabilities αij.(iciαijHhαij)αijeijsiyihjsi1\color{blue}{\begin{array}l\\\alpha_{ij}可以看成是概率——从源句子x_{j}翻译成(对准为)目标单词y_i的概率。\\ the\, i-th \,context\, vector\, c_i \,is \,the\, expected \,annotation \,over\, all \,the \,annotations \,with\, probabilities\, α_{ij}.\\(第i个上下文向量c_i是在具有概率α_{ij}的所有注释H的期望注释,即对映射h用α_{ij}的加权和)\\概率α_{ij}(e_{ij})反映了在决定下一状态s_i和生成y_i时,h_j和前一隐藏状态s_{i-1}的重要性。\end{array}}

解码器中的注意力机制使编码器能够从将所有源信息都编码成一个固定维度的向量的繁重任务中解脱出来。

解码器:双向RNN生成注释序列h
每个单词的注释(h)涵盖了前面单词和后面单词。
前向隐藏状态:(h1,...,hTx)(\overrightarrow h_1,...,\overrightarrow h_{T_x}),从x1xTxx_1到x_{T_x}
后向隐藏状态:(h1,...,hTx)(\overleftarrow h_1,...,\overleftarrow h_{T_x}),从xTxx1x_{T_x}到x_1
对于每个单词xjx_j,连接其前后向隐藏状态作为最终状态,hj=[hjT;hjT]Th_j = [\overrightarrow h_j^T;\overleftarrow h_j^T]^T

实验设置

对所提出的英法翻译进行了评价。我们使用ACL WMT’14提供的双语平行语料库,并与Cho et al (2014a)所提方法做对比。
4.1 数据集
4.2 模型
训练了两类模型:
第一个是RNN Encoder-Decoder(Cho et al(2014a))提出的
第二个是本文提出的。

maxout network (Goodfellow et al,(2013))\color{red}{maxout \,network\,(Goodfellow\,et\,al,(2013))}
how to connect recurrent neural network,(Pascanu et al,(2014))\color{red}{how\, to\, connect\, recurrent\, neural\, network,(Pascanu\,et\,al,(2014))}

利用SGD和Adadelta (Zeiler, 2012)来训练模型

随后,利用beam search\color{green}{beam \,search}寻找最佳解

结果

定性分析(qualitative)和定量(quantitative)分析
:::\color{green}{\begin{array}l定性和定量分析是两种不相同但是有潜在联系的分析方法。\\不同:\\\qquad定性就是用文字语言进行相关描述。\\\qquad它是主要凭分析者的直觉、经验,运用主观上的判断来对分析对象的\\\qquad性质、特点、发展变化规律进行分析的一种方法。\\定量就是用数学语言进行描述。\\它是依据统计数据,建立数学模型,\\并用数学模型针对数量特征、数量关系与数量变化去分析的一种方法。\\相同:\\它们一般都是通过比较对照来分析问题和说明问题的。\\正是通过对各种指标的比较或不同时期同一指标的对照才反映出数量的多少、质量的优劣、\\效率的高低、消耗的大小、发展速度的快慢等等,才能为作鉴别、下判断提供确凿有据的信息。\\优缺点:\\相比而言,定量分析方法更加科学,但需要较高深的数学知识,\\而定性分析方法虽然较为粗糙,但在数据资料不够充分或分析者数学基础较为薄弱时比较适用。\\在分析过程中通常会运用定性与定量相结合的分析方法。\end{array}}
5.1 定量结果

本文方法背后的动机之一是针对使\color{green}{基本编码器-解码器方法中使用固定长度的上下文向量,固定长度的上下文向量会限制性能}

neural machine translation by jointly learning to align and translate阅读由图二知,随着句子长度的增加,RNNencdec的性能急剧下降
5.2 定性结果
alignment:
long sentences

相关工作

6.1 Learning to align

6.2 Neural Networks for machine translation
本文提出的方法,是将神经网络作为独立模型,直接将源句子翻译成目标句子

结论

将源句子编码为固定长度向量存在问题。
为了解决这一问题,提出了attention机制,使模型能够搜索整个源句子,将注意力集中了和下一个目标词相关的信息熵。
αijα_{ij}代表第jj个源词到第ii个目标词的权重
广\color{green}{\begin{array}l留给未来的挑战之一是如何更好地处理未知或罕见的单词。\\这将让模型得到更广泛的应用。\end{array}}

\color{green}{模型结构}

A.1 \color{green}{A.1\, 体系结构的选择}
A.1.1  \color{green}{A.1.1\,\,循环神经网络}
解码器隐藏状态公式(我们展示解码器的公式。在编码器中可以使用相同的公式,只需忽略上下文向量cic_i和相关术语):si = f(si1,yi1,ci) = (1zi)si1+zis~i,s_i \,=\,f(s_{i-1},y_{i-1},c_i)\,=\,(1-z_i)\circ s_{i-1}+z_i\circ \widetilde s_i,其中,\circ代表对应元素相乘,ziz_i更新们的输出:s~i=tanh(We(yi1)+U[risi1]+Cci),\widetilde s_i = tanh(We(y_{i-1})+U[r_i\circ s_{i-1}]+Cc_i),其中,e(yi1)Rme(y_{i-1})\in R^m是一个词yi1y_{i-1}的m维嵌入,rir_i是reset gate的输出。yiy_i由1-of-K 向量表示,e(yi)e(y_i)是嵌入矩阵ERm×KE\in R^{m\times K}的一列。
更新门ziz_i允许每个隐藏的单元保持它之前的**状态,复位门rir_i控制应该复位多少和来自以前状态的信息。zi=σ(Wze(yi1)+Uzsi1+Czci),z_i = \sigma (W_ze(y_{i-1})+U_zs_{i-1}+C_zc_i),ri=σ(Wre(yi1)+Ursi1+Crci),r_i=\sigma (W_re(y_{i-1})+U_rs_{i-1}+C_rc_i),其中,σ()\sigma(\cdot)是logistic Sigmoid function

A.1.2  \color{green}{A.1.2\,\,对齐模型}
模型需要被评估Tx×TyT_x\times T_y次,为了减少计算,使用一个单层的多层感知机(a singlelayer multilayer perceptron such that)a(si1,hj)=vaTtanh(Wasi1+Uahj),a(s_{i-1},h_j)=v_a^Ttanh(W_as_{i-1}+U_ah_j),其中,WaRn×n,UaRn×2n,vaRnW_a\in R^{n\times n},U_a\in R^{n\times 2n},v_a\in R^n是权重矩阵。因为UahjU_ah_j的计算并不取决于i所以我们可以提前计算,使成本最小。
A.2  \color{green}{A.2\,\,模型详细描述}
A.2.1  \color{green}{A.2.1\,\,解码器}
为了增加可读性,我们省略了所有的偏置项;
输入:源句子,1-of-K 编码向量x=(x1,...,xTx),xiRKxx = (x_1, ...,x_{T_x}),x_i\in R^{K_x}输出:目标句子,1-of-K编码向量y=(y1,...,yTy),yiRKyy=(y_1,...,y_{T_y}),y_i\in R^{K_y}其中,KxK_xKyK_y分别是源语言和目标语言的词汇表大小,TxT_xTyT_y分别表示源句和目标句的长度。

\color{purple}{首先}
BiRNN的前向状态计算如下:hi={(1zi)hi1+zihi),if i>00,if i=0\overrightarrow h_i=\begin{cases}(1-\overrightarrow z_i)\circ \overrightarrow h_{i-1}+\overrightarrow z_i\circ \overrightarrow {\underline h_{i}}),& \text {if $i>0$} \\ 0,& \text{if $i$=0} \end{cases}