详解加性注意力和缩放点积注意力

详解加性注意力和缩放点积注意力

注意力机制

注意力机制的本质是加权求和,评分函数a计算查询与键之间的注意力分数,经过softmax计算得到注意力权重,权重与值进行加权求和得到注意力输出。

在这里插入图片描述

用数学语言描述,假设有一个查询 𝐪∈ℝ𝑞和 𝑚个“键-值”对 (𝐤1,𝐯1),…,(𝐤𝑚,𝐯𝑚), 其中𝐤𝑖∈ℝ𝑘,𝐯𝑖∈ℝ𝑣。 注意力汇聚函数𝑓就被表示成值的加权和:
f ( q , ( k 1 , v 1 ) , … , ( k m , v m ) ) = ∑ i = 1 m α ( q , k i ) v i ∈ R v f(\mathbf{q}, (\mathbf{k}_1, \mathbf{v}_1), \ldots, (\mathbf{k}_m, \mathbf{v}_m)) = \sum_{i=1}^m \alpha(\mathbf{q}, \mathbf{k}_i) \mathbf{v}_i \in \mathbb{R}^v f(q,(k1,v1),,(km,vm))=i=1mα(q,ki)viRv
其中查询𝐪和键𝐤𝑖的注意力权重(标量)是通过注意力评分函数𝑎将两个向量映射成标量, 再经过softmax运算得到的:
α ( q , k i ) = s o f t m a x ( a ( q , k i ) ) = exp ⁡ ( a ( q , k i ) ) ∑ j = 1 m exp ⁡ ( a ( q , k j ) ) ∈ R \alpha(\mathbf{q}, \mathbf{k}_i) = \mathrm{softmax}(a(\mathbf{q}, \mathbf{k}_i)) = \frac{\exp(a(\mathbf{q}, \mathbf{k}_i))}{\sum_{j=1}^m \exp(a(\mathbf{q}, \mathbf{k}_j))} \in \mathbb{R} α(q,ki)=softmax(a(q,ki))=j=1mexp(a(q,kj))exp(a(q,ki))R
选择不同的注意力评分函数𝑎会导致不同的注意力汇聚操作,主流的评分函数有:加性和缩放点积两种,下面分别介绍。

加性注意力

给定查询𝐪∈ℝ𝑞和 键𝐤∈ℝ𝑘, 加性注意力(additive attention)的评分函数为:
a ( q , k ) = w v ⊤ tanh ( W q q + W k k ) ∈ R a(\mathbf q, \mathbf k) = \mathbf w_v^\top \text{tanh}(\mathbf W_q\mathbf q + \mathbf W_k \mathbf k) \in \mathbb{R} a(q,k)=wvtanh(Wqq+Wkk)R
其中可学习的参数是𝐖𝑞∈ℝℎ×𝑞、 𝐖𝑘∈ℝℎ×𝑘和 𝐰𝑣∈ℝℎ。 加性注意力评分函数可以看作,将查询和键连结起来后输入到一个多层感知机(MLP)中, 感知机包含一个隐藏层,其隐藏单元数是一个超参数ℎ。 通过使用tanh作为激活函数,并且禁用偏置项,如下图所示:
在这里插入图片描述

缩放点积注意力

缩放点积注意力(scaled dot-product attention)评分函数为:
a ( q , k ) = q ⊤ k / d a(\mathbf q, \mathbf k) = \mathbf{q}^\top \mathbf{k} /\sqrt{d} a(q,k)=qk/d
其中q,k均为d维向量。在实践中,我们通常从小批量的角度来考虑提高效率, 例如基于𝑛个查询和𝑚个键-值对计算注意力, 其中查询和键的长度为𝑑,值的长度为𝑣。 查询𝐐∈ℝ𝑛×𝑑、 键𝐊∈ℝ𝑚×𝑑和 值𝐕∈ℝ𝑚×𝑣的缩放点积注意力是:
s o f t m a x ( Q K ⊤ d ) V ∈ R n × v \mathrm{softmax}\left(\frac{\mathbf Q \mathbf K^\top }{\sqrt{d}}\right) \mathbf V \in \mathbb{R}^{n\times v} softmax(d QK)VRn×v
假设查询和键的所有元素都是独立的随机变量, 并且都满足零均值和单位方差, 那么两个向量的点积的均值为0,方差为d。 为确保无论向量长度如何, 点积的方差在不考虑向量长度的情况下仍然是1, 将点积除以𝑑^0.5。

总结

  1. 加性注意力和缩放点积注意力计算复杂度接近,但矩阵乘法有非常成熟的加速实现,所以缩放点积注意力的计算效率更高。
  2. 在d(注意力矩阵的维度)较小时,加性和缩放点积注意力效果接近,但随着d的增大,加性注意力开始显著超越缩放点积。原因是极大的点积值将整个 softmax 推向梯度平缓区,使得收敛困难,所以缩放点积注意力需要除以d^0.5。

参考文献

  1. B站-跟李沐学AI-注意力分数

  2. transformer中的attention为什么scaled?

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
注意力机制和循环神经网络(RNN)是两种不同的技术,但它们经常结合在一起使用,以增强模型在处理序列数据(如自然语言文本)时的性能。 循环神经网络是一种具有循环连接的神经网络结构,它能够处理序列数据并保留之前的信息。RNN通过将当前输入和前一个时间步的隐藏状态进行组合,来计算当前时间步的隐藏状态。这样,RNN能够在处理序列数据时捕捉到上下文信息,并且可以通过反向传播来学习序列中的模式和依赖关系。 然而,传统的RNN存在梯度消失或梯度爆炸的问题,导致难以捕捉长期依赖关系。为了解决这个问题,一种改进的RNN结构被提出,称为长短时记忆网络(LSTM)或门控循环单元(GRU)。LSTM和GRU引入了门控机制,可以选择性地遗忘和更新信息,从而增强了模型对长期依赖关系的建模能力。 而注意力机制是一种用于处理序列数据的机制,它通过动态地对序列中不同位置的重要性进行加权,使模型能够在处理序列时更加关注与当前任务相关的部分。注意力机制将当前时间步的输入与之前的隐藏状态进行比较,并计算出每个时间步的权重,表示模型对该时间步的关注程度。然后,模型根据这些权重对序列进行加权求和,得到当前时间步的上下文向量。 注意力机制可以帮助模型在处理长序列时,更有效地捕捉到与当前任务相关的信息,避免信息的扩散或丢失。它在机器翻译、文本摘要、问答系统等任务中被广泛应用。 综上所述,注意力机制和循环神经网络是两种独立的技术,但它们在处理序列数据时常常结合使用,以提升模型的性能和表现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值