原文:NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
链接:https://arxiv.org/pdf/1409.0473.pdf
这篇论文为循环神经网络(RNN)引入了注意力机制,以提升长距离序列建模的能力,使得RNN可以更准确地翻译更长的句子,也是原始Transformer模型的开发动机。
RNN Encoder-Decoder架构
encoder读取输入序列,decoder输出。假设输入为,输出为向量
。最常用的RNN表述如下:
其中是t时刻输入的隐藏状态,本文中也叫做annotation,
是从隐藏状态生成的向量,表示整个输入的上下文信息。f和q是非线性函数。
解码器不是输出预测的翻译结果,而是预测的输出句子的概率。输出句子=
每个都由之前预测的概率
以及全篇的上下文向量
决定,即:
在RNN的形式下,概率函数用如下方式计算:
,
表示t时刻的隐藏状态,但是不同于
该文章定义新的架构:
将条件概率等式改为:
其中
,表示i处状态和前一刻状态
,前一刻预测词
以及该处上下文
有关。s是与输出状态有关的隐藏状态,而h只是输入的隐藏状态,与输出是什么没有关系。
此处最大的和之前的encoder-decoder架构不同之处在于是对于每一个i不同的。这是容易理解的,上下文的描述子
应该是不同时刻发生变化的,也就是说整个上下文不能每个位置都用同一个向量描述,因此改为加权的所有时刻的上下文,即
。
利用隐藏状态
来计算,j离i时刻越近,应该越相关。
的计算作者使用了如下公式
其中权重和输出状态
与输入状态
相关度有关,即
中
的权重是
和
的相关度。
公式如下
其中
表示相似度指标。但是这个指标是参数化的,随着网络优化,a的参数随之改变。
整体来看,是输入即原文,
是输入相关的隐藏状态,也就是原文每个词的状态,和t之前时刻输入均有关;
是输出前的状态,直接影响输出
;
是当前的上下文,与上文有关也与下文有关,是输入的隐藏状态
的线性组合,权重是输入隐藏状态
和输出前隐藏状态
的相关度。在i处的上下文
,就是即将翻译出第i个词,原文中哪些词可能影响该处词的意义,所以可以看成原文中所有词意义的数学期望。通俗理解,就是在翻译过程中,我翻译的前面的单词的意思是
,然后再参考原文中所有词
,找到相关的词,假设相关度是
,然后我就可以将原文中相关上下文表达的内容放在一起,放到
中,给下一个要翻译的词提供参考。将
视为在已知前一状态
时,对
的注意力,这让无用的信息被抑制了。
待学习参数有网络参数,包括f的参数,g的参数,也包括a的参数。对a的学习,让网络自己学到(至少是我们希望网络自己学到)翻译出的单词的意思和原文的单词的意思的相关度。