一、Transformer 模型核心知识点(重点)

1. Transformer 概述与诞生背景

  1. 诞生里程碑:2017 年 Google Brain 团队发表《Attention Is All You Need》,彻底颠覆了序列建模领域,首次提出完全基于注意力机制的网络架构,完全摒弃了传统的循环神经网络(RNN/LSTM/GRU)和卷积神经网络(CNN)
  2. 传统模型的痛点
    • RNN/LSTM:时序依赖导致无法并行计算,训练速度慢;长距离依赖容易出现梯度消失问题
    • CNN:只能捕捉局部特征,长距离依赖需要堆叠多层卷积
  3. Transformer 的核心优势
    • 高度并行化:所有位置的计算可以同时进行,充分利用 GPU 算力,训练速度大幅提升
    • 长距离依赖捕捉:自注意力机制可以直接计算序列中任意两个位置的依赖关系
    • 模型性能更优:在机器翻译等任务上 BLEU 分数显著超过之前的最佳模型
  4. 整体架构总览:采用经典的编码器 - 解码器(Encoder-Decoder) 架构,由 6 个核心部分组成:输入嵌入、位置编码、N 层编码器堆叠、N 层解码器堆叠、线性层、Softmax 输出层。

2. 输入部分详解

2.1 词嵌入(Word Embedding)
  1. 完整处理流程
    • 分词与 Token 化:将输入文本按单词 / 子词切分,转换为整数索引序列(Token 序列)
    • 长度对齐:对不同长度的序列进行填充(Padding)剪切(Truncation),使所有样本长度一致
    • 独热编码:将每个 Token 转换为维度等于词汇表大小的独热向量
    • 低维映射:通过可学习的嵌入矩阵,将高维稀疏的独热向量映射为低维稠密的词向量(通常 d=512)
  2. 实现方式
    • Word2Vec:包含 CBOW(根据上下文预测中心词)和 Skip-gram(根据中心词预测上下文)两种模式
    • PyTorch 实现:nn.Embedding(num_embeddings, embedding_dim),输入为整数张量,输出为词向量张量
  3. 示例:词汇表大小为 5,嵌入维度为 24,输入[1,2,3,4]会输出形状为[4,24]的词向量矩阵
2.2 位置编码(Positional Encoding)
  1. 必要性:Transformer 没有循环或卷积结构,无法天然感知序列的位置信息,而单词在句子中的位置直接影响语义(如 "我打他" 和 "他打我")
  2. 被淘汰的方案
    • 整数位置编码:位置值远大于词向量值,信噪比极低,模型难以区分语义和位置信息
    • 二进制位置编码:相邻位置的向量可能差异很大,违背了 "相邻位置语义更相似" 的直观认知
  3. 最终方案:正弦余弦位置编码
    • 公式: \(PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i/d}}\right)\) \(PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i/d}}\right)\) 其中,pos是单词在序列中的位置,i是向量维度的索引,d是模型维度
    • 特点:
      • 每个位置对应一个唯一的 d 维向量
      • 相邻位置的编码向量相似度高
      • 可以推广到训练中未见过的更长序列
  4. 最终输入表示:词嵌入向量与位置编码向量逐元素相加,得到 Transformer 的最终输入向量

3. 编码器(Encoder)深度解析

  1. 整体结构:由N 个完全相同的编码器层堆叠而成(原始论文中 N=6),每个编码器层包含两个子层
  2. 第一个子层:多头自注意力层 + Add & Norm
    • 自注意力机制计算步骤
      1. 生成 Q、K、V 矩阵:输入矩阵 X 分别与三个可学习的权重矩阵\(W_Q, W_K, W_V\)相乘,得到查询矩阵 Q、键矩阵 K、值矩阵 V
      2. 计算注意力分数:\(scores = Q \cdot K^T\)
      3. 缩放:\(scores = scores / \sqrt{d_k}\)(\(d_k\)是 K 的维度,防止点积过大导致 Softmax 梯度消失)
      4. Softmax 归一化:\(attention\_weights = softmax(scores)\)
      5. 加权求和:\(output = attention\_weights \cdot V\)
    • 多头自注意力
      • 将 Q、K、V 分别拆分为 h 个头部(原始论文 h=8)
      • 每个头部独立计算自注意力
      • 将所有头部的输出拼接起来,再通过一个线性层\(W_O\)得到最终输出
      • 优势:可以同时关注序列中不同位置、不同语义层面的信息
    • Add & Norm
      • Add:残差连接,\(X + MultiHeadAttention(X)\),缓解梯度消失问题
      • Norm:层归一化(Layer Normalization),将每一层的输入归一化为均值为 0、方差为 1 的分布,加速模型收敛
  3. 第二个子层:前馈全连接网络 + Add & Norm
    • 结构:两层全连接网络,中间使用 ReLU 激活函数
    • 公式:\(FFN(x) = max(0, xW_1 + b_1)W_2 + b_2\)
    • 特点:输入和输出维度保持一致(d=512),中间隐藏层维度通常为 4d=2048
  4. 编码器输出:最后一个编码器层的输出会作为解码器中交叉注意力层的 K 和 V 输入

4. 解码器(Decoder)深度解析

  1. 整体结构:由N 个完全相同的解码器层堆叠而成(原始论文中 N=6),每个解码器层包含三个子层
  2. 第一个子层:掩码多头自注意力层 + Add & Norm
    • 掩码(Mask)操作:在计算自注意力时,屏蔽掉当前位置之后的所有 Token,防止模型在预测时 "看到未来" 的信息
    • 实现方式:将未来位置的注意力分数设置为\(-10^9\),这样经过 Softmax 后这些位置的权重会趋近于 0
  3. 第二个子层:多头交叉注意力层 + Add & Norm
    • 输入来源:Q 来自解码器上一层的输出,K 和 V 来自编码器的最终输出
    • 作用:实现源序列(如中文)和目标序列(如英文)之间的语义对齐,让模型在生成目标词时关注源序列中相关的词
  4. 第三个子层:前馈全连接网络 + Add & Norm:与编码器中的前馈网络结构完全相同

5. 输出部分与训练过程

  1. 输出部分
    • 线性层:将解码器输出的 d 维向量映射到维度等于目标语言词汇表大小的向量
    • Softmax 层:将线性层的输出转换为概率分布,每个位置对应词汇表中一个词的概率
    • 预测:选择概率最大的词作为当前位置的输出
  2. 训练过程(以机器翻译为例)
    • 输入:源语言句子和对应的目标语言句子(右移一位,开头添加起始符<s>
    • 前向传播:编码器处理源语言句子,解码器根据编码器输出和已生成的目标词预测下一个词
    • 损失计算:使用交叉熵损失函数,比较预测概率分布和真实标签
    • 反向传播:根据损失更新模型所有可学习参数
  3. 训练细节
    • 数据集:WMT2014 英语 - 德语(450 万句对)、英语 - 法语(3600 万句对)
    • 硬件:8 个 NVIDIA P100 GPU
    • 训练时长:基础模型训练 10 万步(约 12 小时),大模型训练 30 万步(约 3.5 天)
    • 性能:大模型在 WMT2014 英德翻译任务上 BLEU=28.4,英法翻译任务上 BLEU=41.0

6. Transformer 的意义与扩展

  • 是现代大语言模型(LLM)的基础架构,GPT、BERT 等模型均基于 Transformer
  • 已扩展到计算机视觉(ViT)、语音识别、多模态等多个领域
  • 核心贡献:证明了注意力机制可以完全替代 RNN 和 CNN,实现高效的序列建模

二、深度学习视觉应用知识点

1. 常用视觉数据集详解

1.1 入门级数据集
  1. MNIST 手写数字数据集
    • 内容:60000 张训练图像 + 10000 张测试图像,28×28 灰度图,10 个类别(0-9)
    • 用途:深度学习入门的 "Hello World",用于验证分类算法的正确性
  2. Fashion-MNIST 服饰数据集
    • 内容:与 MNIST 完全相同的尺寸和划分,10 个类别(T 恤、裤子、套头衫等)
    • 优势:比 MNIST 更具挑战性,是 MNIST 的现代替代品
1.2 中级数据集
  1. CIFAR-10 数据集
    • 内容:60000 张 32×32 彩色图像,10 个类别(飞机、汽车、鸟、猫等),50000 训练 + 10000 测试
    • 特点:图像尺寸小,类别差异大,适合快速验证模型
  2. PASCAL VOC2012 数据集
    • 内容:20 个目标类别,包含分类、检测、语义分割三种任务的标注
    • 标注格式:XML 文件,包含图像大小、目标类别、边界框坐标等信息
    • 数据量:约 11540 张图像,27450 个标注目标
1.3 高级数据集
  1. MS COCO 数据集
    • 全称:Microsoft Common Objects in Context
    • 内容:80 个目标类别,33 万 + 张图像,20 万 + 张有标注,150 万 + 个目标实例
    • 任务:支持目标检测、语义分割、实例分割、人体关键点检测等
    • 地位:当前目标检测和分割领域最权威的基准数据集
  2. ImageNet 数据集
    • 内容:1400 万 + 张图像,21841 个类别,100 万 + 张有边界框标注
    • 意义:推动了深度学习在计算机视觉领域的革命,是预训练模型的主要数据源
  3. JFT-300M 数据集
    • 谷歌内部数据集,3 亿张图像,10 亿 + 个标签
    • 用途:训练大型图像分类模型

2. 视觉任务核心评价指标

  1. 混淆矩阵(Confusion Matrix)
    • TP(真正例):实际为正例,预测为正例
    • FP(假正例):实际为负例,预测为正例
    • FN(假负例):实际为正例,预测为负例
    • TN(真负例):实际为负例,预测为负例
  2. 基础分类指标
    • 精确率(Precision):\(P = \frac{TP}{TP+FP}\),表示预测为正例的样本中实际为正例的比例
    • 召回率(Recall):\(R = \frac{TP}{TP+FN}\),表示实际为正例的样本中被正确预测的比例
    • 准确率(Accuracy):\(Acc = \frac{TP+TN}{TP+FP+FN+TN}\),表示所有样本中被正确预测的比例
  3. P-R 曲线
    • 以召回率为横轴,精确率为纵轴绘制的曲线
    • 特点:精确率和召回率通常是此消彼长的关系
    • 用途:评估分类器在不同阈值下的性能
  4. 平均精度(AP)与均值平均精度(mAP)
    • AP:P-R 曲线下的面积,衡量单个类别的检测性能
    • mAP:所有类别 AP 的平均值,是目标检测和分割任务的核心评价指标
    • 计算示例:通过调整阈值得到不同的 P-R 值,然后积分计算 AP

3. 经典视觉任务与模型

3.1 目标检测
  1. 任务定义:在图像中找到所有目标的位置(边界框)并识别其类别
  2. 发展脉络
    • 两阶段检测器:R-CNN → SPP-Net → Fast R-CNN → Faster R-CNN
    • 一阶段检测器:YOLO 系列、SSD 系列
  3. YOLO(You Only Look Once)
    • 核心思想:将目标检测视为一个回归问题,单次前向传播即可同时预测边界框和类别
    • 优势:速度快,适合实时检测场景
    • 不足:小目标检测精度略低于两阶段检测器
3.2 语义分割
  1. 任务定义:对图像中的每个像素进行分类,实现像素级的图像理解
  2. 经典模型
    • FCN(全卷积网络):第一个端到端的语义分割模型,用卷积层替代全连接层
    • DeepLab 系列:引入空洞卷积、条件随机场等技术,提升分割精度
  3. 应用场景:自动驾驶、医学影像分析、卫星图像分析等
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐