首页 > 其他分享 >注意力机制的一些变体

注意力机制的一些变体

时间:2022-08-26 10:01:24浏览次数:106  
标签:... right Attention 变体 机制 注意力 向量 left

1. 硬性注意力机制

在经典注意力机制章节我们使用了一种软性注意力的方式进行Attention机制,它通过注意力分布来加权求和融合各个输入向量。而硬性注意力(Hard Attention)机制则不是采用这种方式,它是根据注意力分布选择输入向量中的一个作为输出。这里有两种选择方式:

  • 选择注意力分布中,分数最大的那一项对应的输入向量作为Attention机制的输出。

  • 根据注意力分布进行随机采样,采样结果作为Attention机制的输出。

硬性注意力通过以上两种方式选择Attention的输出,这会使得最终的损失函数与注意力分布之间的函数关系不可导,导致无法使用反向传播算法训练模型,硬性注意力通常需要使用强化学习来进行训练。因此,一般深度学习算法会使用软性注意力的方式进行计算,

2. 键值对注意力机制

假设我们的输入信息不再是前边所提到的\[H = \left[ {h\_1,h\_2,h\_3,...,h\_n} \right]\] 而是更为一般的键值对(key-value pair)形式 (K,V)=[(k1,v1),(k2,v2),...,(kn,vn)](K,V)=[(k1,v1),(k2,v2),...,(kn,vn)] ,相关的查询向量仍然为 qq。这种模式下,一般会使用查询向量 qq和相应的键 kiki进行计算注意力权值 aiai。

ai=softmax(s(ki,q))=exp(s(ki,q))∑nj=1exp(s(kj,q))ai=softmax(s(ki,q))=exp(s(ki,q))∑j=1nexp(s(kj,q))

当计算出在输入数据上的注意力分布之后,利用注意力分布和键值对中的对应值进行加权融合计算:

\[context = \sum\limits_{i = 1}^n {{a_i}} \cdot {v_i}\]

显然,当键值相同的情况下\[k = v\],键值对注意力就退化成了普通的经典注意力机制。

3. 多头注意力机制

多头注意力(Multi-Head Attention)是利用多个查询向量 Q=[q1,q2,...,qm]Q=[q1,q2,...,qm],并行地从输入信息\[\left( {K,V} \right) = \left[ {\left( {k\_1,v\_1} \right),\left( {k\_2,v\_2} \right),...,\left( {k\_n,v\_n} \right)} \right]\]中选取多组信息。在查询过程中,每个查询向量 qiqi 将会关注输入信息的不同部分,即从不同的角度上去分析当前的输入信息。

假设 aijaij代表第 ii 各查询向量 qiqi 与第 jj 个输入信息 kjkj 的注意力权重, contexticontexti 代表由查询向量qiqi计算得出的Attention输出向量。其计算方式为:

\[\begin{array}{*{20}{l}}
{{a_{ij}} = softmax(s({k_j},{q_i}))}&{ = \frac{{exp(s({k_j},{q_i}))}}{{\sum\limits_{t = 1}^n e xp(s({k_t},{q_i}))}}}\\
{contex{t_i}}&{ = \sum\limits_{j = 1}^n {{a_{ij}}} \cdot {v_j}}
\end{array}\]

最终将所有查询向量的结果进行拼接作为最终的结果:

\[context = contex{t_1} \oplus contex{t_2} \oplus contex{t_3} \oplus ... \oplus contex{t_m}\]

公式里的 \[ \oplus \]表示向量拼接操作。

标签:...,right,Attention,变体,机制,注意力,向量,left
From: https://www.cnblogs.com/beyoncewxm/p/16625342.html

相关文章

  • 经典注意力机制
    1.用机器翻译任务带你看Attention机制的计算单独地去讲Attention机制会有些抽象,也有些枯燥,所以我们不妨以机器翻译任务为例,通过讲解Attention机制在机器翻译任务中的应......
  • 注意力机制是什么
    假设有一天热爱绘画的你决定去户外写生,你来到一片山坡上,极目远去,心旷神怡。头顶一片蔚蓝,脚踩一席草绿,远处山川连绵,眼前花草送香,暖阳含羞云后,轻风拂动衣襟,鸟啼虫鸣入耳,美景......
  • PHP的session垃圾回收机制
     session垃圾回收机制-wen_php-博客园 https://www.cnblogs.com/wenphp/p/4871500.html在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内......
  • 垃圾回收机制
    怎么判定对象是否为垃圾对象1.引用计数法在每个对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器就+1,当引用失效的时候,计数器的值就-1。任何时刻计数......
  • python基础-垃圾回收机制
    1.主)引用计数(referencecounting)引用计数为0时,该对象生命就结束了。维护引用计数消耗资源,循环引用L.append(L)L一直不回收(辅)标记清除机制(markandsweep)**目的:**解决......
  • python的垃圾回收机制
    1、引用计算  2、标记清除  3、分带回收 ......
  • 包机制
    包机制包的本质就是文件夹为了更好地组织类,Java提供了包机制,用于区别类名的命名空间包语句的语法格式为:packagepkg1[.pkg2[.pkg3…]]一般利用公司域名......
  • .Net Core&RabbitMQ消息转发可靠机制
    前言生产者发送消息到了队列,队列推送数据给了消费者,这里存在一些问题需要思考下生产者如何确保消息一定投递到了队列中RabbitMQ丢失了消息(下文暂不涉及这块)队列如......
  • Java06-包机制&JavaDoc文档
    包机制为了更好的组织类,Java提供了包机制,用于区别类名的命名空间(等同于文件夹)一般利用公司域名倒置作为包名eg:com.baidu.www(会生成树状子目录)包语句的格式:packagepac......
  • 痞子衡嵌入式:浅析IAR下调试信息输出机制之半主机(Semihosting)
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是IAR下调试信息输出机制之半主机(Semihosting)。在嵌入式世界里,输出打印信息是一种非常常用的辅......