Neural Machine Translation by Jointly Learning to Align and Translate
3 学习对齐和翻译
3.1解码器
Si是decoder的在i时刻的隐状态
应该注意的是,与现有的编码器-解码器方法不同 ,这里概率取决于每个目标词yi的上下文向量ci。上下文向量ci依赖于一系列注释 h 1 , . . . , h T x h_1,...,h_{T_x} h1,...,hTx(encoder的一系列隐状态)
每个注释hi包含关于整个输入序列的信息,重点关注围绕输入序列第i个单词的部分。我们将在下一节详细解释如何计算注释。
然后,将上下文向量ci计算为这些注释hi的加权和:
ai,j的计算公式为
ei,j=A(si-1,hj)
A()是一个对齐模型,它对位置j附近的输入和位置i的输出匹配程度进行评分。分数是基于decoder RNN隐藏状态 si-1(就是LSTM的输出,在softmax之前的向量)以及输入句的j-th标注hj(encoder在j时刻的输出)。
我们将对齐模型A参数化为一个前馈神经网络,该神经网络与该系统的所有其他组件共同训练。注意,与传统的机器翻译不同,对齐不被认为是一个潜在的变量。相反,对齐模型直接计算软对齐(soft alignment),从而允许损失函数的梯度反向传播。该梯度可用于联合训练对齐模型和整个翻译模型。设aij为目标词yi与源词xj对齐或从源词xj翻译过来的概率。然后,第i个上下文向量ci是所有具有aij概率的注释的期望注释。概率aij或其关联能量eij反映了注释hj相对于先前的隐藏状态si-1在决定下一个状态si和生成yi中的重要性。直观地说,这在解码器中实现了注意机制。译码器决定要注意源句的哪一部分。通过让解码器具有注意机制,我们将编码器从必须将源语句中的所有信息编码为固定长度向量的负担中解脱出来。使用这种新方法,信息可以在整个注释序列中传播,而相应的解码器可以有选择地检索这些注释。
3.2 Encoder: Bidirectional RNN for Annotating Sequences The usual
encoder就是一个双向RNN。把t时刻encoder的输出正向ht和反向ht连接起来(concatenating)
3.3 Architectural Choices
使用n个门控隐藏单元的RNN的新状态si由
圆圈是 element-wise multiplication,
zi是更新门的输出(参见下面)。计算所提出的更新状态~si**(参考encoder-decoder)**
e ( y i − 1 ) ∈ R m e(y_{i-1})\in\Bbb R^m e(yi−1)∈Rm是词yi-1的m维嵌入。ri是复位门的输出(如下图所示)。当yi表示为一个1- k向量时,e(yi)就是一个嵌入矩阵的列 E ∈ R m × K E\in\Bbb R^{m\times K} E∈Rm×K只要有可能,我们就省略偏置项,以使方程更简洁。
更新的gates zi允许每个隐藏的单位维持它以前的激活,而重置的gates ri控制从以前的状态应该重置多少和什么信息。我们用
在解码器的每个步骤中,我们将输出概率(式(4))计算为一个多层函数。我们使用maxout单位的单个隐含层(Goodfellow et al., 2013),并使用softmax函数对输出概率(每个单词一个)进行规范化
3.3.2 Alignment Model
对齐模型的设计应考虑到需要对每个长度为Tx和Ty的句子对的Tx x Ty次进行评估。为了减少计算,我们使用单层多层感知器