神经网络与深度学习第四周课程总结报告
·
一、Transformer 模型核心知识点(重点)
1. Transformer 概述与诞生背景
- 诞生里程碑:2017 年 Google Brain 团队发表《Attention Is All You Need》,彻底颠覆了序列建模领域,首次提出完全基于注意力机制的网络架构,完全摒弃了传统的循环神经网络(RNN/LSTM/GRU)和卷积神经网络(CNN)。
- 传统模型的痛点
- RNN/LSTM:时序依赖导致无法并行计算,训练速度慢;长距离依赖容易出现梯度消失问题
- CNN:只能捕捉局部特征,长距离依赖需要堆叠多层卷积
- Transformer 的核心优势
- 高度并行化:所有位置的计算可以同时进行,充分利用 GPU 算力,训练速度大幅提升
- 长距离依赖捕捉:自注意力机制可以直接计算序列中任意两个位置的依赖关系
- 模型性能更优:在机器翻译等任务上 BLEU 分数显著超过之前的最佳模型
- 整体架构总览:采用经典的编码器 - 解码器(Encoder-Decoder) 架构,由 6 个核心部分组成:输入嵌入、位置编码、N 层编码器堆叠、N 层解码器堆叠、线性层、Softmax 输出层。
2. 输入部分详解
2.1 词嵌入(Word Embedding)
- 完整处理流程
- 分词与 Token 化:将输入文本按单词 / 子词切分,转换为整数索引序列(Token 序列)
- 长度对齐:对不同长度的序列进行填充(Padding) 或剪切(Truncation),使所有样本长度一致
- 独热编码:将每个 Token 转换为维度等于词汇表大小的独热向量
- 低维映射:通过可学习的嵌入矩阵,将高维稀疏的独热向量映射为低维稠密的词向量(通常 d=512)
- 实现方式
- Word2Vec:包含 CBOW(根据上下文预测中心词)和 Skip-gram(根据中心词预测上下文)两种模式
- PyTorch 实现:
nn.Embedding(num_embeddings, embedding_dim),输入为整数张量,输出为词向量张量
- 示例:词汇表大小为 5,嵌入维度为 24,输入
[1,2,3,4]会输出形状为[4,24]的词向量矩阵
2.2 位置编码(Positional Encoding)
- 必要性:Transformer 没有循环或卷积结构,无法天然感知序列的位置信息,而单词在句子中的位置直接影响语义(如 "我打他" 和 "他打我")
- 被淘汰的方案
- 整数位置编码:位置值远大于词向量值,信噪比极低,模型难以区分语义和位置信息
- 二进制位置编码:相邻位置的向量可能差异很大,违背了 "相邻位置语义更相似" 的直观认知
- 最终方案:正弦余弦位置编码
- 公式: \(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 维向量
- 相邻位置的编码向量相似度高
- 可以推广到训练中未见过的更长序列
- 公式: \(PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i/d}}\right)\) \(PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i/d}}\right)\) 其中,
- 最终输入表示:词嵌入向量与位置编码向量逐元素相加,得到 Transformer 的最终输入向量
3. 编码器(Encoder)深度解析
- 整体结构:由N 个完全相同的编码器层堆叠而成(原始论文中 N=6),每个编码器层包含两个子层
- 第一个子层:多头自注意力层 + Add & Norm
- 自注意力机制计算步骤:
- 生成 Q、K、V 矩阵:输入矩阵 X 分别与三个可学习的权重矩阵\(W_Q, W_K, W_V\)相乘,得到查询矩阵 Q、键矩阵 K、值矩阵 V
- 计算注意力分数:\(scores = Q \cdot K^T\)
- 缩放:\(scores = scores / \sqrt{d_k}\)(\(d_k\)是 K 的维度,防止点积过大导致 Softmax 梯度消失)
- Softmax 归一化:\(attention\_weights = softmax(scores)\)
- 加权求和:\(output = attention\_weights \cdot V\)
- 多头自注意力:
- 将 Q、K、V 分别拆分为 h 个头部(原始论文 h=8)
- 每个头部独立计算自注意力
- 将所有头部的输出拼接起来,再通过一个线性层\(W_O\)得到最终输出
- 优势:可以同时关注序列中不同位置、不同语义层面的信息
- Add & Norm:
- Add:残差连接,\(X + MultiHeadAttention(X)\),缓解梯度消失问题
- Norm:层归一化(Layer Normalization),将每一层的输入归一化为均值为 0、方差为 1 的分布,加速模型收敛
- 自注意力机制计算步骤:
- 第二个子层:前馈全连接网络 + Add & Norm
- 结构:两层全连接网络,中间使用 ReLU 激活函数
- 公式:\(FFN(x) = max(0, xW_1 + b_1)W_2 + b_2\)
- 特点:输入和输出维度保持一致(d=512),中间隐藏层维度通常为 4d=2048
- 编码器输出:最后一个编码器层的输出会作为解码器中交叉注意力层的 K 和 V 输入
4. 解码器(Decoder)深度解析
- 整体结构:由N 个完全相同的解码器层堆叠而成(原始论文中 N=6),每个解码器层包含三个子层
- 第一个子层:掩码多头自注意力层 + Add & Norm
- 掩码(Mask)操作:在计算自注意力时,屏蔽掉当前位置之后的所有 Token,防止模型在预测时 "看到未来" 的信息
- 实现方式:将未来位置的注意力分数设置为\(-10^9\),这样经过 Softmax 后这些位置的权重会趋近于 0
- 第二个子层:多头交叉注意力层 + Add & Norm
- 输入来源:Q 来自解码器上一层的输出,K 和 V 来自编码器的最终输出
- 作用:实现源序列(如中文)和目标序列(如英文)之间的语义对齐,让模型在生成目标词时关注源序列中相关的词
- 第三个子层:前馈全连接网络 + Add & Norm:与编码器中的前馈网络结构完全相同
5. 输出部分与训练过程
- 输出部分
- 线性层:将解码器输出的 d 维向量映射到维度等于目标语言词汇表大小的向量
- Softmax 层:将线性层的输出转换为概率分布,每个位置对应词汇表中一个词的概率
- 预测:选择概率最大的词作为当前位置的输出
- 训练过程(以机器翻译为例)
- 输入:源语言句子和对应的目标语言句子(右移一位,开头添加起始符
<s>) - 前向传播:编码器处理源语言句子,解码器根据编码器输出和已生成的目标词预测下一个词
- 损失计算:使用交叉熵损失函数,比较预测概率分布和真实标签
- 反向传播:根据损失更新模型所有可学习参数
- 输入:源语言句子和对应的目标语言句子(右移一位,开头添加起始符
- 训练细节
- 数据集: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 入门级数据集
- MNIST 手写数字数据集
- 内容:60000 张训练图像 + 10000 张测试图像,28×28 灰度图,10 个类别(0-9)
- 用途:深度学习入门的 "Hello World",用于验证分类算法的正确性
- Fashion-MNIST 服饰数据集
- 内容:与 MNIST 完全相同的尺寸和划分,10 个类别(T 恤、裤子、套头衫等)
- 优势:比 MNIST 更具挑战性,是 MNIST 的现代替代品
1.2 中级数据集
- CIFAR-10 数据集
- 内容:60000 张 32×32 彩色图像,10 个类别(飞机、汽车、鸟、猫等),50000 训练 + 10000 测试
- 特点:图像尺寸小,类别差异大,适合快速验证模型
- PASCAL VOC2012 数据集
- 内容:20 个目标类别,包含分类、检测、语义分割三种任务的标注
- 标注格式:XML 文件,包含图像大小、目标类别、边界框坐标等信息
- 数据量:约 11540 张图像,27450 个标注目标
1.3 高级数据集
- MS COCO 数据集
- 全称:Microsoft Common Objects in Context
- 内容:80 个目标类别,33 万 + 张图像,20 万 + 张有标注,150 万 + 个目标实例
- 任务:支持目标检测、语义分割、实例分割、人体关键点检测等
- 地位:当前目标检测和分割领域最权威的基准数据集
- ImageNet 数据集
- 内容:1400 万 + 张图像,21841 个类别,100 万 + 张有边界框标注
- 意义:推动了深度学习在计算机视觉领域的革命,是预训练模型的主要数据源
- JFT-300M 数据集
- 谷歌内部数据集,3 亿张图像,10 亿 + 个标签
- 用途:训练大型图像分类模型
2. 视觉任务核心评价指标
- 混淆矩阵(Confusion Matrix)
- TP(真正例):实际为正例,预测为正例
- FP(假正例):实际为负例,预测为正例
- FN(假负例):实际为正例,预测为负例
- TN(真负例):实际为负例,预测为负例
- 基础分类指标
- 精确率(Precision):\(P = \frac{TP}{TP+FP}\),表示预测为正例的样本中实际为正例的比例
- 召回率(Recall):\(R = \frac{TP}{TP+FN}\),表示实际为正例的样本中被正确预测的比例
- 准确率(Accuracy):\(Acc = \frac{TP+TN}{TP+FP+FN+TN}\),表示所有样本中被正确预测的比例
- P-R 曲线
- 以召回率为横轴,精确率为纵轴绘制的曲线
- 特点:精确率和召回率通常是此消彼长的关系
- 用途:评估分类器在不同阈值下的性能
- 平均精度(AP)与均值平均精度(mAP)
- AP:P-R 曲线下的面积,衡量单个类别的检测性能
- mAP:所有类别 AP 的平均值,是目标检测和分割任务的核心评价指标
- 计算示例:通过调整阈值得到不同的 P-R 值,然后积分计算 AP
3. 经典视觉任务与模型
3.1 目标检测
- 任务定义:在图像中找到所有目标的位置(边界框)并识别其类别
- 发展脉络:
- 两阶段检测器:R-CNN → SPP-Net → Fast R-CNN → Faster R-CNN
- 一阶段检测器:YOLO 系列、SSD 系列
- YOLO(You Only Look Once)
- 核心思想:将目标检测视为一个回归问题,单次前向传播即可同时预测边界框和类别
- 优势:速度快,适合实时检测场景
- 不足:小目标检测精度略低于两阶段检测器
3.2 语义分割
- 任务定义:对图像中的每个像素进行分类,实现像素级的图像理解
- 经典模型:
- FCN(全卷积网络):第一个端到端的语义分割模型,用卷积层替代全连接层
- DeepLab 系列:引入空洞卷积、条件随机场等技术,提升分割精度
- 应用场景:自动驾驶、医学影像分析、卫星图像分析等
更多推荐




所有评论(0)