1、注意力机制概念

        1.1、作用

                 让模型学会自动关注重要信息,而弱化不重要的部分

        1.2 使用Encoder-Decoder理解Attention作用

                没有Attention的模型

                在没有这个Attention后  模型内部将输入的词语转换成词向量和上一时刻的隐藏状态,传入RNN或者LSTM的循环结构,最终会生成一个完整的隐藏状态取里面的最后一个时间步的序列就是(全部语义)

将这个输出的序列压缩成为一个固定序列 这个就是然后再将这个序列传入解码层 最终输出翻译的文字           

                但是因为最终只会生成一个数据序列,每次翻译一个字的时候都需要根据这个序列去翻译所以会出现翻译不好的情况 容易翻译错误   

                有Attention的模型                

                有这个Attention后,将会针对每个词语都会单独生成一个固定序列并且这个序列就是针对翻译的单词做了添加权重的序列 用来单独对应翻译的词语,这样就可以提升翻译的质量

        2、注意力机制

                2.1 注意力计算公式

                 核心公式:Attention(Q,A,V) = softmax(score(Q,K)).V

                Q:查询,当前要查什么(当前词/当前位置表示)

                K:每个候选位置的索引特征

                V:   每个候选位置的内容信息

                 2.2 计算过程
                        2.2.1 打分:得到注意力分数

                                attention_score = score(Q,K)

                        2.2.2 得到注意力权重

                                α = softmax(attention_score)

                        2.2.3 加权求和 用注意力权重 加权V,得到上下文向量/注意输出

                                context = ∑α*v

        

               软注意力:

                        可以微分、可以反向求导、权重有大有小类似Attention

               硬注意力: 

                        不可以微分、可以反向求导、权重只有0和1

               普通注意力:

                        它是一种软注意力,作用于Encoder-Decoder架构之间。它的作用是计算Decoder的当前隐藏状态与Encoder所有隐藏状态之间的关联度。

               自注意力:            

                        他的这个自注意力是再序列内部每个词对所有词做一个计算判断其与这个词的关系程度,用此来排序可以知道这些各个词之间的关系(支持并行计算)

        3、乘法注意力(常用)和加法注意力

                乘法注意力通过向量点积计算注意力分数,计算效率高可以矩阵并行;

                加法注意力通过可学习的前馈网络逐个计算对齐注意力分数多了前馈网络计算较慢

               3.1 逻辑 

                        首先将需要翻译的词语转换成张量再通过编码层里面含有词嵌入层 将张量转换成词向量,然后还有初始化的时间步的隐藏状态在编码层会生成3个个信息 第一个就是一个单独的词向量,然后是K(词向量特征词的信息),然后是V(词向量的值) 第一个词向量会将上一个时间步的隐藏状态传入gru层,词向量传入注意力层和qureery向乘经过线性层生成Q,生成注意力的加权求和最终输出的值  传入解码层最后输出相应的解码的值

                 加法注意力:和乘法一样除了打分的板块 不一样其他的则一样  在打分板块加法这里多了一个tanh层 导致加法注意力计算时间较大   

 

关键区别:乘法注意力通过 向量点积 计算注意力分数,计算效率高,可矩阵并行;加法注意力通过 可学习的前馈网络(含参数 WQWQ​、WkWk​、vv)逐个计算对齐注意力分数,多了一个前馈网络,计算较慢。

·                3.2 :注意力机制的计算公式

统一计算公式:

           Attention(Q,K,V)=softmax(score(Q,K))⋅V           

 乘法计算公式:

加法计算公式:

缩放点积注意力

3.3 为什么会需要除以根号下dk

那是因为如果我们最后一个需要增加长度的话,Q*K^T 最后一个维度都要同时增长 他们的乘积就会随之增长d_k倍导致softmax输入会变得太大 容易造成梯度消失

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐