Attention机制的基本原理


原文链接: https://zhuanlan.zhihu.com/p/72001554 [seq2seq模型+attention机制]

attention机制的原理

神经学中的注意力机制有两种:

(1)自上而下的有意识的注意力,称为聚焦式注意力(Focus Attention),聚焦式注意力是指有预定目的,依赖任务的,主动有意识地聚焦与某一对象的注意力。

(2)自下而上的无意识的注意力,称为基于显著性注意力(Saliency-Based Attention)。是由外界刺激驱动的注意,不需要主动去干预,和任务无关。如果一个对象的刺激信息不同于其周围信息,一种无意识的“赢者通吃”(Winner-Take-All)或者门控(Gating)机制就可以把注意力转向这个对象。

当你在听你的朋友说话时,你专注于你朋友的说话而忽略了周围其他的声音,这就是聚焦式注意力,当你在其他周围声音中听到了感兴趣的词时,你会马上注意到,这是显著性注意力。

给定N组信息输入 [公式] ,每个向量 [公式] 都表示一组输入信息。注意力机制的计算分为两步:一是在所有输入信息上计算注意力分布,二是根据注意力分布来计算输入信息的加权平均。

注意力分布:为了从N个输入向量 [公式] 中选择出和某个特定任务相关的信息,需要引入一个和任务相关的表示称为查询向量(Query Vector),并通过一个打分函数score()计算每个输入向量和查询向量之间的相关性。

给定一个和任务相关的查询向量q,用注意力变量 [公式] 来表示被选择信息的索引位置,即 [公式] 表示选择了第i个输入向量。首先计算在给定q和X下,选择第i个输入向量的概率 [公式] (权重),

[公式]

[公式] 为注意力分布权重, [公式] 为注意力打分函数,打分函数有很多种方式比如:

  1. 加性模型: [公式]
  2. 点积模型: [公式]
  3. 缩放点积模型: [公式]
  4. 双线性模型: [公式]

[公式] 为可学习的参数, [公式] 为输入向量的维度。

点积模型在实现上更好的利用了矩阵乘积,从而计算效率更高,但是当输入向量的维度d比较高,点积模型的值通常有比较大的方差,从而导致softmax函数的梯度比较小,缩放点积模型可以较好的解决此问题。双线性模型可以看作是一种泛化的点积模型,假设双线性模型公式中 [公式] ,原式可写为 [公式] ,分别对x和q进行线性变换后计算点积,相比与点积模型,双线性模型在计算相似度时引入了非对称性。

加权平均:注意力分布 [公式] 可以理解为在给定任务相关的查询q时,第i个输入向量受关注的程度。 [公式]

硬性注意力

软性注意力其选择的信息是所有输入信息在注意力分布下的期望。还有一种只关注到某一位置上的信息,叫做硬性注意力(Hard Attention)。

选择最高概率的输入信息: [公式] ,j为概率最大的输入信息的下标,即 [公式]

硬性注意力缺点是基于最大采样或随机采样的方式来选择信息。因此最终的损失函数与注意力分布之间的函数关系不可导,无法使用反向传播算法进行训练。为了使用反向传播算法,一般使用软性注意力来代替硬性注意力。

键值对注意力

可以用键值对(key-value pair)格式来表示输入信息,其中“键”计算注意力分布 [公式] ,"值"用来计算聚合信息。

用 [公式] 表示N个输入信息,给定任务相关的查询向量q时,注意力函数:

[公式]

其中 [公式] 为打分函数.当 [公式] 时,键值对模式就等价于普通的注意力机制。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM