概述

本文档基于李宏毅教授的Self-attention教学材料,详细介绍了自注意力机制的原理、应用和相关技术。

1. 输入类型与问题定义

1.1 复杂输入类型

  • 向量输入: 输入是单个向量 → 输出标量或类别
  • 向量集合输入: 输入是向量集合 → 输出标量集合或类别集合(长度可变)

1.2 向量集合作为输入的应用场景

graph TD
    A[向量集合输入] --> B[文本处理]
    A --> C[语音处理]
    A --> D[图像处理]
    A --> E[图结构处理]
    
    B --> B1[词嵌入向量]
    B --> B2[One-hot编码]
    
    C --> C1[音频帧序列]
    C --> C2[MFCC特征]
    
    D --> D1[像素向量]
    D --> D2[图像块]
    
    E --> E1[节点特征向量]
    E --> E2[社交网络]

文本处理

  • One-hot编码: 每个词用独热向量表示
  • 词嵌入: 将词映射到连续向量空间

语音处理

  • 1秒音频 → 100帧(10ms间隔)
  • 每帧包含400个采样点(16KHz)
  • 特征提取:39维MFCC或80维滤波器组输出

图结构处理

  • 社交网络:每个用户档案作为向量
  • 分子结构:每个原子作为向量

2. 输出类型与应用

2.1 三种主要输出类型

graph LR
    A[输入序列] --> B{输出类型}
    B --> C[每个向量一个标签]
    B --> D[整个序列一个标签]
    B --> E[模型自决定标签数量]
    
    C --> C1[词性标注 POS Tagging]
    D --> D1[情感分析]
    E --> E1[序列到序列 seq2seq]
    E --> E2[机器翻译]

2.2 应用实例

  • 序列标注: 词性标注(POS tagging)
  • 序列分类: 情感分析
  • 序列生成: 机器翻译

3. Self-Attention机制

3.1 动机

传统全连接层的局限性:

  • 只能考虑局部窗口
  • 难以处理整个序列的上下文信息

3.2 Self-Attention核心思想

graph TD
    A[输入序列 a1,a2,a3,a4] --> B[Self-Attention层]
    B --> C[输出序列 b1,b2,b3,b4]
    
    D[找到序列中相关的向量] --> E[基于相关性提取信息]
    
    F[Query q] --> G[与Key k计算相关性]
    G --> H[得到注意力分数]
    H --> I[加权组合Value v]

3.3 计算步骤

步骤1: 计算Query、Key、Value

步骤2: 计算注意力分数

点积方式:

加性方式:

步骤3: Softmax归一化

步骤4: 加权求和

3.4 矩阵形式表示

graph LR
    A[输入矩阵 I] --> B[Q = Wq × I]
    A --> C[K = Wk × I]
    A --> D[V = Wv × I]
    
    B --> E[A = Q × KT]
    E --> F[A' = softmax A]
    F --> G[O = A' × V]

关键公式:

其中:

  • (Query矩阵)
  • (Key矩阵)
  • (Value矩阵)
  • 为输入矩阵

4. Multi-Head Self-Attention

4.1 多头注意力的动机

  • 不同类型的相关性
  • 并行计算多种注意力模式

4.2 计算过程

graph TD
    A[输入] --> B[Head 1]
    A --> C[Head 2]
    A --> D[Head h]
    
    B --> E[q1, k1, v1]
    C --> F[q2, k2, v2]
    D --> G[qh, kh, vh]
    
    E --> H[b1]
    F --> I[b2]
    G --> J[bh]
    
    H --> K[Concat]
    I --> K
    J --> K
    
    K --> L[WO × Concat]
    L --> M[最终输出]

每个头的计算:

最终输出:

5. 位置编码 (Positional Encoding)

5.1 问题

Self-attention本身不包含位置信息. 对于 每个 Vector 来说, 天涯若比邻.

5.2 解决方案

为每个位置添加唯一的位置向量

位置编码可以是:

  • 手工设计的
  • 从数据中学习的

6. Self-Attention vs 其他架构

6.1 Self-Attention vs CNN

graph LR
    A[CNN] --> B[简化的Self-Attention]
    B --> C[固定感受野]
    
    D[Self-Attention] --> E[复杂的CNN]
    E --> F[可学习感受野]
    
    G[数据量] --> H{数据量大小}
    H -->|大数据| I[Self-Attention更好]
    H -->|小数据| J[CNN更好]

6.2 Self-Attention vs RNN

特性Self-AttentionRNN
并行性并行计算顺序计算
长距离依赖容易捕获难以捕获
计算复杂度
内存需求

7. 应用领域

7.1 自然语言处理

  • Transformer: “Attention is All You Need”
  • BERT: 双向编码器表示

7.2 计算机视觉

  • Vision Transformer (ViT): 图像分类
  • DETR: 目标检测
  • Self-Attention GAN: 图像生成

7.3 语音处理

  • 截断自注意力(Truncated Self-attention)
  • 范围内注意力机制

7.4 图神经网络

  • 基于连接关系的注意力
  • 只对相连节点计算注意力
graph TD
    A[Self-Attention应用] --> B[NLP]
    A --> C[CV]
    A --> D[Speech]
    A --> E[Graph]
    
    B --> B1[Transformer]
    B --> B2[BERT]
    
    C --> C1[ViT]
    C --> C2[DETR]
    C --> C3[SA-GAN]
    
    D --> D1[语音识别]
    D --> D2[截断注意力]
    
    E --> E1[社交网络]
    E --> E2[分子结构]

8. 进一步学习资源

  • 长距离任务基准: Long Range Arena
  • 高效Transformer综述: Efficient Transformers Survey
  • 相关论文:
    • Attention is All You Need
    • BERT: Pre-training of Deep Bidirectional Transformers
    • An Image is Worth 16x16 Words

refer