菜单

注意力机制

相关源文件

注意力机制是深度学习中的一个基本概念,它使模型能够选择性地关注输入数据的相关部分,就像人类在复杂环境中集中注意力一样。本页涵盖了 d2l-ai 库中注意力机制的关键组成部分、架构和应用,作为理解注意力如何在深度学习任务中实现和使用的入口。

有关 Transformer 等特定实现的更多信息,请参阅 Transformer

注意力机制概述

注意力机制解决了序列处理中的一个核心挑战:如何在生成输出时有效处理可变长度的输入并关注输入中最相关的部分。基本思想是根据输入序列不同部分与特定上下文的相关性,为它们分配不同的权重。

来源

关键组件

查询、键和值

注意力机制包含三个主要组成部分:

  1. 查询 (q):表示我们正在寻找什么或感兴趣什么
  2. 键 (k):表示我们将与之比较以确定相关性的内容
  3. 值 (v):表示当注意力集中时,我们要提取或聚合的内容

注意力机制通过将查询与所有键进行比较来计算权重,然后使用这些权重创建值的加权和。

来源

注意力评分函数

注意力评分函数计算查询和一组键之间的兼容性分数。两个流行的评分函数是:

  1. 加性注意力:使用小型神经网络计算兼容性

    • 公式:a(q, k) = wᵀ tanh(W₁q + W₂k)
    • 当查询和键的维度不同时适用
  2. 缩放点积注意力:使用带缩放的点积以提高稳定性

    • 公式:a(q, k) = (q·k)/√d
    • 当查询和键的维度匹配时,计算效率更高

来源

注意力机制实现

Nadaraya-Watson核回归

Nadaraya-Watson核回归是一个简单而完整的例子,演示了机器学习中的注意力机制。它将输出计算为值的加权平均,其中权重取决于查询和键之间的相似性。

来源

Bahdanau 注意力

Bahdanau 注意力,也称为加性注意力,是机器翻译领域的一项突破。它通过允许解码器在每个解码步骤中关注输入序列的不同部分,解决了编码器-解码器架构中固定长度上下文向量的局限性。

来源

自注意力与位置编码

自注意力允许序列中的 token 相互关注,使模型能够捕获任意距离的依赖关系。由于自注意力是排列不变的,因此添加了位置编码来注入位置信息。

来源

多头注意力

多头注意力将基本注意力机制扩展到通过具有不同学习投影的注意力并行应用多次。这使得模型能够联合关注来自不同表示子空间的信息。

来源

Transformer 架构

Transformer 是一种革命性的架构,完全依赖于注意力机制,消除了对循环或卷积层的需求。它已经改变了包括自然语言处理、计算机视觉和语音识别在内的领域。

来源

逐位置前馈网络

Transformer 的输入中的每个位置都由相同的前馈网络处理,该网络由两个线性变换和一个 ReLU 激活组成。

来源

代码结构

d2l-ai 代码库中的注意力机制实现遵循模块化设计,允许轻松组合不同的注意力组件。

组件关键方法描述
注意力评分DotProductAttentionforward实现缩放点积注意力
AdditiveAttentionforward实现加性注意力
多头注意力MultiHeadAttentionforward实现并行注意力头
位置编码PositionalEncodingforward向嵌入添加位置信息
Transformer EncoderTransformerEncoderforward实现完整的编码器堆栈
Transformer DecoderTransformerDecoderforward实现完整的解码器堆栈
Bahdanau 注意力解码器Seq2SeqAttentionDecoderforward, init_state为 seq2seq 实现 Bahdanau 注意力

代码关系图

来源

应用与能力

对比 CNN、RNN 和自注意力

与传统的序列模型相比,注意力机制,特别是自注意力,具有一些优势。

架构计算复杂度顺序操作最大路径长度
CNN (核宽度 k)O(knd²)O(1)O(n/k)
RNNO(nd²)O(n)O(n)
自注意力O(n²d)O(1)O(1)

自注意力在任意两个位置之间的最大路径长度最短,这使得学习长距离依赖关系更容易,尽管代价是序列长度的二次方复杂度。

来源

可视化注意力权重

注意力机制的一个关键优势是其可解释性。注意力权重可以可视化,以了解模型在进行预测时关注输入的哪些部分。

来源

总结

注意力机制通过允许模型选择性地关注输入的相关部分,彻底改变了深度学习。它们构成了 Transformer 等现代架构的基础,Transformer 在多个领域取得了最先进的结果。

注意力机制的关键优势包括:

  • 能够处理可变长度的输入
  • 直接建模长距离依赖关系
  • 训练过程中的并行化
  • 通过注意力权重可视化进行解释

不同类型的注意力(加性、点积、多头、自注意力)为解决深度学习中的各种序列建模挑战提供了灵活的工具集。