Seq2Seq
在开始Attention之前,我们先简单回顾一下Seq2Seq模型,传统的机器翻译基本都是基于Seq2Seq模型来做的,该模型分为encoder层与decoder层,并均为RNN或RNN的变体构成,如下图所示
在encode阶段,第一个节点输入一个词,之后的节点输入的是下一个词与前一个节点的hidden state,最终encoder会输出一个上下文向量c(context),这个c又作为decoder的输入,每经过一个decoder的节点就输出一个翻译后的词,并把decoder的隐状态和当前节点的输出作为下一层的输入。该模型对于短文本的翻译来说效果很好,但是其也存在一定的缺点,如果文本稍长一些,就很容易丢失文本的一些信息,bleu得分也会较低(关于什么是bleu请看这篇博客https://blog.youkuaiyun.com/CharlesOyfz/article/details/90668423),而Attention就是为了解决这个问题。下图是Attention模型和普通Seq2Seq模型根据句子长度和bleu得分的对比(蓝色为普通seq2seq,绿色为attention模型):
Attention,注意力,该模型在decode阶段,会选择最适合当前节点的c作为输入。
注意力机制在encoder阶段,提供了更多的数据给到decoder阶段,encoder会把所有的输入节点的隐状态形成一个加权和