参考链接:
Intuition
类似于人的注意力机制。
在观察某幅图像时,人不会将注意力平均的分散到图像的每一处,而是根据需求重点关注特定的某一部分。当我们发现图像的某一部分经常出现我们需要注意的东西的时候,我们就会在将来出现类似场景时把注意力放在图像的这部分上。
从数学角度来理解,相当于从序列中学习到每一个元素的重要程度,然后为其赋予一系列注意力分配系数,按照权重参数将元素合并。
Application
- 在机器翻译、语音识别应用中,为句子中的每个词赋予不同的权重,使神经网络模型的学习变得更加灵活。
- 做为一种对齐关系,解释翻译输入/输出句子之间的对齐关系,解释模型到底学到了什么知识,为我们打开深度学习的黑箱,提供了一个窗口。
Model
图一:传统的Seq2Seq模型
参数解释:
[]表示输入序列,每个元素代表输入序列中的一个单词向量;
c是固定长度隐向量(称之为背景向量或者上下文向量);
[]表示输出序列;
T, T’分别代表输入序列长度和Decoder层隐状态数目。
模型解释:
Encoder和Decoder分别是两个RNN;
Encoder将输入序列编码成为固定长度隐向量c;
Decoder以c为预测y1的初始向量,同时作为背景向量指导输出序列中每一个步骤的y的输出。
数学表示:
假设hi为Encoder中的隐状态,那么Encoder的计算过程用公式表示为:
假设si为Decoder中的隐状态,那么Decoder的计算过程用公式表示为:
可以看到,传统的Seq2Seq模型对于输入序列X缺乏区分度。
图二:Attention机制图解
参数解释:
[]表示输入序列,每个元素代表输入序列中的一个单词向量;
hi表示Encoder模块RNN的隐状态;
表示Encoder端的第j个单词与Decoder端的第i个单词之间的权值和影响程度;
sj表示Decoder模型RNN的隐状态;
[]表示输出序列;
T, T’分别代表输入序列长度和Decoder层隐状态数目。
模型解释:
可以看到,最大的变化在于背景向量ci的计算方式(图中改成了Bi-RNN,但是这不是重点)
不是简单的直接将隐状态累加,而是加权累加。
权值的计算来自于encoder端单词对于decoder端单词的影响程度。
数学表示:
其中,a代表相关性算符,衡量encoder端的j个词对于decoder端的第i个词的对齐程度/影响程度,计算的时候往往依赖encoder端的第j个隐状态和decoder端的第i-1个隐状态(因为第i个隐状态还没有计算出来呀)。
不同的计算方式代表着不同的Attention模型。
Concrete Model
Self-Attention
Self-Attention的基本结构如上图所示。
直观理解:
首先对于模型
来源:CSDN
作者:学习飞行的山药
链接:https://blog.csdn.net/Rosalind_Xu/article/details/103152573