注意力模型---Attention Model
- 1、Soft Attention Mode
- 1.1 什么是Soft Attention Mode
- 1.1 公式介绍
- 2、四种注意力中的打分函数
- 2.1 加性注意力(additive attention)
- 2.2 点积注意力(multiplicative attention)与双线性注意力(MLB)
- 2.3 缩放点积模型
- 3、注意力变体
- 3.1 硬性注意力机制
- 3.2 自注意力(Self-Attention)
- 4、Attention 带来的算法改进
1、Soft Attention Mode
1.1 什么是Soft Attention Mode
“Neural machine translation by jointly learning to align and translate”这篇论文提出了soft Attention Model,并将其应用到了机器翻译上面。所谓Soft意思是在求注意力分配概率分布的时候,对于输入句子X中任意一个单词都给出个概率,是个概率分布。
1.1 公式介绍
下面介绍一下理论文中提到的公式
在原版的Seq2Seq和添加了attention机制的Seq2Seq相比,在公式上的差别就是在式子Si中的C有没有i。因为这个i就代表了是不是每一个时间步骤上添加不同的背景向量。
Global Attention Mode其实就是softAttention Mode。在Seq2Seq的Decoder的过程中,每一个时间步的Context vector需要计算Encoder中每一个单词的注意力权重,然后加权得到。
Si代表每个Decoder的隐藏层输出
Ci表示的是背景向量,它可以由Encoder的隐藏层输出状态hj的加权平均数得出,其中状态所加的权就是注意力权重 ai。
**注意力权重 ai**可以看出就是一个softmax,用来归一化隐藏层si-1 与 Encoder的隐藏层输出状态hj的对齐程度评估。
eij是一种对齐模式,也就是注意力函数,这当中有着很多的变体。下面来看看这四种变体都有什么。
2、四种注意力中的打分函数
2.1 加性注意力(additive attention)
加性注意力是最经典的注意力机制 (Bahdanau et al., 2015) ,它使用了全连接层来计算注意力的分配:
其中,Pi表示Decoder的隐藏层输出;q表示Encoder所有的隐藏层输出;V,W,U都是可以训练的参数。
加性模型引入了可学习的参数,将向量和原始输入向量
2.2 点积注意力(multiplicative attention)与双线性注意力(MLB)
乘法注意力(Multiplicative attention)(Luong et al., 2015) 通过计算以下函数而简化了注意力操作,是直接用Decoder的hidden state 点乘所有的Encoder的hidden state。
其中,ht是decoder中前一个隐藏层输出的结果;hs是encoder中所有的hidden state组合成的矩阵。
上面第一个公式有一个缺陷, ht的行数和hs的行数必须是相等的,也就要使得encoder和decoder的隐藏层长度是一样的,这样的条件太苛刻了,当不相等的时候公式便不可行,所以采用在中间加上权重矩阵的做法。
2.3 缩放点积模型
注意力机制不仅能用来处理编码器或前面的隐藏层,它同样还能用来获得其他特征的分布,例如阅读理解任务中作为文本的词嵌入 (Kadlec et al., 2017)。然而,注意力机制并不直接适用于分类任务,因为这些任务并不需要情感分析(sentiment analysis)等额外的信息。在这些模型中,通常我们使用 LSTM 的最终隐藏状态或像最大池化和平均池化那样的聚合函数来表征句子。
其中是Decoder的隐藏层输出,是encoder中所有的hidden state组合成的矩阵。为输入向量的维度。
当输入向量的维度比较高的时候,点积模型通常有比较大的方差,从而导致Softmax函数的梯度会比较小。因此,缩放点积模型通过除以一个平方根项来平滑分数数值,也相当于平滑最终的注意力分布,缓解这个问题。
3、注意力变体
3.1 硬性注意力机制
直接从输入句子里面找到某个特定的单词,然后把目标句子单词和这个单词对齐,而其它输入句子中的单词硬性地认为对齐概率为0,这就是Hard Attention Model的思想。Hard AM在图像里证明有用,但是在文本里面用处不大,因为这种单词一一对齐明显要求太高,如果对不齐对后续处理负面影响很大。
3.2 自注意力(Self-Attention)
关键值注意力 (Daniluk et al., 2017) 是最近出现的注意力变体机制,它将形式和函数分开,从而为注意力计算保持分离的向量。它同样在多种文本建模任务 (Liu & Lapata, 2017) 中发挥了很大的作用。
具体来说,关键值注意力将每一个隐藏向量 hi 分离为一个键值 ki 和一个向量 vi:[ki;vi]=hi。
4、Attention 带来的算法改进
Attention机制为机器翻译任务带来了曙光,具体来说,它能够给机器翻译任务带来以下的好处:
- Attention显著地提高了翻译算法的表现。它可以很好地使Decoder网络注意原文中的某些重要区域来得到更好的翻译。
- Attention解决了信息瓶颈问题。原先的Encoder-Decoder网络的中间状态只能存储有限的文本信息,现在它已经从繁重的记忆任务中解放出来了,它只需要完成如何分配注意力的任务即可。
- Attention减轻了梯度消失问题。Attention在网络后方到前方建立了连接的捷径,使得梯度可以更好的传递。
- Attention提供了一些可解释性。通过观察网络运行过程中产生的注意力的分布,我们可以知道网络在输出某句话时都把注意力集中在哪里;而且通过训练网络,我们还得到了一个免费的翻译词典(soft alignment)!还是如下图所示,尽管我们未曾明确地告诉网络两种语言之间的词汇对应关系,但是显然网络依然学习到了一个大体上是正确的词汇对应表。