在机器翻译领域,传统的RNN采用 encoder-decoder模型,该模型首先由输入文本得到一串固定长度的向量(向量中包含了输入的信息),后面再由该向量作为输入来得到翻译的内容,如下图所示:
这个模型存在以下问题:
- encoder需要将所有的输入表示为一个的向量,这个过程可能造成信息丢失,尤其对于很长的文本序列。
- decoder需要根据encoder计算的单一向量,来得到所有的输出序列,对于RNN模型是一个挑战。
引入attention模型后的RNN模型如下图所示:
attention 模型位于encoder和decoder之间,其根据encoder的输出向量h_j和decoder的状态向量s_i计算得到相应的上下文向量。具体计算公式如下:
其中,K是上下文窗口的大小,如果设置为全文长度,则K的值为输入序列的长度。α_ij是权重向量,标识在decoder进行每一个输出时,应该关注的每一个输入单词的权重大小。α_ij通过一个全连接神经网络学习得到,计算公式如下: