注意力机制的两种常用形式-----加性注意力(Additive Attention)和点积注意力(Dot-product Attention)

注意力机制的两种常用形式

注意力机制是现代自然语言处理模型(如Transformer)的核心组件。最常用的两种注意力机制是加性注意力(Additive Attention)和点积注意力(Dot-product Attention)。下面详细解释并举例说明这两种注意力机制的工作原理和区别。

1. 加性注意力(Additive Attention)

加性注意力通过一个前馈神经网络(feed-forward network)计算查询(query)和键(key)之间的相似度,具体步骤如下:

  1. 输入:查询 Q Q Q和键 K K K

  2. 计算相似度:通过一个前馈神经网络计算相似度:
    e i j = v ⊤ tanh ⁡ ( W q Q i + W k K j ) e_{ij} = \text{v}^\top \tanh(\text{W}_q Q_i + \text{W}_k K_j) eij=vtanh(WqQi+WkKj)
    其中, W q \text{W}_q Wq W k \text{W}_k Wk是可学习的权重矩阵, v \text{v} v是一个可学习的向量。

  3. 计算注意力权重:将相似度通过softmax函数进行归一化:
    α i j = exp ⁡ ( e i j ) ∑ k exp ⁡ ( e i k ) \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k} \exp(e_{ik})} αij=kexp(eik)exp(eij)

  4. 加权求和:利用注意力权重对值(value) V V V进行加权求和,得到输出:
    Attention ( Q , K , V ) = ∑ j α i j V j \text{Attention}(Q, K, V) = \sum_{j} \alpha_{ij} V_j Attention(Q,K,V)=jαijVj

2. 点积注意力(Dot-product Attention)

点积注意力通过计算查询 Q Q Q和键 K K K的点积来衡量相似度,并加上一个缩放因子,具体步骤如下:

  1. 输入:查询 Q Q Q和键 K K K

  2. 计算相似度:通过计算点积并除以缩放因子 d k \sqrt{d_k} dk
    e i j = Q i ⋅ K j ⊤ d k e_{ij} = \frac{Q_i \cdot K_j^\top}{\sqrt{d_k}} eij=dk QiKj
    其中, d k d_k dk是键的维度。

  3. 计算注意力权重:将相似度通过softmax函数进行归一化:
    α i j = exp ⁡ ( e i j ) ∑ k exp ⁡ ( e i k ) \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k} \exp(e_{ik})} αij=kexp(eik)exp(eij)

  4. 加权求和:利用注意力权重对值 V V V进行加权求和,得到输出:
    Attention ( Q , K , V ) = ∑ j α i j V j \text{Attention}(Q, K, V) = \sum_{j} \alpha_{ij} V_j Attention(Q,K,V)=jαijVj

数据示例

假设我们有如下数据:

  • 查询 Q Q Q [ 1 0 0 1 ] \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} [1001]
  • K K K [ 1 2 3 4 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} [1324]
  • V V V [ 5 6 7 8 ] \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} [5768]
加性注意力示例
  1. 计算相似度

    先计算前馈神经网络的输出,假设 W q = W k = I \text{W}_q = \text{W}_k = \text{I} Wq=Wk=I(单位矩阵), v ⊤ = [ 1 1 ] \text{v}^\top = \begin{bmatrix} 1 & 1 \end{bmatrix} v=[11]

    对于 Q 1 = [ 1 0 ] Q_1 = \begin{bmatrix} 1 & 0 \end{bmatrix} Q1=[10] K 1 = [ 1 2 ] K_1 = \begin{bmatrix} 1 & 2 \end{bmatrix} K1=[12]
    e 11 = [ 1 1 ] ⋅ tanh ⁡ ( [ 1 0 0 1 ] [ 1 0 ] + [ 1 0 0 1 ] [ 1 2 ] ) = 1 e_{11} = \begin{bmatrix} 1 & 1 \end{bmatrix} \cdot \tanh\left(\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \end{bmatrix} + \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \end{bmatrix}\right) = 1 e11=[11]tanh([1001][10]+[1001][12])=1

    对于 Q 1 Q_1 Q1 K 2 = [ 3 4 ] K_2 = \begin{bmatrix} 3 & 4 \end{bmatrix} K2=[34]
    e 12 = [ 1 1 ] ⋅ tanh ⁡ ( [ 4 4 ] ) ≈ 0.999 e_{12} = \begin{bmatrix} 1 & 1 \end{bmatrix} \cdot \tanh\left(\begin{bmatrix} 4 \\ 4 \end{bmatrix}\right) \approx 0.999 e12=[11]tanh([44])0.999

    类似地,计算其他相似度 e 21 e_{21} e21 e 22 e_{22} e22

  2. 计算注意力权重

    例如对于 Q 1 Q_1 Q1
    α 11 = exp ⁡ ( 1 ) exp ⁡ ( 1 ) + exp ⁡ ( 0.999 ) ≈ 0.5001 \alpha_{11} = \frac{\exp(1)}{\exp(1) + \exp(0.999)} \approx 0.5001 α11=exp(1)+exp(0.999)exp(1)0.5001
    α 12 = exp ⁡ ( 0.999 ) exp ⁡ ( 1 ) + exp ⁡ ( 0.999 ) ≈ 0.4999 \alpha_{12} = \frac{\exp(0.999)}{\exp(1) + \exp(0.999)} \approx 0.4999 α12=exp(1)+exp(0.999)exp(0.999)0.4999

  3. 加权求和

    对于 Q 1 Q_1 Q1
    Attention ( Q 1 , K , V ) = 0.5001 [ 5 6 ] + 0.4999 [ 7 8 ] ≈ [ 6 7 ] \text{Attention}(Q_1, K, V) = 0.5001 \begin{bmatrix} 5 & 6 \end{bmatrix} + 0.4999 \begin{bmatrix} 7 & 8 \end{bmatrix} \approx \begin{bmatrix} 6 & 7 \end{bmatrix} Attention(Q1,K,V)=0.5001[56]+0.4999[78][67]

点积注意力示例
  1. 计算相似度

    直接计算点积并除以缩放因子 d k \sqrt{d_k} dk (假设 d k = 2 d_k = 2 dk=2):

    对于 Q 1 Q_1 Q1 K 1 K_1 K1
    e 11 = 1 ⋅ 1 + 0 ⋅ 2 2 = 1 2 e_{11} = \frac{1 \cdot 1 + 0 \cdot 2}{\sqrt{2}} = \frac{1}{\sqrt{2}} e11=2 11+02=2 1

    对于 Q 1 Q_1 Q1 K 2 K_2 K2
    e 12 = 1 ⋅ 3 + 0 ⋅ 4 2 = 3 2 e_{12} = \frac{1 \cdot 3 + 0 \cdot 4}{\sqrt{2}} = \frac{3}{\sqrt{2}} e12=2 13+04=2 3

    类似地,计算其他相似度 e 21 e_{21} e21 e 22 e_{22} e22

  2. 计算注意力权重

    例如对于 Q 1 Q_1 Q1
    α 11 = exp ⁡ ( 1 2 ) exp ⁡ ( 1 2 ) + exp ⁡ ( 3 2 ) ≈ 0.1192 \alpha_{11} = \frac{\exp(\frac{1}{\sqrt{2}})}{\exp(\frac{1}{\sqrt{2}}) + \exp(\frac{3}{\sqrt{2}})} \approx 0.1192 α11=exp(2 1)+exp(2 3)exp(2 1)0.1192
    α 12 = exp ⁡ ( 3 2 ) exp ⁡ ( 1 2 ) + exp ⁡ ( 3 2 ) ≈ 0.8808 \alpha_{12} = \frac{\exp(\frac{3}{\sqrt{2}})}{\exp(\frac{1}{\sqrt{2}}) + \exp(\frac{3}{\sqrt{2}})} \approx 0.8808 α12=exp(2 1)+exp(2 3)exp(2 3)0.8808

  3. 加权求和

    对于 Q 1 Q_1 Q1
    Attention ( Q 1 , K , V ) = 0.1192 [ 5 6 ] + 0.8808 [ 7 8 ] ≈ [ 6.7624 7.7624 ] \text{Attention}(Q_1, K, V) = 0.1192 \begin{bmatrix} 5 & 6 \end{bmatrix} + 0.8808 \begin{bmatrix} 7 & 8 \end{bmatrix} \approx \begin{bmatrix} 6.7624 & 7.7624 \end{bmatrix} Attention(Q1,K,V)=0.1192[56]+0.8808[78][6.76247.7624]

结论

加性注意力和点积注意力在理论复杂度上相似,但点积注意力更快且更节省空间,因为它可以利用高度优化的矩阵乘法代码。通过具体数据示例,我们可以看到这两种注意力机制的工作原理和实际计算过程。

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
交互注意力机制是一种在两个向量之间进行关注度计算的机制,常见的有Dot-Product AttentionAdditive Attention和Multiplicative Attention等。它们的区别如下: 1. Dot-Product Attention:这种注意力机制是通过计算两个向量之间的点积来得到注意力权重的。具体地,设两个向量为 $a$ 和 $b$,则点积得分为 $score(a, b) = a^Tb$,然后通过对得分进行softmax归一化,得到注意力权重。Dot-Product Attention的优点是计算简单,速度快,但其缺点是可能存在数值稳定性问题。 2. Additive Attention:这种注意力机制是通过将两个向量拼接成一个新的向量,然后通过一个全连接神经网络来计算得分。具体地,将两个向量拼接成 $[a;b]$,然后通过线性变换和激活函数得到得分 $score(a, b) = v^Ttanh(W[a;b]+b)$,其中 $W$ 和 $b$ 是线性变换的参数,$v$ 是用来计算得分的向量。Additive Attention的优点是能够处理不同维度的向量,但其缺点是计算复杂度高。 3. Multiplicative Attention:这种注意力机制是通过对两个向量进行逐元素乘法,得到一个新的向量,然后通过一个全连接神经网络来计算得分。具体地,设两个向量为 $a$ 和 $b$,则逐元素乘法得到 $c = a \odot b$,然后通过线性变换和激活函数得到得分 $score(a, b) = v^Ttanh(Wc+b)$,其中 $W$ 和 $b$ 是线性变换的参数,$v$ 是用来计算得分的向量。Multiplicative Attention的优点是计算复杂度低,但其缺点是可能存在信息损失的问题。 需要注意的是,不同的注意力机制适用于不同的场景和任务,具体选择哪种机制取决于具体需求和数据特点。同时,也可以结合不同机制的优点,进行多机制融合,提高注意力机制的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值