【学习笔记】注意力机制的分类与总结

注意力机制的分类与总结


注意力机制最早用于做机器翻译,出现在论文《Neural Machine Translation by Jointly Learning to Align and Translate》中。

Motivation

传统的Seq2Seq模型,编码器将源序列信息编码为一个定长向量,无论序列长度多长。然而,当序列长度较长时,定长向量不足以概况其所有重要信息,势必影响解码生成效果。

通过引入注意力机制,Decoder在每次计算输出时都可以访问Encoder的中每个token的隐藏状态,并计算出每个隐藏状态的注意力权重,然后将二者加权求和得到的上下文向量作为Decoder的输入。因此,Decoder每个时间步都要重新计算一个上下文向量,优点在于,decoder 在计算输出时可以有侧重地利用source sentence中的信息,把“注意力”放在最有利于当前正确输出的信息上。

注意力权重 α t , i \alpha_{t,i} αt,i 用于衡量源句中第i个 token与Decoder的第t个输出之间的对齐程度

Bahdanau Attention vs. Luong Attention

二者的主要区别是是注意力打分函数所使用的查询向量不同。Bahdanau在打分函数中所用的查询向量是Decoder前一时刻状态 h t − 1 h_{t-1} ht1,而Luong在打分函数中所用的查询向量是Decoder当前时刻状态 h t h_t ht。K和V都是Encoder的隐藏状态,此外,在原文中,Luong还提出了点积、双线性、加性三种打分函数。

Soft Attention vs. Hard Attention

我们常用的Attention即为Soft Attention,每个权重取值范围为[0,1],依赖特征之间的关系学习权重。

对于Hard Attention来说,每个key的注意力只会取0或者1,也就是说我们只会令某几个特定的key有注意力,且权重均为1,在计算机视觉任务中用的比较多。它和local-attention 一样,仅选取部分源信息,只是hard-attention对部分源信息的选取方式是不可微的,所以它无法跟随模型得到优化。Hard Attention主要在局部特征区域进行随机crop的过程。

Global Attention vs. Local Attention vs. Hierarchical Attention

Global Attention

一般不特殊说明的话,我们采用的Attention都是Global Attention。根据原始的Attention机制,每个解码时刻,并不限制解码状态的个数,而是可以动态适配编码器长度,从而匹配所有的编码器状态。其实就是考虑所有隐藏状态,即所有Encoder的隐藏状态都作为Key进行加权。

Local Attention

在长文本中我们对整个编码器长度进行对齐匹配,可能会导致注意力不集中的问题,因此我们通过限制注意力机制的范围,令注意力机制更加有效。在LocalAttention中,每个解码器的 h t h_t ht对应一个编码器位置 p t p_t pt,选定区间大小D(一般是根据经验来选的),进而在编码器的 [ p t − D , p t + D ] [p_t-D,p_t+D] [ptD,pt+D]位置使用Attention机制,根据选择的 p t p_t pt不同,又可以把Local Attention分为Local-m和Local-p两种。Local-m:简单设置 p t p_t pt h t h_t ht对应位置: p t = t p_t=t pt=t;Local-p:利用 h t h_t ht预测 p t p_t pt,进而使用高斯分布使得Local Attention的权重以 p t p_t pt呈现峰值形状。

Hierarchical Attention

Hierarchical Attention也可以用来解决长文本(如文档)注意力不集中的问题,与Local Attention不同的是,Local Attention强行限制了注意力机制的范围,忽略剩余位置;

而Hierarchical Attention使用分层思想在所有的状态上都利用了注意力机制。该注意力网络网络可以被看作为两部分,第一部分为”词注意“部分,另一部分为“句注意”部分。整个网络通过将一个句子分割为几部分,对于每部分,都使用双向RNN结合注意力机制将小句子映射为一个向量,然后对于映射得到的一组序列向量,我们再通过一层双向RNN结合注意力机制实现对文本的分类。

Intra Attention(Self Attention) vs. Inter Attention

intra Attention又称Self-Attention。Inter Attention就是Encoder-Decoder Attention。

Self Attention就是Transformer中的Attention。其将一个句子的不同位置相互联系起来以计算该句子的特征表达,相当于把自身编码成一个特征向量。

注意力打分模型

Location(仅对目标位置进行对齐)、Cosine(计算QK的余弦相似度)、加性模型、点积、缩放点积、双线性模型。

在这里插入图片描述
主要是这四种在这里插入图片描述
其中W、U和v是可学习的网络参数,d是输入信息的维度。q是查询向量, x i x_i xi是键向量。

引用提到了CBAM(Convolutional Block Attention Module)是一种卷积神经网络注意力机制,而引用提到了作者在对注意力机制进行分类总结时,参考了一些综述和网上资料,并入了一些新的内容。由于没有具体提到QKV自注意力机制CBAM的关系,我们可以通过引用中的文献《An Introductory Survey on Attention Mechanisms in NLP Problems》来了解QKV自注意力机制。 根据中的文献,QKV自注意力机制自然语言处理问题中的一种注意力机制。在自注意力机制中,输入序列(例如句子中的单词)通过计算查询(query)、键(key)和值(value)之间的相似度,以便为每个输入位置分配一个权重,用于生成上下文相关的表示。具体而言,在QKV自注意力机制中,查询是用于获取其他输入位置相关信息的位置,键是用于计算查询和其他位置之间的相似度,值是用于生成每个位置的权和表示。 CBAM是一种卷积神经网络注意力机制QKV自注意力机制在具体实现和应用上可能有所不同。在CBAM中,注意力机制主要用于在卷积神经网络中关注输入特征图的不同通道和空间位置,以提高模型的性能。CBAM主要包括通道注意力和空间注意力两个模块,通道注意力用于对不同通道的特征进行权,而空间注意力用于对不同空间位置的特征进行权。 综上所述,QKV自注意力机制和CBAM都是注意力机制的一种,但在具体实现和应用上可能有所差异。QKV自注意力机制主要应用于自然语言处理问题,而CBAM是一种卷积神经网络注意力机制,用于提高模型性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [学习笔记|NLP中的注意力机制汇总](https://blog.csdn.net/qq_33648725/article/details/106770048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值