Attention 机制

概述

自上而下的有意识的注意力,称为聚焦式注意力(Focus Attention). 聚焦式注意力也常称为选择性注意力聚焦式注意力是指有预定目的、依赖任务的,主动有意识地聚焦于某一对象的注意力

自下而上的无意识的注意力,称为基于显著性的注意力(Saliency Based Attention).基于显著性的注意力是由外界刺激驱动的注意,不需要主动干预,也和任务无关.

在计算能力有限的情况下, 注意力机制也可称为注意力模型.注意力机制(Attention Mechanism)作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载问题的主要手段

Attention的引入

Attention 注意力机制浅析_sed表示Attention 注意力机制浅析_sed_02组输入信息,其中Attention 注意力机制浅析_人工智能_03 维向量Attention 注意力机制浅析_sed_04 Attention 注意力机制浅析_机器学习_05表示一组输入信息。为了节省计算资源,不需要将所有信息都输入神经网络,只需要从Attention 注意力机制浅析_人工智能_06中选择一些和任务相关的信息。 注意力机制的计算可以分为两步:一是在所有输入信息上计算注意力分布,二是根据注意力分布来计算输入信息的加权平均。

为了实现注意力机制,引入一个和任务相关的向量作为查询向量(query vector),并通过一个注意力打分机制计算输入向量与查询向量之间的相关性

给定一个和任务相关的查询向量Attention 注意力机制浅析_人工智能_07,用注意力变量Attention 注意力机制浅析_人工智能_08来表示被选择信息的索引位置,即Attention 注意力机制浅析_点积_09 表示选择了第Attention 注意力机制浅析_机器学习_10 个输入向量.为了方便计算,我们采用一种“软性”的信息选择机制. 首先计算在给定Attention 注意力机制浅析_人工智能_07Attention 注意力机制浅析_人工智能_06下,选择第Attention 注意力机制浅析_机器学习_10个输入向量的概率Attention 注意力机制浅析_点积_14
Attention 注意力机制浅析_点积_15
其中Attention 注意力机制浅析_点积_14称为注意力分布( Attention Distribution ) , sAttention 注意力机制浅析_sed_17

Attention 注意力机制浅析_人工智能_18
其中Attention 注意力机制浅析_深度学习_19为可学习的参数,D为输入向量的维度.

理论上,加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高.

当输入向量的维度Attention 注意力机制浅析_人工智能_03比较高时,点积模型的值通常有比较大的方差,从而导致 Softmax 函数的梯度会比较小。因此,缩放点积模型可以较好地解决这个问题. 双线性模型是一种泛化的点积模型。公式中Attention 注意力机制浅析_深度学习_21,双线性模型可以写为Attention 注意力机制浅析_深度学习_22,即分别对Attention 注意力机制浅析_sed_23Attention 注意力机制浅析_人工智能_07进行线性变换后计算点积。相比点积模型,双线性模型在计算相似度时引入了非对称性。

注意力分布Attention 注意力机制浅析_点积_14

Attention 注意力机制浅析_机器学习_26
其中注意力机制如图所示

Attention 注意力机制浅析_sed_27

此为:注意力是软性注意力,其选择的信息是所有输入向量在注意力分布下的期望

Attention机制的变体

硬性注意力机制

若以选取最高概率的一个输入向量,即
Attention 注意力机制浅析_sed_28
其中Attention 注意力机制浅析_sed_29

另一种硬性注意力可以通过在注意力分布式上随机采样的方式实现.

硬性注意力的一个缺点是基于最大采样或随机采样的方式来选择信息,使得最终的损失函数与注意力分布之间的函数关系不可导,无法使用反向传播算法进行训练.因此,硬性注意力通常需要使用强化学习来进行训练.为了使用反向传播算法,一般使用软性注意力来代替硬性注意力.

基于键值对的注意力机制

Attention 注意力机制浅析_点积_30表示Attention 注意力机制浅析_sed_02组输入信息,给定任务相关的查询向量Attention 注意力机制浅析_点积_32时,注意力函数为

Attention 注意力机制浅析_人工智能_33
其中Attention 注意力机制浅析_人工智能_34为打分函数.

当𝑲 = 𝑽 时,键值对模式就等价于普通的注意力机制

多头注意力机制

多头注意力机制是采用多个查询向量Attention 注意力机制浅析_点积_35,可以并行地从输入信息中选取多组信息。
Attention 注意力机制浅析_机器学习_36
其中Attention 注意力机制浅析_sed_37表示向量拼接.

自注意力机制

不同的输入长度,其连接权重的大小也是不同的.自注意力也称为内部注意力(Intra Attention).这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,这就是自注意力模型(Self-Attention Model).

为了提高模型能力,自注意力模型经常采用查询-键-值(Query-Key-Value,QKV)模式

Attention 注意力机制浅析_深度学习_38

假设输入序列为Attention 注意力机制浅析_深度学习_39,输出序列为Attention 注意力机制浅析_深度学习_40 Attention 注意力机制浅析_sed_41

首先将每个输入Attention 注意力机制浅析_深度学习_42,我们首先将其线性映射到三个不同的空间,得到查询向量Attention 注意力机制浅析_深度学习_43、键向量Attention 注意力机制浅析_sed_44和值向量Attention 注意力机制浅析_机器学习_45
对于整个输入序列Attention 注意力机制浅析_人工智能_06,线性映射过程可以简写为

Attention 注意力机制浅析_点积_47
然后对每一个查询向量Attention 注意力机制浅析_深度学习_48,利用键值对注意力机制,可以得到输出向量Attention 注意力机制浅析_人工智能_49,

Attention 注意力机制浅析_sed_50