对于像下图这样很长的输入文本来说,我们特别希望这个隐藏状态,能够充分概括输入序列,解码器就能够根据这一个向量表征来很好的完成转换了。
但这很难,灾难性的遗忘出现了。比如上面说的这两个段落的字,在看到这的时候,你还能记得多少?能把它们翻译成英语吗?
除此之外,还有一个问题。在基于RNN的模型中,不管原始文本的句子有多长,都会被压缩成一个固定长度的向量。
在解码的时候,会有各种麻烦事,也没办法确定准确的信息。特别是句子很长的时候,更麻烦。
怎么办?“注意力机制”登场2014年,DeepMind团队发表Recurrent Models of Visual Attention,提出了注意力机制,并将其用于图像分类的任务中。
与CNN相比,使用注意力机制的RNN取得了非常好的效果,直接带起了一波研究注意力机制的热潮。
很快,注意力就出现在了神经机器翻译中。
在ICLR 2015上,蒙特利尔大学的Yoshua Bengio团队发表了一篇论文,在神经机器翻译中引入了注意力机制。(这篇论文在2014年9月,就已经提交到了arXiv上)
注意力,是编码器和解码器之间的接口。有了它,解码器接收到的,就不仅仅是一个统一的向量表征了,还有来自编码器每个时间步的向量表征,比如下图中的绿色节点。