深度学习-注意力机制

注意力机制

软注意力机制

我们很容易想到使用全连接层、RNN、CNN来进行表示学习,提取特征。但他们各自都存在一些缺点。

全连接层的输入不可以为边长,CNN提取的特征被限制在卷积核大小内,RNN则存在长程依赖问题。

attention机制的提出给出了对于文本特征表示学习的新方法,它借鉴了人脑处理信息的机制。我们知道人每时每刻都要接收大量的信息,而我们会对这些信息进行筛选,忽略掉我们不关心的信息,注意到重要的信息。attention机制也是这样。拿文本信息举例image-20211109223220943

q为查询向量,我们想注意到与q关系密切的那些token,就对每一个token xn进行打分。这里用softmax的结果表示每个token对于q的相关程度即注意力α。再根据阿尔法计算输入信息的加权平均。

打分函数s

通常这里的s可以是

image-20211109224839746

硬注意力机制

就是说α只取0或1,也就是只选最于q相关的token进行输出,通常在RL中使用

键值对注意力机制

把每个输入信息用(K,V)键值对来表示,计算注意力用K,加权乘的是V,这样把两步分开,可以使模型更加强大

image-20211109225011483

多头注意力机制

用多个查询q,同时对输入信息中选取多组信息,每个注意力头关注输入信息的不同部分

image-20211109225247396

自注意力机制self-attention

N to N Encoder,对于文本序列,分别将每个token作为查询向量q,对所有token求注意力再加权平均,作为该token的hidden state。

image-20211109230014113

self-attention的QKV模式

用三个参数矩阵把x序列映射到QKV

image-20211109230537127

Multi-head self attention

image-20211109230731029

把上面的多来几次,拼接后经过全连接层。


一个好奇的人