Attention小结
[Encoder–Decoder Model](#Encoder–Decoder Model)
[Attention Mechanism](#Attention Mechanism)
References
Encoder–Decoder Model
在论文1中提出了一种用来处理机器翻译任务的新模型 Encoder–Decoder Model 。
[外链图片转存失败(img-mzXcN5Vl-1567470086699)(./pics/encoddecod.png)]
-
编码器将输入源语言句子 编码为一个固定长度的语义向量 C。
-
解码器翻译每个词时,语义向量 C 都会参与其中的计算。
,其中 是解码器中RNN在 时刻的隐状态
不过该模型有明显的缺点:
- 固定长度的语义向量无法完全表达整个源语言句子的信息。
- 随着源语言句子长度的增加,由于向量长度固定,先前编码好的信息会被后来的信息覆盖,丢失很多信息。
- 语义向量参与到解码器中每个词翻译的计算时,无法着重表达出每个词对应翻译后的词的重要度。
Encoder–Decoder Model 中的编码器和解码器一般不是固定的,可以为 RNN、CNN、Attention。
Attention Mechanism
为了解决以上的几个问题,论文2中在Encoder–Decoder Model的基础上提出了一种新的对齐机制,也就是注意力机制,该文章提出的为 Soft-Attention,当然也是用在机器翻译任务中。
[外链图片转存失败(img-SLbKcGMS-1567470086701)(./pics/softatten.png)]
- 论文中将编码器解码器都换成了双向RNN,这样能更好的捕获长句子的信息。
- 对于target中的每个 的产生,会产生不同的语义向量 参与计算。
对与第二点语义向量 的产生,以下详细说明。
-
假如在解码器 时刻,要得到结果 ,公式如下:
,其中 就是图中的加号产生的结果,具体计算如下:
没错有没有发现 就像是 的权重,而 就像 的加权和。
-
那么, 又是怎么产生的?
在训练到 时,用 与源语言句子中输入的每一个词 的隐向量 进行余弦相似度计算,相当于求与每个输入词的相似度,经过 转换成分数,结果就是得到 T 个 。其实论文中使用了 一个 feedforward neural network 作为相似度比较方法。
计算公式:
很多文章把 Attention机制看作是查表操作,如下图所示:
Query 是 ,Key和Value相同,代表每一个 。通过计算Query和各个Key的相似性,得到每个Key对应Value的权重 ,然后对Value进行加权求和,即得到了最终的Attention数值,即 。
Attention的整体计算流程如下:
还有一种 Self-Attention,这个在 Transformer模型中介绍。
References
Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
Neural Machine Translation by Jointly Learning to Align and Translate
ine Translation
Neural Machine Translation by Jointly Learning to Align and Translate