文章目录
翻譯地址:
https://towardsdatascience.com/intuitive-understanding-of-attention-mechanism-in-deep-learning-6c9482aecf4f
总览
https://zhuanlan.zhihu.com/p/31547842
0.了解seqtoseq模型,lstm,gru,变长输入映射到变长输出
1.什么是attention
2.不同的对齐方式确定了不同的attention
3.soft hard attention
1.简介
注意力是深度学习社区中最有影响力的想法之一。即使这种机制现在用于各种问题,如图像字幕等,它最初是在使用Seq2Seq模型的神经机器翻译的背景下设计的。在这篇博文中,我将考虑与运行示例相同的问题来说明这个概念。我们将使用注意力来设计一个将给定的英语句子翻译成马拉地语的系统,这与我在之前的博客中考虑的完全相同。
首先我们来看seqtoseq模型出了什么问题,
seq2seq模型通常由编码器 (encode)- 解码器(decode)架构组成,其中编码器处理输入序列并将信息编码/压缩/概括为固定长度的上下文向量(也称为“思想向量”)。该向量是整个输入序列的良好的压缩特征。然后用该上下文向量初始化解码器,使用该上下文向量开始生成变换后的输出。
这种固定长度的上下文矢量设计的一个关键和明显的缺点是系统无法记住更长的序列。一旦处理完整个序列,通常会忘记序列的早期部分。注意机制的诞生是为了解决这个问题。
让我们把它分解成更精细的细节。由于我已经解释了在我以前的博客中理解注意力所需的大部分基本概念,因此我将直接跳到问题的主题,而不再进一步说明。
2.注意力背后的核心理念
为了说明的目的,我将借用我之前博客中用于解释Seq2Seq模型的相同示例。
输入(英文)句子:“Rahul是个好孩子”
目标(马拉地语)句子:“राहुलचांगलामुलगाआहे”
唯一的变化是,我在前面的解释中使用的不是LSTM层,而是在这里我将使用GRU层。原因是LSTM有两个内部状态(隐藏状态和单元状态),GRU只有一个内部状态(隐藏状态)。这将有助于简化概念和解释。
回想下面的图表,其中我总结了Seq2Seq建模的整个过程过程。
在传统的Seq2Seq模型中,我们丢弃编码器的所有中间状态,并仅使用其最终状态(向量)来初始化解码器。该技术适用于较小的序列,但随着序列长度的增加,单个载体成为瓶颈,并且很难将长序列汇总到单个载体中。这种观察是凭经验进行的,因为注意到随着序列尺寸的增加,系统的性能急剧下降。
注意力背后的核心思想不是抛弃那些中间编码器状态,而是利用所有状态以构造解码器生成输出序列所需的上下文向量。
3.为什么叫做attention
让我们将编码器的每个中间状态命名为:
请注意,由于我们使用的是GRU而不是LSTM,因此我们在每个时间步都只有一个状态而不是两个状态,因此有助于简化说明。另请注意,特别是在序列较长的情况下,注意力是