【Attention注意力机制和self-Attention自注意机制】

       自然语言处理非常重要的两个模型。 当我们在读一句话的时候,首先大脑会记住重要的词汇,把这中方式放入到自然语言处理任务当中,就根据人脑处理信息的方式,提出Attention机制。

   Attention机制的计算过程

        注意力机制模型(Attention):

                 

   计算过程:第一个过程是根据Q和K计算权重系数,第二个过程根据权重系数对V进行加权求和。

第一个阶段,可以引入不同函数和计算机制,根据Q和K,计算两者的相似性和相关性,可以根据以下方法:

                第二个阶段引入类似的softmax的计算方式对第一阶段得分进行数值转换,一方面可以进行归一化,计算所有元素权重之和为1,另一方面可以通过softmax突出元素的权重。

                

第三阶段,通过计算结果a和V对应的权重系数,然后加权求和得到Attention数值:

                  

简单总结:

Self-attention自注意力机制

计算过程:

  1. 将输入的单词转化成嵌入向量
  2. 根据嵌入的向量得到,q,k,v三个向量
  3. 计算每一个向量score:score=q.k
  4. Transformer使用了score归一化,除以 根号下d.k
  5. 对score,进行 softmax激活函数
  6. Softmax点乘V,得到加权的每个输入向量评分
  7. 相加之后得到最终结果z:z=∑v

        

Self-attention 详细讲解:

Self-attention会提出三个新的向量,在论文中向量的维度是512,把这三个向量分别称为q,k,v,是通过embedding向量与矩阵相乘得到的,矩阵是随机初始化的,维度(64,512)。

        计算self-attention的分数值,该分数决定了我们在某个位置encode一个词时,对输入句子的其他部分的关注程度。计算方法是q.k.以下图为例,首先对Thinking词,计算其他词对该词的一个分数值,首先针对自己本身q1.k1,然后针对第二个词q1.q2        

        

        然后把结果除以一个常数,一般采用第一个维度的开方,这里是8,然后把得到的结果做一个softmax的计算。得到的结果做一个softmax的计算,得到的结果是每个词对当前位置的词的相关性,当前位置的词相关性会很大。

        

把v和softmax得到的值相乘,并相加,得到的结果是self-attention在当前节点的值

        

         在实际应用的场景,为了提高计算速度,我们采用矩阵的方式,直接计算出q,k,v的矩阵,然后把embedding的值与三个矩阵直接相乘,把得到的新矩阵q和k相乘,乘以一个常数,做softmax,最后乘上v矩阵

         

         

 

注意力机制的优点:参数少,速度快,效果好

 

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值