注意力机制(Attention Mechanism)详解

1. 引言

注意力机制是深度学习中的一种重要技术,最初用于改进Seq2Seq模型在机器翻译任务中的表现。其核心思想是动态分配权重,使模型能够关注输入数据中最相关的部分,从而提升模型性能。


2. 注意力机制的基本概念

2.1 核心思想

注意力机制通过计算注意力权重,决定模型在处理当前任务时应该关注输入数据的哪些部分。这些权重是动态生成的,能够根据任务需求自适应调整。

2.2 主要组件

  1. 查询(Query):当前需要处理的目标信息。
  2. 键(Key):输入数据的表示,用于与查询计算相关性。
  3. 值(Value):输入数据的具体信息,根据相关性加权求和。

3. 注意力机制的数学表示

3.1 计算步骤

  1. 计算注意力得分:
    ei=a(q,ki) e_{i} = a(q, k_i) ei​=a(q,ki​)
    其中aaa是注意力函数,常见的有加性注意力和点积注意力。
  2. 计算注意力权重:
    αi=exp⁡(ei)∑j=1Nexp⁡(ej) \alpha_{i} = \frac{\exp(e_{i})}{\sum_{j=1}^N \exp(e_{j})} αi​=∑j=1N​exp(ej​)exp(ei​)​
  3. 加权求和:
    c=∑i=1Nαivi c = \sum_{i=1}^N \alpha_{i} v_i c=i=1∑N​αi​vi​

3.2 常见注意力函数

  1. 加性注意力:
    a(q,ki)=v⊤tanh⁡(Wqq+Wkki) a(q, k_i) = v^\top \tanh(W_q q + W_k k_i) a(q,ki​)=v⊤tanh(Wq​q+Wk​ki​)
  2. 点积注意力:
    a(q,ki)=q⊤ki a(q, k_i) = q^\top k_i a(q,ki​)=q⊤ki​

4. 注意力机制的类型

4.1 软注意力(Soft Attention)

  • 对所有输入分配权重,权重和为1。
  • 可微,能够通过梯度下降优化。

4.2 硬注意力(Hard Attention)

  • 只选择部分输入,权重为0或1。
  • 不可微,通常需要强化学习等方法优化。

4.3 自注意力(Self-Attention)

  • 查询、键和值来自同一输入序列。
  • 广泛应用于Transformer模型。

5. 注意力机制在Seq2Seq模型中的应用

5.1 传统Seq2Seq的局限性

传统Seq2Seq模型将整个输入序列压缩为一个固定长度的上下文向量,导致信息丢失,尤其在长序列任务中表现不佳。

5.2 注意力机制的改进

通过引入注意力机制,Seq2Seq模型可以动态生成上下文向量,捕捉输入序列中最相关的部分。

数学表示:

  1. 编码器隐藏状态:h1,h2,...,hTh_1, h_2, ..., h_Th1​,h2​,...,hT​
  2. 解码器隐藏状态:sts_tst​
  3. 注意力得分:
    et,i=a(st−1,hi) e_{t,i} = a(s_{t-1}, h_i) et,i​=a(st−1​,hi​)
  4. 注意力权重:
    αt,i=exp⁡(et,i)∑j=1Texp⁡(et,j) \alpha_{t,i} = \frac{\exp(e_{t,i})}{\sum_{j=1}^T \exp(e_{t,j})} αt,i​=∑j=1T​exp(et,j​)exp(et,i​)​
  5. 上下文向量:
    ct=∑i=1Tαt,ihi c_t = \sum_{i=1}^T \alpha_{t,i} h_i ct​=i=1∑T​αt,i​hi​

6. 实例分析:机器翻译

6.1 任务描述

将英文句子"The cat is on the mat"翻译为法文"Le chat est sur le tapis"。

6.2 处理流程

  1. 编码器:
    • 输入序列:[“The”, “cat”, “is”, “on”, “the”, “mat”]
    • 生成隐藏状态:h1,h2,h3,h4,h5,h6h_1, h_2, h_3, h_4, h_5, h_6h1​,h2​,h3​,h4​,h5​,h6​
  2. 解码器:
    • 初始隐藏状态:s0s_0s0​
    • 生成目标序列:[“Le”, “chat”, “est”, “sur”, “le”, “tapis”]
    • 每个时间步的上下文向量:c1,c2,c3,c4,c5,c6c_1, c_2, c_3, c_4, c_5, c_6c1​,c2​,c3​,c4​,c5​,c6​
  3. 注意力机制:
    • 在生成"chat"时,注意力机制会为"cat"分配较高的权重。

7. 数学附录

7.1 梯度计算

注意力机制的梯度计算涉及注意力权重αt,i\alpha_{t,i}αt,i​的导数:
∂αt,i∂et,i=αt,i(1−αt,i) \frac{\partial \alpha_{t,i}}{\partial e_{t,i}} = \alpha_{t,i} (1 - \alpha_{t,i}) ∂et,i​∂αt,i​​=αt,i​(1−αt,i​)

7.2 多头注意力(Multi-Head Attention)

多头注意力通过并行计算多个注意力头,捕捉不同的语义信息:
MultiHead(Q,K,V)=Concat(head1,...,headh)WO \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h) W^O MultiHead(Q,K,V)=Concat(head1​,...,headh​)WO
其中每个注意力头:
headi=Attention(QWiQ,KWiK,VWiV) \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi​=Attention(QWiQ​,KWiK​,VWiV​)


8. 总结

  • 注意力机制通过动态分配权重,使模型能够关注输入数据中最相关的部分。
  • 在Seq2Seq模型中,注意力机制显著提升了长序列任务的表现。
  • 自注意力和多头注意力是Transformer模型的核心组件,推动了自然语言处理领域的快速发展。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐