Neural Machine Translation by Jointly Learning to Align and Translate

摘要

  在基于encoder-decoder的框架中,把source sentence 编码成一个固定长度的向量丢给decoder解码来生成翻译.在这个文章中,作者猜想用一个固定长度的向量是这个框架的瓶颈,然后提出了一种软对齐方法(注意力机制),使得模型可以在预测单词的时候可以检索对自身重要的词,就是在预测apple时候让模型可以在原句中找到苹果这个关键的词,然后翻译.

模型结构

  在基于原来的encoder-decoder框架的基础上,模型引入了对齐的结构(注意力机制).
attenstion

  定义条件概率
$$p(y_i|y_1,…,y_{(i-1)}, X)=g(y_{i-1}, s_i, c_i)$$
  \(s_i\)是一个decoder中time\(i\)的hidden state,可以由这个得到
$$s_i=f(s_{i-1},y_{i-1},c_i)$$
  与之前encoder和decoder不一样,\(c_i\)对于每一个\(y_i\)都是不一样的.也就是每一个\(y\)的生成所参照的\(c\)都是不一样的,那么\(c_i\)的计算方法可以用以下公式计算:

$$c_i=\sum_{j=1}^{T_x} a_{ij}h_j$$
  其中\(a_{ij}\)可理解为第j个词生成时对于第i个词的关注度.计算方式如下.
$$a_{ij}=\frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ij})}​$$

$$e_{ij}=a(s_{i-1}, h_j)$$
  这里\(a(s_{i-1}, h_j)\)的计算公式也就是
$$e_{ij}=v_a^T tanh(W_as_{i-1}+U_ah_j)$$
  其中\(u_a\in R^{ n’}, W_a\in R^{ n’*n}, U_a\in R^{ n’*n}\),n’是attention size,那么公式要表达的是将\(s_{i-1}\)和\(h_j\)映射成\(n’*1\)的向量,两者相加后再与一个\(1*n’\)的向量求点积得到的一个值(为scala值),代表了一个注意的程度,最后softmax一下,得到\(a_{ij}\).将其可视化可以看到
attention_show
  还是挺好理解的这个图.

链接

论文 Neural Machine Translation by Jointly Learning to Align and Translate
数据集 WMT14

注释

所有数据,图表均来源于论文.