Attention机制概念整理

2024-05-15

1. Attention机制概念整理

深度学习中的注意力机制(Attention Macheanism):
  
 Attention机制较为广泛的应用是为了解决  LSTM长输入序列在编码成固定长度向量后,解码受限于该固定长度向量  的问题。但是这个概念最初引入是在计算机视觉领域。
  
 Attention的概念来源于人类的  视觉注意力机制  :人们视觉在感知东西的时候一般不会是一个场景从到头看到尾每次全部都看,而往往是根据需求观察注意特定的一部分。而且当人们发现一个场景经常在某部分出现自己想观察的东西时,人们会进行学习在将来再出现类似场景时把注意力放到该部分上。所以,深度学习中注意力机制的核心目标也是从众多信息中选择出对当前任务目标更关键的信息。
                                          
 上图的另外一个理解方式是软寻址,也就是说每来一个Query,通过和存储器内key的地址进行相似性比较,并可能从每个对应的key中都会取出具有一定重要性的内容value,这个重要性由Query和key的相似性决定,最后对这些从不同的key中取出的value进行加权求和
  
 Encoder顾名思义就是对输入句子Source进行编码,将输入句子通过非线性变换转化为中间语义表示C:
                                          
 对于解码器Decoder来说,其任务是根据句子Source的中间语义表示C和之前已经生成的历史信息(y1,y2,...,yi-1)来生成i时刻要生成的单词:
                                          
 对于nlp文本处理领域中不同的任务只需要改变source和target:s(中文句)t(英文句)——>机器翻译;s(文章)t(概述)——>文本摘要;s(问题)t(回答)——>对话机器人
  
 如果不加attention机制,生成目标yi时,source中任意一个单词的影响力都是相同的(没有注意力的焦点)。
  
 如果句子过长,中间语义C不足以包含每个单词本身的信息,会丢失很多细节信息,因此要引入注意力机制,将重点放在对target中的yi生成有用的相应的source词上。
  
   理解Attention模型的关键就是这里  ,即由固定的中间语义表示C换成了根据当前输出单词来调整成加入注意力模型的变化的Ci
                                          
 将上图转化成函数表示:(Soft Attention:Attention+Softmax)
                                          
 其中Aij是一个权值矩阵,aij表示source中的第i个单词对target中第j的单词预测的贡献(可以理解成相似性),hj是source中第j个单词的语义编码(不同框架编码不同)
  
 
  
                                          
 i-1时刻的隐层状态Hi-1是已知的,F(hj,Hi-1)函数表示目标单词yi和每个输入单词j对齐的可能性
  
 一般在自然语言处理应用里会把Attention模型看作是输出Target句子中某个单词和输入Source句子每个单词的对齐模型,这是非常有道理的。例如在传统机器学习方法中相当于短语对齐的过程。
  
 更进一步的抽象,可以将target看成Query,这个Query和source中的每个检索词value都有一个相似性,即权重系数,将这些权重系数相加得到Attention值,转化成公式:
                                          
 从这个层面上可以看出Attention就是从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,这个“聚焦”就体现在权重系数上
  
 1. 根据Query和key计算权重系数;
  
     ① 根据Query和Key计算相似性:相似度的计算可用点积、cosine相似性、MLP网络等计算
  
     ② 对①的原始分值进行归一化处理:如SoftMax
  
 
  
                                          
 2.根据权重系数对value就行加权求和
  
 
  
                                          
 整个计算过程可表示成下图:
  
 
  
                                          
 未完待续
  
 参考张俊林博士的博客结合个人理解整理了一下 https://blog.csdn.net/malefactor/article/details/78767781

Attention机制概念整理

2. Attention机制总结

 感兴趣区域ROI和定位机制。
   每一步只关注特定小区域,抽取区域表征信息,再整合到之前的步骤所积累的信息中。
   Soft attention: 以概率进行加权输入到下一层;
   Hard attention: 选取一个输入到下一层。
   策略梯度的强化学习技术 使得训练定位小框位置变得可能,在每次探索中,如果分类模块能正确预测,给与正反馈,强化对这个位置的选择,反之则给负反馈。
   一瞥模块:接收一个位置的二维向量作为输入 画出小框提取特征再结合位置信息 得到中间向量z。
   循环模块:接收中间向量z 包含2层RNN,下层主要积累识别的信息 上层主要预测位置。
   发射模块:上层RNN输出的累积位置信息(隐层的高维向量)映射成二维位置向量,并进行高斯采样。
   分类模块:根据下层 RNN的输出向量进行预测。
   上下文模块:解决第一步往哪儿看的问题 接收整张图怓 输出初始状态向量作为上层RNN的初始输入得到第一个glimpse的位置
   将输入分解成序列化的 同时学习 where and what的思想就是attention的核心
   Attention机制是连接编码层和解码层的一个通道。由于我们在编码(encoder)过程中保留每个RNN单元的隐藏状态(hidden state)得到(h1……hN)。而后对于解码(decoder)过程中每一个timestep,因为有此时decoder的输入和上一步隐藏状态的输出,计算得到当前步的隐藏状态。假设第t步的隐藏状态为St(当前输入和上一步隐藏状态)。
   在每个第t步利用St和每个 编码过程中的隐藏状态 hi进行dot点积得到attention score,也称为相似度或影响得分。即每个 编码过程的隐藏状态 对当前的输出St的一个贡献度。计算公式如下:(此处按照斯坦福大学教材上用st和hi计算,原始论文为st-1)。
   之后用softmax将attention-score转换为概率分布。按照概率分布将隐藏状态转换成加权和。公式如下:
                                           由此得到上下文向量c(或者是注意力向量)。
   最后将注意力向量ct和decoder的t时刻的隐藏状态St并联起来,继续之后步骤。
   其图示如下:
                                                                                   给定一组向量集合values,以及查询向量query,我们根据query向量去计算values加权和,即成为attention机制。
   attention的重点即为求这个集合values中每个value的权值。我们也称attention的机制叫做query的输出关注了(考虑到了)原文的不同部分。
   如seq2seq模型中,St是后面的query向量,而编码过程的隐藏状态hi是values。其就是根据某些规则(或额外信息query)从向量表达集合values中抽取特定的向量进行加权组合的方法,只要从部分向量里用了加权和,计算使用了attention机制。
    1.在向量加权和上做文章。 
    2.在匹配度的计算方式上做文章。 
    针对向量计算方式的变体: 
   soft / global / dynamic (都是soft attention)
   hard
   local attention(半软半硬attention)
   静态attention
   强制前向attention
    soft / global / dynamic (都是soft attention) 
   是求概率分布,就是对于任意一个单词或者values都给出概率,attention得分经过softmax后权值用aph表示,把attention向量用ct表示。
    hard attention 
   一般用在图像中  只选中一个区域,只选1个,其余为0。
    local attention(半软半硬attention) 
   先选中一个区域,然后在其中的各个小部分生成概率分布。
   论文:Effective Approaches to Attention-based Neural Machine Translation
   在这个模型中,对于是时刻t的每一个目标词汇,模型首先产生一个对齐的位置 pt(aligned position),context vector 由编码器中一个集合的隐藏层状态计算得到,编码器中的隐藏层包含在窗口[pt-D,pt+D]中,D的大小通过经验选择。
   上式之中,大S指的是源句子的长度,Wp和vp是指的模型的参数,通过训练得到,为了支持pt附近的对齐点,设置一个围绕pt的高斯分布,其中小s是在以pt为中心的窗口中的整数,pt是一个在[0,S]之间的实数。小Sigma σ  一般取窗口大小的一半。
    静态attention 
   对输出句子共用一个St。一般在BiLstm首位hidden state输出拼接起来作为St(图中为u)。
    针对attention-score计算的变体: 
                                           第一个,s和hi的维数要一样。
   第二个W矩阵是训练得到的参数,维度是d2 x d1,d2是s的hidden state输出维数,d1是hi的hidden state维数,也就是两者可以不同维度。
   最后就是上面提到的additive attention,是对两种hidden state 分别再训练矩阵然后激活过后再乘以一个参数向量变成一个得分。
   其中,W1 = d3xd1,W2 = d3xd2,v = d3x1 ,d1,d2,d3分别为h,s,v的维数,属于超参数。
    Self- attention 
   在没有额外信息下,仍然可以允许向量values使用self attention来处理自己,从句子中提取需要关注的信息。
                                           2.以当前状态本身去计算得分作为当前单元attention score,这种方式更常见,也更简单,例如:
                                            key-values attention 
   即将hi 隐藏状态拆分成两部分一部分是key(i) 一部分是values(i)然后只针对key部分计算attention的权值,然后加权使用values部分的值进行加权求和。
                                            Multi-head attention: 
   首先,google先定义了一下attention的计算,也是定义出key,value,query三个元素(在seq2seq里面,query是st,key和value都是hi)在self 里面,query 是当前要计算的hi,k和v仍然一样,是其他单元的hidden state。在key value attention里面key和value则是分开了的。
   然后除以了一下根号dk,为了让内积不至于太大(太大的话softmax后就非0即1了,不够“soft”了)
   这里我们不妨假设,Q是
                                                                                                                                                                   
   Wi用来先在算attention对三个矩阵做不同的矩阵变换映射一下,变成nxdk’,mxdk’,mxdv’维度。
   最后做并联,有点类似于inception 里面多个卷积核的feature map并联的感觉。附:多核卷积示意图。
                                           部分内容参考CSDN: https://blog.csdn.net/hahajinbu/article/details/81940355 

3. Attention(注意力)机制

Attention(注意力)机制其实来源于人类的认识认知能力。比如当人们观察一个场景或处理一件事情时,人们往往会关注场景的显著性物体,处理事情时则希望抓住主要矛盾。注意力机制使得人类能够关注事物的重要部分,忽略次要部分,更高效的处理所面临的各种事情。
  
 注意力机制在NLP领域被真正的发扬光大,其具有参数少、速度快、效果好的特点,如2018年的BERT、GPT 领跑各项 NLP 任务效果。由此在此领域,transformer和attention结构受到了极大的重视。
   
  
 
                                          
 第二步:使用权重对Value进行加权求和从而得到Attention Value。
  
 注意力是一种机制,或者方法论,并没有严格的数学定义。比如,传统的局部图像特征提取、显著性检测、滑动窗口方法等都可以看作一种注意力机制。在神经网络中,注意力模块通常是一个额外的神经网络,能够硬性选择输入的某些部分,或者给输入的不同部分分配不同的权重。
  
 根据权重在特征空间和通道上的应用方式不同,主要可分为
  
 
  
 
                                          
 其增加了一个通道注意力模块,学习每个通道的权重,通过抑制无关特征提升卷积特征的表示性能。SENet通过Squeeze模块和Exciation模块实现所述功能,首先通过Squeeze模块对卷积特征进行进行压缩,即在通道维度上执行全局池化操作,在SENet中采用的是全局平均池化,作者提到该操作能够使得靠近数据输入的特征也可以具有全局感受野,这一点在很多的任务中是非常有用的。然后是通过全连接网络进行Exciation操作,作者在全连接网络中降维操作的目的是一方面降低了网络计算量,一方面增加了网络的非线性能力。最后将得到通道attention应用到原始卷积特征上,即通过乘法加权的方式乘到先前的特征上,从而提升重要特征,抑制不重要特征。
  
 
  
 
                                          
 从图中可以看出,首先将输入张量进行降维到C通道,与SENet不同的是采用二阶pool的方式,计算得到C*C的协方差矩阵,这种计算方式引入了通道之间的相互关系,然后进行线性卷积和非线性激活的两个连续运算,得到通道注意力。
  
 
  
 
                                          
 
  
 
                                          
 
                                                                                  
 
  
 
                                          
 
                                                                                  
 除此之外,还有很多的注意力机制相关的研究,比如残差注意力机制,多尺度注意力机制,递归注意力机制等。

Attention(注意力)机制

4. Attention

The second step in calculating self-attention is to calculate a score. Say we’re calculating the self-attention for the first word in this example, “Thinking”. We need to score each word of the input sentence against this word. The score determines how much focus to place on other parts of the input sentence as we encode a word at a certain position. 
  
  The score is calculated by taking the dot product of the query vector with the key vector of the respective word we’re scoring. So if we’re processing the self-attention for the word in position #1, the first score would be the dot product of q1 and k1. The second score would be the dot product of q1 and k2 
                                          
 两种:
  
 soft attention :思是在求注意力分配概率分布的时候,对于输入句子
   X中任意一个单词都给出个概率,是个概率分布。
   hard attention: 对不齐的概率认为是0
  
 global attention model : soft attention model
   local attention model : soft attention model & hard attention model
  
 有多个类别的mask,反向传播只优化当前类别对应的mask.
  
 不传递谁的损失函数,不更新谁的梯度。
  
 每个注意力模块分为两部分:mask (M)和trunk(T),基于特征提取网络提取特征T,
  
  H_i,c​ (x)=M_i,c​ (x)∗T_i,c​ (x) 
  
 注意力模块中,注意力掩膜在forward时作为特征选择器,在反向传播时则作为梯度更新的滤波器。
  
 由于注意力用到了softmax 网络,如果太多的注意力模型会导致模型输出的响应变弱,可能对梯度也会产生一定的影响。
   所以用残差的注意力:
    H_i,c​ (x)=(1+M_i,c​ (x))∗T_i,c​ (x) 
   一般M的取值范围在[01,]之间,除了得到注意力之外还要把特征图加上。
   
                                          
 
  
 掩膜分支包括了快速前馈扫描(fast feed-forward sweep)和自上而下的反馈(top-down feedback)步骤。前者快速收集整个图像的全局信息,后者将全局信息与原始特征图相结合。在卷积神经网络中,这两个步骤展开为bottom-up top-down的全卷积结构。
                                          
 先对原图下采样,得到主要特征后,在上采样使大小与原图一样,然后通过sigmoid 。
  
 使用L2正则化约束每个位置上的所有通道,推测最终输出一个空间维度一致的Attention Map;
                                          
 类似于SENet使用L2正则化约束每一个通道上的所有特征值,最后输出长度与通道数相同的一维向量作为特征加权;这个和公式里描述的是一样吗?
                                          
 对通道和空间位置都是用
                                                                                                                                                                  
 学习权重分布
                                          
 通过1x1卷积产生注意力?这不是我常见的,我的疑惑就在这里。他既不是通道注意力,也不是空间注意力。

5. attention的讲解

attention是一个名词,意思是注意力、关心、口令立正,attention这个单词可以划分为几个音节呢?我们一起来看一看,这个单词一共可以划分为三个音节【at】【ten】和【tion】,第一个音节at的发音为【ə】,而第二个音节ten的发音为【ten】,而第三个音节tion的发音为【ʃn】,合在一起的话这个单词的发音就是【əˈtenʃn】,我们再看一下用法,attention作为注意力、关心、立正的意思来使用;
 
   
 
 例如在下面这两个句子里,I couldn't give the programme,my undivided attention . 我不能一心一意地关注这个方案,If we don't keep bringing,this to the attention of the people,nothing will be done.如果我们无法让公众保持对此事的关注,那就将一事无成,在这两个句子中,attention都指的是注意力,attention还有一个短语,pay more attention to,指的是更加注意,These tours may awaken people,to pay more attention to long standing poverty,or the effects of war. 这些旅行可能会唤醒人们,来更多地关注长期的贫困或战争的影响,attention这个单词你学会了吗?

attention的讲解

6. attention的相关语法

pay attention to注意某事
pay attention 专心;集中注意力 
pay more attention to更加注意 
pay close attention to  密切注意 
be paid attention to 关心 
give one's attention to v. 注意 

注:这里的to 是介词,后面只能加名词或者动词的现在分词形式。attention的具体含义:attention [ə'tenʃən] 
n.
1. 
专心;留心;注意;精神集中
专注;注目
2. 注意力
3. 关心;照料;考虑;思考;特殊处理
4. 
关怀,体贴(别人)
礼貌,客气
[通常用于复数] 款待;热心;(尤指求爱时表现的)殷勤
5. 【军事】
立正姿势
立正口令
6. 检修,修理
7. 【心理学】注意
8. 【计算机】注意,留心(来自外部的处理要求)
interj.
1. (口令)立正!
2. (有要事当众宣布时说)注意!

7. 一文看懂 Attention(本质原理+3大优点+5大类型)

 Attention(注意力)机制如果浅层的理解,跟他的名字非常匹配。他的核心逻辑就是「 从关注全部到关注重点 」。
                                           Attention 机制很像人类看图片的逻辑,当我们看一张图片的时候,我们并没有看清图片的全部内容,而是将注意力集中在了图片的焦点上。大家看一下下面这张图:
                                           我们一定会看清「锦江饭店」4个字,如下图:
                                           但是我相信没人会意识到「锦江饭店」上面还有一串「电话号码」,也不会意识到「喜运来大酒家」,如下图:
                                           所以,当我们看一张图片的时候,其实是这样的:
                                           上面所说的,我们的视觉系统就是一种 Attention机制, 将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。 
    AI 领域的 Attention 机制 
   Attention 机制最早是在计算机视觉里应用的,随后在 NLP 领域也开始应用了,真正发扬光大是在 NLP 领域,因为 2018 年  BERT  和 GPT 的效果出奇的好,进而走红。而  Transformer  和 Attention 这些核心开始被大家重点关注。
   如果用图来表达 Attention 的位置大致是下面的样子:
                                           这里先让大家对 Attention 有一个宏观的概念,下文会对 Attention 机制做更详细的讲解。在这之前,我们先说说为什么要用 Attention。
   之所以要引入 Attention 机制,主要是3个原因:
                                            参数少 
   模型复杂度跟 CNN、RNN 相比,复杂度更小,参数也更少。所以对算力的要求也就更小。
    速度快 
   Attention 解决了 RNN 不能并行计算的问题。Attention机制每一步计算不依赖于上一步的计算结果,因此可以和CNN一样并行处理。
    效果好 
   在 Attention 机制引入之前,有一个问题大家一直很苦恼:长距离的信息会被弱化,就好像记忆能力弱的人,记不住过去的事情是一样的。
   Attention 是挑重点,就算文本比较长,也能从中间抓住重点,不丢失重要的信息。下图红色的预期就是被挑出来的重点。
                                           Attention 经常会和 Encoder-Decoder 一起说,之前的文章《 一文看懂 NLP 里的模型框架 Encoder-Decoder 和 Seq2Seq 》 也提到了 Attention。
   下面的动图演示了attention 引入 Encoder-Decoder 框架下,完成机器翻译任务的大致流程。
                                            但是,Attention 并不一定要在 Encoder-Decoder 框架下使用的,他是可以脱离  Encoder-Decoder 框架的。 
   下面的图片则是脱离 Encoder-Decoder 框架后的原理图解。
                                            小故事讲解 
   上面的图看起来比较抽象,下面用一个例子来解释 attention 的原理:
                                           图书管(source)里有很多书(value),为了方便查找,我们给书做了编号(key)。当我们想要了解漫威(query)的时候,我们就可以看看那些动漫、电影、甚至二战(美国队长)相关的书籍。
   为了提高效率,并不是所有的书都会仔细看,针对漫威来说,动漫,电影相关的会看的仔细一些(权重高),但是二战的就只需要简单扫一下即可(权重低)。
   当我们全部看完后就对漫威有一个全面的了解了。
    Attention 原理的3步分解: 
                                           第一步: query 和 key 进行相似度计算,得到权值
   第二步:将权值进行归一化,得到直接可用的权重
   第三步:将权重和 value 进行加权求和
   想要了解更多技术细节,可以看看下面的文章或者视频:
   「文章」 深度学习中的注意力机制 
   「文章」 遍地开花的 Attention,你真的懂吗? 
   「文章」 探索 NLP 中的 Attention 注意力机制及 Transformer 详解 
   「视频」 李宏毅 - transformer 
   「视频」 李宏毅 - ELMO、BERT、GPT 讲解 
   Attention 有很多种不同的类型:Soft Attention、Hard Attention、静态Attention、动态Attention、Self Attention 等等。下面就跟大家解释一下这些不同的 Attention 都有哪些差别。
                                           由于这篇文章《 Attention用于NLP的一些小结 》已经总结的很好的,下面就直接引用了:
   本节从计算区域、所用信息、结构层次和模型等方面对Attention的形式进行归类。
    1. 计算区域 
   根据Attention的计算区域,可以分成以下几种:
   1) Soft  Attention,这是比较常见的Attention方式,对所有key求权重概率,每个key都有一个对应的权重,是一种全局的计算方式(也可以叫Global Attention)。这种方式比较理性,参考了所有key的内容,再进行加权。但是计算量可能会比较大一些。
   2) Hard  Attention,这种方式是直接精准定位到某个key,其余key就都不管了,相当于这个key的概率是1,其余key的概率全部是0。因此这种对齐方式要求很高,要求一步到位,如果没有正确对齐,会带来很大的影响。另一方面,因为不可导,一般需要用强化学习的方法进行训练。(或者使用gumbel softmax之类的)
   3) Local  Attention,这种方式其实是以上两种方式的一个折中,对一个窗口区域进行计算。先用Hard方式定位到某个地方,以这个点为中心可以得到一个窗口区域,在这个小区域内用Soft方式来算Attention。
    2. 所用信息 
   假设我们要对一段原文计算Attention,这里原文指的是我们要做attention的文本,那么所用信息包括内部信息和外部信息,内部信息指的是原文本身的信息,而外部信息指的是除原文以外的额外信息。
   1) General  Attention,这种方式利用到了外部信息,常用于需要构建两段文本关系的任务,query一般包含了额外信息,根据外部query对原文进行对齐。
   比如在阅读理解任务中,需要构建问题和文章的关联,假设现在baseline是,对问题计算出一个问题向量q,把这个q和所有的文章词向量拼接起来,输入到LSTM中进行建模。那么在这个模型中,文章所有词向量共享同一个问题向量,现在我们想让文章每一步的词向量都有一个不同的问题向量,也就是,在每一步使用文章在该步下的词向量对问题来算attention,这里问题属于原文,文章词向量就属于外部信息。
   2) Local  Attention,这种方式只使用内部信息,key和value以及query只和输入原文有关,在self attention中,key=value=query。既然没有外部信息,那么在原文中的每个词可以跟该句子中的所有词进行Attention计算,相当于寻找原文内部的关系。
   还是举阅读理解任务的例子,上面的baseline中提到,对问题计算出一个向量q,那么这里也可以用上attention,只用问题自身的信息去做attention,而不引入文章信息。
    3. 结构层次 
   结构方面根据是否划分层次关系,分为单层attention,多层attention和多头attention:
   1)单层Attention,这是比较普遍的做法,用一个query对一段原文进行一次attention。
   2)多层Attention,一般用于文本具有层次关系的模型,假设我们把一个document划分成多个句子,在第一层,我们分别对每个句子使用attention计算出一个句向量(也就是单层attention);在第二层,我们对所有句向量再做attention计算出一个文档向量(也是一个单层attention),最后再用这个文档向量去做任务。
   3)多头Attention,这是Attention is All You Need中提到的multi-head attention,用到了多个query对一段原文进行了多次attention,每个query都关注到原文的不同部分,相当于重复做多次单层attention:
                                           最后再把这些结果拼接起来:
                                            4. 模型方面 
   从模型上看,Attention一般用在CNN和LSTM上,也可以直接进行纯Attention计算。
    1)CNN+Attention 
   CNN的卷积操作可以提取重要特征,我觉得这也算是Attention的思想,但是CNN的卷积感受视野是局部的,需要通过叠加多层卷积区去扩大视野。另外,Max Pooling直接提取数值最大的特征,也像是hard attention的思想,直接选中某个特征。
   CNN上加Attention可以加在这几方面:
   a. 在卷积操作前做attention,比如Attention-Based BCNN-1,这个任务是文本蕴含任务需要处理两段文本,同时对两段输入的序列向量进行attention,计算出特征向量,再拼接到原始向量中,作为卷积层的输入。
   b. 在卷积操作后做attention,比如Attention-Based BCNN-2,对两段文本的卷积层的输出做attention,作为pooling层的输入。
   c. 在pooling层做attention,代替max pooling。比如Attention pooling,首先我们用LSTM学到一个比较好的句向量,作为query,然后用CNN先学习到一个特征矩阵作为key,再用query对key产生权重,进行attention,得到最后的句向量。
    2)LSTM+Attention 
   LSTM内部有Gate机制,其中input gate选择哪些当前信息进行输入,forget gate选择遗忘哪些过去信息,我觉得这算是一定程度的Attention了,而且号称可以解决长期依赖问题,实际上LSTM需要一步一步去捕捉序列信息,在长文本上的表现是会随着step增加而慢慢衰减,难以保留全部的有用信息。
   LSTM通常需要得到一个向量,再去做任务,常用方式有:
   a. 直接使用最后的hidden state(可能会损失一定的前文信息,难以表达全文)
   b. 对所有step下的hidden state进行等权平均(对所有step一视同仁)。
   c. Attention机制,对所有step的hidden state进行加权,把注意力集中到整段文本中比较重要的hidden state信息。性能比前面两种要好一点,而方便可视化观察哪些step是重要的,但是要小心过拟合,而且也增加了计算量。
    3)纯Attention 
   Attention is all you need,没有用到CNN/RNN,乍一听也是一股清流了,但是仔细一看,本质上还是一堆向量去计算attention。
    5. 相似度计算方式 
   在做attention的时候,我们需要计算query和某个key的分数(相似度),常用方法有:
   
   
                                           
   
                                           
   
                                           
   
                                           5)用多层感知机也可以: 
                                           

一文看懂 Attention(本质原理+3大优点+5大类型)

8. attention的相关语法

pay attention to注意某事
  pay attention 专心;集中注意力 
  pay more attention to更加注意 
  pay close attention to 密切注意 
  be paid attention to 关心 
  give one's attention to v.注意 
  注:这里的to 是介词,后面只能加名词或者动词的现在分词形式.attention的具体含义:attention [ə'tenʃən] 
  n.
  1.
  专心;留心;注意;精神集中
  专注;注目
  2.注意力
  3.关心;照料;考虑;思考;特殊处理
  4.
  关怀,体贴(别人)
  礼貌,客气
  [通常用于复数] 款待;热心;(尤指求爱时表现的)殷勤
  5.【军事】
  立正姿势
  立正口令
  6.检修,修理
  7.【心理学】注意
  8.【计算机】注意,留心(来自外部的处理要求)
  interj.
  1.(口令)立正!
  2.(有要事当众宣布时说)注意!