论文名:Neural Machine Translation By Jointly Learning to Align and Translate
论文作者:Dzmitry Bahdanau et.al.
期刊/会议名:ICLR 2015
本文作者:XMU_MIAO
神经机器翻译(NMT)是近来提出的应用于机器翻译的一种方法。不同于传统的统计机器翻译(SMT),神经机器翻译致力于构建一个能够联合最大化翻译性能的网络。近来提出的神经翻译模型通常属于Encoder-Decoder类的,其将源句编码成一个定长的向量,而后译码器将该向量解码成翻译句。
在本文中,我们推测使用定长向量是限制基础 Encoder-Decoder \textbf{Encoder{-}Decoder} Encoder-Decoder架构性能的瓶颈。同时提出允许模型自动地(软)搜索与目标词相关的源句的各个部分,而不是显式地指定。 通过这种新方法,我们的翻译性能可与现有的最先进的基于短语的系统在英法翻译任务上相媲美。此外,定性分析表明,该模型得到源句词和目标词的(软)对准与我们的直觉很一致。
从概率的观点看,翻译等同于找到一个在给定源句 x \textbf{x} x找到条件概率最大(即: a r g m a x y p ( y ∣ x ) argmax_{\textbf{y}}p(\textbf{y}|\textbf{x}) argmaxyp(y∣x))的目标句 y \textbf{y} y。在神经机器翻译中,我们使用平行训练语料库来拟合一个参数化的模型来最大化句子对的条件概率。翻译模型学习条件分布后,给定源句,通过搜索条件概率最大的句子,就可以生成相应的翻译。
该部分简要介绍由cho et.al.(2014a)和Sutskever et.al.(2014)提出的基于RNN的Encoder-Decoder架构。我们在此基础上提出一种能够同时学习对齐(源句词与目标句词的对齐)和翻译的架构。
在Encoder-Decoder框架中,编码器端读取输入句子,一个向量序列 x = ( x 1 , . . . , x T x ) \textbf{x}=(x_1,...,x_{T_x}) x=(x1,...,xTx)并得到向量 c c c,最常见的方法是使用这样的RNN h t = f ( x t , h t − 1 ) c = q ( { h 1 , . . . , h T x } ) h_t=f(x_t,h_{t-1})\\c=q(\{ h_1,...,h_{T_x} \}) ht=f(xt,ht−1)c=q({ h1,...,hTx})其中 h t ∈ R n h_t\in R^n ht∈Rn是 t t t时刻的隐藏状态, c c c是从隐藏状态序列中得到的上下文向量, f f f和 q q q是某些非线性函数。例如:Sutskever et.al.(2014)使用 LSTM \textbf{LSTM} LSTM作为 f f f, q ( { h 1 , . . . , h T } ) = h T q(\{ h_1,...,h_T\})=h_T q({ h1,...,hT})=hT。
译码器通常在给定上下文向量 c c c和所有之前预测过的词 { y 1 , . . . , y t ′ − 1 } \{y_1,...,y_{t^{'}-1}\} { y1,...,yt′−1}上训练来预测下一个词 y t ′ y_{t^{'}} yt′。换句话说,译码器通过将联合概率分解为有序条件在 y \textbf{y} y上定义了一个概率: p ( y ) = ∏ t = 1 T p ( y t ∣ { y 1 , . . . , y t − 1 } , c ) p(\textbf{y})=\prod_{t=1}^{T}p(y_t|\{ y_1,...,y_{t-1} \},c) p(y)=t=1∏Tp(yt∣{ y1,...,yt−1},c)其中 y = ( y 1 , . . . , y T y ) \textbf{y}=(y_1,...,y_{T_y}) y=(y1,...,yTy)。利用RNN,每一个条件概率又能表示为 p ( y t ∣ { y 1 , . . . , y t − 1 } , c ) = g ( y t − 1 , s t , c ) p(y_t|\{y_1,...,y_{t-1} \},c)=g(y_{t-1},s_t,c) p(yt∣{ y1,...,yt−1},c)=g(yt−1,st,c)其中 g g g是一个非线性、多隐藏层的用于输出 y t y_t yt的概率。 s t s_t st是RNN的隐藏层状态。
在这一部分,我们提出一种新的神经机器翻译的架构。新架构包含了一个双向RNN的编码器以及译码器,译码器在译码翻译过程中对源句进行搜索。
在新的模型架构中,我们将每一个条件概率定义为 p ( y i ∣ y 1 , . . . , y i − 1 , x ) = g ( y i − 1 , s i , c i ) p(y_i|y_1,...,y_{i-1},\textbf{x})=g(y_{i-1},s_i,c_i) p(yi∣y1,...,yi−1,x)=g(yi−1,si,ci)其中 s i s_i si为 t t t时刻RNN的隐藏层状态,计算式为 s i = f ( s i − 1 , y i − 1 , c i ) s_i=f(s_{i-1},y_{i-1},c_i) si=f(si−1,yi−1,ci)不同于已有的Encoder-Decoder方法,在这里,每个目标词 y i y_i yi的概率取决于不同的上下文向量 c i c_i ci
上下文向量 c i c_i ci取决于注释序列,即编码器的隐藏层状态 ( h 1 , . . . , h T x ) (h_1,...,h_{T_x}) (h1,...,hTx)。每一个注释 h i h_i hi包含了整个输入序列的信息,尤其是第 i i i个输入词周围的信息。接下来我们详细介绍如何计算注释。
上下文向量 c i c_i ci是的这些注释 h i h_i hi的加权和: c i = ∑ j = 1 T x α i j h j c_i=\sum_{j=1}^{T_x}\alpha_{ij}h_j ci=j=1∑Txαijhj注释 h j h_j hj的权重 α i j \alpha_{ij} αij的计算式为: α i j = e x p ( e i j ) ∑ k = 1 T x e x p ( e i k ) \alpha_{ij}=\frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ik})} αij=∑k=1Txexp(eik)exp(eij)其中 e i j = a ( s i − 1 , h j ) e_{ij}=a(s_{i-1},h_j) eij=a(si−1,hj)为一个“对齐模型”,其计算输入序列中第 j j j个位置元素与输出序列中第 i i i个位置元素的匹配程度的得分。
我们将“对齐模型” a a a参数化为一个与模型其他部分一起训练的前馈神经网络。注意到传统神经机器翻译中,“对齐”并没有被考虑为一个隐含的变量,相反,“对齐模型”能够直接计算允许损失函数梯度通过的“软对齐”。该梯度可用于联合训练“对齐模型”和整个翻译模型。
直接将所有来自编码器的注释 h j h_j hj相加得到的期望注释作为上下文向量可能太大。令 α i j \alpha_{ij} αij为目标词 y i y_i yi从源词 x j x_j xj翻译得到或对齐的概率。第 i i i个上下文向量 c i c_i ci是所有注释与对齐概率 α i j \alpha_{ij} αij分别乘积后相加得到的期望注释。
概率 α i j \alpha_{ij} αij或者说“能量” e i j e_{ij} eij反映了注释 h j h_j hj相对于前隐藏状态 s i − 1 s_{i-1} si−1在决定下一个状态 s i s_i si和生成 y i y_i yi时的重要程度。直观上看,这实现了译码器的一种“注意力机制” 译码器能够决定关注源句中的哪部分内容。通过让译码器拥有“注意力机制”,我们就能将编码器从将源句的所有信息编码为一个定长的向量的限制中解放出来。使用这种新方法,信息可以分布在整个注释序列中,译码器可以相应有选择地检索这些注释信息。
通常RNN读取输入序列 x \textbf{x} x按顺序从第一个符号 x 1 x_1 x1读到最后一个 x T x x_{T_x} xTx。在所提出的模型中,我们希望每个词的注释不仅能够概括序列中其之前词的信息,还能概括其之后词的信息。因而我们提出使用在语音识别(Speech Recognition)中成功应用的双向RNN(BiRNN)。
一个BiRNN包含一个前向RNN和一个后向RNN。前向RNN f ⇀ f^\rightharpoonup f⇀从 x 1 x_1 x1读到 x T x x_{T_x} xTx,并计算一个前向的隐藏层状态序列 ( h 1 ⇀ , . . . , h T x ⇀ ) (h^{\rightharpoonup}_1,...,h^{\rightharpoonup}_{T_x}) (h1⇀,...,hTx⇀),而后向RNN f ↼ f^\leftharpoonup f↼从 x T x x_{T_x} xTx读到 x 1 x_1 x1,最终得到一个后向隐藏状态序列 ( h 1 ↼ , . . . , h T x ↼ ) (h^{\leftharpoonup}_1,...,h^{\leftharpoonup}_{T_x}) (h1↼,...,hTx↼)。
我们通过将前向隐藏状态 h j ⇀ h^{\rightharpoonup}_j hj⇀和后向隐藏状态 h j ↼ h^{\leftharpoonup}_j hj↼连接得到词 x j x_j xj的注释,即: h j = [ h j ⇀ T ; h j ↼ T ] T h_j=[h^{\rightharpoonup T}_j;h^{\leftharpoonup T}_j]^T hj=[hj⇀T;hj↼T]T。通过这样的方式,注释 h j h_j hj就能够概括前向词与后向词的信息。由于RNN倾向于更好地表示周围的输入,因此注释 h j h_j hj将关注 x j x_j xj附近词的信息。译码器和“对齐模型”将稍后将使用此注释序列来计算上下文向量。
在 English-French \textbf{English-French} English-French上评估了我们提出的模型。我们使用 ACL WMT’14 \textbf{ACL WMT'14} ACL WMT’14提供的双语平行语料。作为对比,我们也展示了Cho et,al.提出的基于Encoder-Decoder的RNN模型,对于两种模型,我们使用相同的训练步骤和数据集。
暂略
暂略
在基础Encoder-Decoder模型中,Encoder将输入序列编码得到一个定长的上下文向量,对于过长的句子,用定长的上下文向量表示输入句子可能会造成一定程度的信息损失,针对这个问题,作者提出了软搜索和“对齐模型”的概念,允许解码器选择性地在源句中搜索与目标词相关的部分,并在不同句子长度的数据集上对比基础Encoder-Decoder架构验证了所提模型的有效性。所提出的“对齐模型”即让解码器拥有了一种“注意力机制”,这也是注意力机制首次在翻译模型中被提出,注意力机制在之后的翻译模型中得到了广泛的应用,。