首页 > 编程知识 正文

attention用法归纳,attention理解

时间:2023-05-06 14:40:26 阅读:199701 作者:4358

主要的内容分为以下几个部分:

1、 注意力机制的定义与原理
2、 注意力中常见的对齐方式
3、 基本的注意力体制结构
4、 脱离Encoder-Decoder结构的attention

(其中借鉴了多篇CSDN以及简书的文章,但是匆忙没有记录文章链接,希望原作者谅解)

具体来说:
学习到的attention的相关内容包括:
1.注意力机制的定义与原理
视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。
深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。
注意力机制的定义和原理:
可以看成是一个组合函数,通过计算注意力的概率分布,来突出某个关键输入对输出的影响。一般大多数注意力机制 均基于Encoder-Decoder框架,特别是在文本处理领域中常用的Encoder-Decoder抽象框架
注意力机制依托于Encoder-Decoder框架:

该模型将一个变长的输入
映射到一个变长输出
其中,Encoder(编码器)把一个变长的输入序列X,通过非线性变换转化为一个中间的语义表示:

Decoder(解码器)的任务是根据输入序列X的中间语义表示C和先前已经生成的 来预测并生成 时刻的输出

其中f() g()是非线性转化函数。由于传统的Encoder-Decoder框架对输入序列 X缺乏区分度,所以引入注意力机制来解决这个问题,提出的模型如下所示:

其中,st-1是Decoder端在 时刻的隐状态,yt 是目标词,ct 是上下文向量,则t时刻的隐状态:

依赖于编码端输入序列的隐藏层表示,通过加权处理后可表示:

表示Encoder端第j个词的隐向量,它包含整个输入序列的信息,但重点关注第j个词周围的部分。T是输入端长度, 表示Encoder端第j个词对Decoder端第t个词的注意力分配系数,并且 的概率之和为1(体现了概率归一softmax)

其中, 表示一个对齐模型,用于衡量Encoder端位置j的词相对于Decoder端位置t的词的对齐程度/影响程度。通常将对齐模型a参数化作为前馈神经网络与系统中其余部分共同训练。
2、 注意力中常见的对齐方式
常见的对齐方式有四种:

加性注意力

其中 W,U和v 表示权重矩阵,u为单向隐藏层单元数。加性注意力是最经典的注意力机制,通过使用隐含层的前馈神经网络来计算注意力的权重,由于 uh不依赖于t,可提前计算以最小化计算量。
2) 乘法(点积)注意力

其中,Wa 表示权重矩阵,乘法注意力和加性注意力在复杂度上是相似的,但由于乘法注意力可以使用矩阵操作,使其在实践中计算速 度更快,且存储性能更高。在低维度解码器状态中两者性能相似,但在高维情况上,加性注意力的性能更优。
3) 自注意力

其中,H 表示输入序列的隐向量。Wa 是一个权重矩阵, Va是一个参数向量,其中 da为一个自定义的超参数,r为需要从输入序列中抽取的信息个数,A即为最终得到的注意力矩阵。由此可见自注意力机制通常不需要其他额外信息,它能够关注自身进而从中抽取相关信息
4) 关键值注意力
关键值注意力是最近提出的注意力机制的变体,它将形式和函数分开,从而为注意力计算保持分离的向量。具体而言,关键值注意力将 每一个隐藏向量 分离为一个键 用于计算注意力分布 和一个值 用于编码下一个词的分布和上下文表示:


其中,W1,W2 和va 是权重矩阵,L为注意力窗体的长度,l为所有单元为1的向量。
3、 基本的注意力体制结构
① 软注意力机制

软注意力机制考虑所有的输入,但并不是给每个输入相同的权重,而是更关注某些特定的输入。如下图所示,软注意力机制会为每一个特征分配一个注意力权值,即一个概率分布。其特定区域信息的上下文向量Ctj 可直接通过比重加权求和得到

软注意力机制是参数化的,光滑且可微,可以被嵌入到模型中直接训练,且梯度可以通过注意力机 制模块反向传播到模型的其他部分。
②硬注意力机制
硬注意力机制是一个随机过程,在某一时刻只关注一个位置信息,注意力相对集中,常采用one-hot形式。
注意力权重 在此所起的作用是表明该位置是否被选中,只有0,1两个选项。 是一个one-hot指示器,值为1表示第j个位置被选中,否则为0。为了实现梯度的反向传播,需要采用蒙特卡罗采样方法来估计模块的梯度。
两种注意力机制都有各自的优点,软注意力机制相对发散,而硬注意力机制会专注于某一特定区域。在此基础上进一步提出针对上述两种注意力机制的改进版本,即全局注意力和局部注意力。全局注意力机制关注全部位置的信息,因此计算开销较大,为提升模型效率,遂提出局部注意力机制,该机制每次 仅需关注源语言编码中一个较小的上下文窗口,其计算复杂度要低于全局注意力机制和软注意力机制,且与硬注意力机制不同的是,它几乎处处可微,易于训练。因此,常认为局部注意力机制是软注意力机制和硬注意力机制优势上的混合体。
③全局注意力

代表t时刻单词的权重计算公式,是将所有t时刻的隐藏层状态的权重组合起来, 代表将全部的上下文向量,进行求和,从而得到一个句向量。 代表最终的隐藏层状态, 表示t时刻的隐藏层状态,score得分函数的方式有三种:

④局部注意力
全局注意力需要在序列中所有时间步上进行计算,计算的时间消耗较大,可以使用固定窗口大小的局部注意力机制,窗口的大小设置为2D+1

具体的符号解释都与上面全局注意力的相似,区别是引入了窗口大小2D+1
4、 脱离Encoder-Decoder结构的attention
在attention中引入Encoder-Decoder框架,从而完成机器翻译的大致流程:

但是,Attention 并不一定要在 Encoder-Decoder 框架下使用的,他是可以脱离 Encoder-Decoder 框架的。下面的图片则是脱离 Encoder-Decoder 框架后的原理图解:

第一步: query 和 key 进行相似度计算,得到权值
第二步:将权值进行归一化,得到直接可用的权重
第三步:将权重和 value 进行加权求和
将Source中的构成元素想象成是由一系列的<Key,Value>数据对构成,此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。
在第一个阶段,可以引入不同的函数和计算机制,根据Query和某个Key_i,计算两者的相似性或者相关性,最常见的方法包括:求两者的向量点积、求两者的向量Cosine相似性或者通过再引入额外的神经网络来求值,即如下方式:
点积:

Cosine相似性:

MLP网络:

第一阶段产生的分值根据具体产生的方法不同其数值取值范围也不一样,第二阶段引入类似SoftMax的计算方式对第一阶段的得分进行数值转换,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面也可以通过SoftMax的内在机制更加突出重要元素的权重。即一般采用如下公式计算:

第二阶段的计算结果ai 即为 value对应的权重系数,然后进行加权求和即可得到Attention数值:

通过如上三个阶段的计算,即可求出针对Query的Attention数值

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。