北京邮电大学人工智能专业考研复试笔记——第二部分
模块五:计算机视觉 (CV)
5.1 视觉词袋模型 (Bag of Visual Words, BoVW)
在2012年深度学习全面爆发之前,计算机视觉领域是"传统机器学习"的天下。那时候没有卷积核自动提取特征,科学家们必须纯手工设计算法来认识图片。而**视觉词袋模型(BoVW)**就是那个古典时代的绝对王者。
5.1.1 核心灵感:从文本到图像的跨界
在自然语言处理(NLP)里,有一个极简的模型叫词袋模型(Bag of Words)。
比如有两句话:
- A: “我 爱 学习,学习 让我 快乐”
- B: “我 爱 睡觉”
如果建一个词典 [我, 爱, 学习, 让我, 快乐, 睡觉],这两句话就可以变成词频向量:
- A:
[1, 1, 2, 1, 1, 0] - B:
[1, 1, 0, 0, 0, 1]
视觉科学家的痛点:文字有现成的"词",但图片只有密密麻麻的像素点,图像的"词"在哪里?
BoVW的核心思想:没有词,我们就强行造出"视觉单词",然后统计这些视觉单词在图片里出现的频率!
5.1.2 BoVW的物理流水线(四大步骤)
第一步:全图扫雷,提取"局部碎特征"(SIFT算法)
- 不能把整张图直接塞进去。用经典算法(如 SIFT)在图片上寻找那些"最显眼、最抗造"的关键点(如物体的角点、边缘转折点)
- 找到后,把这个点周围的像素特征浓缩成一个 128 维的向量
- 结果:一张图片被拆解成了成百上千个 128 维的"碎特征"
第二步:K-Means聚类,编纂"视觉词典"
- 把训练集里几百万个 128 维的"碎特征"全扔在一起,用 K-Means 聚类 聚出 KKK 个簇(如 K=1000K=1000K=1000)
- 这 1000 个簇的中心点,就是 1000 个**“视觉单词”**!
- 直观理解:1号单词可能代表"一种尖锐的直角",2号单词可能代表"一片猫毛的纹理",3号单词代表"车轮的弧度"
第三步:对号入座,特征量化
- 来了一张新图片,先提取出它的 500 个碎特征
- 把这 500 个特征,挨个去和字典里的 1000 个"视觉单词"比对距离。离谁最近,就归为哪个词
第四步:统计词频,生成直方图
- 统计这 1000 个视觉单词在这张新图片里分别出现了多少次
- 最终结果:无论原图是 4K 高清还是 360p 模糊,最终都会被压缩成一个长度严格为 1000 的一维向量(词频直方图)
- 最后,把这个 1000 维的向量扔给 SVM (支持向量机),完成分类
5.1.3 古典 BoVW 与 现代 CNN 的终极对比
| 维度 | 古典流派:BoVW + SVM | 现代流派:CNN |
|---|---|---|
| 特征提取 | 人工设计 (Hand-crafted)。靠专家的数学公式推导(如 SIFT)来寻找特征,费时费力 | 机器自学习 (Data-driven)。卷积核就像自动寻星犬,在数据喂养下自己学会找特征 |
| 空间位置信息 | 彻底丢失。直方图只记录了"猫耳"出现了两次,完全不知道"猫耳"是在左边还是右边 | 完美保留。卷积核通过滑动窗口和池化(感受野),严密保留了物体的空间结构 |
| 优化方式 | 各管各的 (Pipeline)。提取特征、聚类造词典、SVM 分类是三个完全割裂的步骤,前面错了后面无法纠正 | 端到端 (End-to-End)。整个网络通过反向传播(梯度下降)一气呵成,联合优化 |
一句话总结:视觉词袋模型(BoVW)就是把图像拆成局部碎片,用 K-Means 聚类提炼出"视觉单词",再统计词频生成向量给传统分类器用的方法。它是深度学习诞生前,人类探索计算机视觉的巅峰之作。
5.2 卷积神经网络 (CNN) 详解
5.2.1 为什么需要 CNN?
传统 Dense 层的两大绝症:
| 问题 | 具体表现 | 后果 |
|---|---|---|
| 参数爆炸 | 4K图片有800万像素,第一层连接需要 8M × 神经元数 个参数 | 显存爆炸,训练不可能 |
| 位置刻板 | 猫在图片左边和右边,对 Dense 来说是完全不同的输入 | 换个位置就不认识 |
CNN 的核心思想:
- 不再让每个神经元连接全部像素
- 而是用一个"小探测器"在图片上滑动扫描
- 无论目标在哪,都用同一套参数检测
5.2.2 卷积层 (Convolutional Layer)
核心组件:卷积核(Kernel/Filter)
想象卷积核是一个"特征探测器":
- 物理形态:一个小矩阵(如 3×3,只有9个数)
- 作用:寻找特定模式(如竖直边缘、水平边缘、斜线等)
- 工作方式:像手电筒一样,在图片上滑动扫描
卷积计算过程:
图片区域 卷积核 计算结果(内积)
[1 2 3] [1 0 -1] 1×1 + 2×0 + 3×(-1) +
[4 5 6] @ [1 0 -1] = 4×1 + 5×0 + 6×(-1) + = 1+0-3+4+0-6+7+0-9 = -6
[7 8 9] [1 0 -1] 7×1 + 8×0 + 9×(-1)
特征图 (Feature Map):
- 卷积核扫完整张图后,生成一张"热力图"
- 值越大表示"这里发现我要找的特征"
- 比如边缘检测核,会在物体边缘处产生高响应
两大核心优势:
| 优势 | 含义 | 效果 |
|---|---|---|
| 参数共享 | 同一个卷积核扫遍全图 | 9个参数覆盖整张图片,极大减少参数量 |
| 平移不变性 | 目标在哪都能被同一个探测器发现 | 猫在左边或右边,都能被"猫耳探测器"识别 |
5.2.3 池化层 (Pooling Layer)
为什么需要池化?
- 卷积后特征图还是太大
- 我们需要" zoom out ",看到更大范围的特征
最大池化 (Max Pooling):
特征图区域 池化结果
[1 3] [6]
[5 6] → (取最大值)
作用:
- 降维:2×2 池化 → 数据量变为 1/4
- 提炼特征:只保留最强烈的信号
- 增强容错:目标稍微偏移一点,最大值可能还在
类比:就像看缩略图,虽然细节丢了,但主要轮廓还在。
5.2.4 感受野 (Receptive Field)
定义:一个神经元"看到"的原始图片区域大小
感受野的扩大过程:
| 层数 | 操作 | 感受野 | 能检测的特征 |
|---|---|---|---|
| 第1层 | 3×3 卷积 | 3×3 | 边缘、颜色 |
| 第2层 | 3×3 卷积(在池化后的图上) | 6×6 | 角点、纹理 |
| 第3层 | 继续堆叠 | 更大 | 眼睛、耳朵 |
| 第5层+ | 深层 | 覆盖大半个图 | 整张脸、整个物体 |
核心洞察:
- 浅层:局部细节(像素级)
- 中层:局部组合(部件级)
- 深层:整体概念(物体级)
就像搭积木:底层是线条 → 中层拼成方块 → 顶层组成房子。
5.2.5 3D 卷积核与多通道
从灰度到彩色:
- 灰度图:1个通道(二维矩阵)
- 彩色图:3个通道(RGB,三维数据块)
卷积核的真实维度:
假设第1层输出 64 张特征图(64通道),数据形状是 224×224×64224 \times 224 \times 64224×224×64。
第2层的卷积核不是 3×3,而是 3×3×64!
卷积核(3×3×64)像一块"砖头":
- 宽 3,高 3
- 厚 64(匹配输入通道数)
- 滑动时,一眼"看穿"所有64张特征图
多卷积核:
- 如果第2层有 128 个卷积核
- 每个都是 3×3×64
- 输出就是 128 张新的特征图(224×224×128224 \times 224 \times 128224×224×128)
5.2.6 标准 CNN 架构
原始图片
↓
[Conv2D → ReLU] × 几个卷积核 → 提取低级特征(边缘)
↓
MaxPool2D → 缩小尺寸,保留精华
↓
[Conv2D → ReLU] × 更多卷积核 → 提取中级特征(纹理)
↓
MaxPool2D → 继续缩小
↓
[Conv2D → ReLU] × 更多卷积核 → 提取高级特征(部件)
↓
Flatten → 把三维特征图"拍扁"成一维向量
↓
Dense (全连接层) → 综合所有特征做决策
↓
Softmax/Sigmoid → 输出概率
形象比喻:
- CNN 部分:像一群"特征猎手",层层筛选线索
- Dense 部分:像"法官",根据线索做最终判决
5.2.7 CNN 总结
| 组件 | 作用 | 类比 |
|---|---|---|
| 卷积层 | 提取局部特征 | 放大镜找细节 |
| 激活函数 | 引入非线性 | 判断有没有 |
| 池化层 | 降维、扩大视野 | 站远看整体 |
| 堆叠深层 | 层层抽象 | 从线条到物体 |
| 全连接层 | 综合决策 | 法官判案 |
5.3 目标检测:YOLO 算法
如果说CNN是"判断图里有没有猫",那YOLO就是**“在一瞬间告诉你图里有几只猫、分别在哪个精确坐标、各自有多大”**。
YOLO(You Only Look Once)是工业界出场率最高、最能打的目标检测算法,广泛应用于自动驾驶、违章抓拍、工业瑕疵检测等场景。
5.3.1 为什么叫"只看一次"?
以前的笨办法(两阶段检测器):
- 先在图上盲目圈出2000个"可能包含物体"的候选框
- 把这2000个框一个个切下来,送进CNN分类
- 结果:极其缓慢,无法做到视频级实时检测
YOLO的降维打击(单阶段One-Stage):
- 废除候选框!把"找位置"和"认东西"合二为一,变成纯粹的回归问题
- 图片丢进神经网络,只跑一次前向传播(Look Once)
- 直接在输出端同时吐出所有物体的坐标和类别
- 结果:速度飙升百倍,开启实时目标检测时代
5.3.2 YOLO 的三大物理执行流水线
1. 网格化包干责任制(Grid Cell Division)
YOLO拿到图片的第一件事,就是把它切成 S×SS \times SS×S 的网格(如 7×77 \times 77×7)。
核心军规:如果一个物体的几何中心落在某个网格里,那么这个网格就"全权负责"检测这个物体!
物理意义:把检测任务外包给49个"包工头",每个网格只关心自己那一亩三分地,避免全局盲目搜索。
2. 疯狂猜测与置信度打分(Bounding Box Prediction)
每个"包工头(网格)"拿到任务后,会一口气给出 BBB 个(通常2-3个)它认为最可能的边界框。
对于每个框,必须上报5个核心数字:
- (x,y)(x, y)(x,y):框的中心点坐标
- (w,h)(w, h)(w,h):框的宽度和高度
- Confidence(置信度):"我有多大把握这个框里有东西?“以及"框得有多准(IoU)?”
同时,网格还会输出类别概率(如:猫80%,狗10%)。
3. 终极大扫除:非极大值抑制(NMS)
相邻的几个网格可能都察觉到了同一只猫,会同时输出一堆重重叠叠的框。怎么清理干净?
NMS执行逻辑(大逃杀法则):
- 排座次:把所有预测"猫"的框,按置信度从高到低排序
- 选状元:采纳置信度最高的框(如98%),它是绝对赢家
- 大屠杀:拿"状元框"去和其他框比对。如果重合度(IoU)大于阈值(如0.5),说明框的是同一只猫,直接删除这些低分框
- 循环:在剩下的框里再找第二高的,重复上述动作
结果:一车一框,一狗一框,干净利落。
5.3.3 YOLO 的优劣势分析
绝对优势:
- 快,极其快:FPS(每秒帧数)轻松上百,完美适配自动驾驶等需要极低延迟的场景
- 背景误判率低:在整张图的全局视角下看物体,很少把背景噪点误认为物体
致命弱点(早期YOLO v1/v2):
- 密集小物体检测差:如果一个网格里同时挤进去好几只极小的鸟,由于一个网格最多只能预测 BBB 个框,就会彻底抓瞎,导致大量漏检
- 对不规则形状泛化弱:预测的框有固定长宽比先验,遇到极端奇葩形状的物体,框会圈得不准
5.3.4 YOLO 家族演进史
| 版本 | 特点 |
|---|---|
| YOLO v1-v3 | Joseph Redmon原神之作,奠定网格化、Anchor Box先验框和多尺度融合基础 |
| YOLO v4/v5 | 工程界狂欢,引入马赛克数据增强、Focus结构,实用性和部署速度做到极致 |
| YOLO v8/v10 | 当今霸主,引入Anchor-Free(无锚框)设计,连图像分割都能顺手搞定 |
5.3.5 Focal Loss:解决样本不平衡的终极杀器
目标检测一直被"极度样本不平衡"困扰。在 1024×10241024 \times 10241024×1024 的风景图里找一只小鸟:
- 正样本(小鸟):只有 1 个
- 负样本(背景蓝天):高达 100,000 个
传统交叉熵的死局:
对于 10 万个背景框,模型极度自信(p=0.99p = 0.99p=0.99),单个 Loss 极小:
−log(0.99)≈0.01-\log(0.99) \approx 0.01−log(0.99)≈0.01
但数量灾难:100,000×0.01=1000100,000 \times 0.01 = 1000100,000×0.01=1000 的总误差!
而那只小鸟(p=0.1p = 0.1p=0.1)的 Loss 只有 −log(0.1)≈2.3-\log(0.1) \approx 2.3−log(0.1)≈2.3。
后果:1000 的"简单背景误差"像雪崩一样淹没了小鸟的 2.3。模型变成"只会认背景的废物"。
Focal Loss 的核心哲学(何恺明,2017):
“欺软怕硬,劫富济贫”——加一个权重调节阀:
- 简单样本(p→1p \to 1p→1):Loss 强行打飞,降到接近 0
- 困难样本(ppp 小):保留 Loss,强迫模型聚焦
数学公式:
FL(pt)=−αt(1−pt)γlog(pt)FL(p_t) = -\alpha_t (1 - p_t)^\gamma \log(p_t)FL(pt)=−αt(1−pt)γlog(pt)
核心参数 γ\gammaγ(通常设为 2):
- 简单样本(pt=0.9p_t = 0.9pt=0.9):(1−0.9)2=0.01(1 - 0.9)^2 = 0.01(1−0.9)2=0.01,Loss 缩小 100 倍
- 困难样本(pt=0.1p_t = 0.1pt=0.1):(1−0.1)2=0.81(1 - 0.1)^2 = 0.81(1−0.1)2=0.81,Loss 全额保留
辅助参数 α\alphaα:给正类乘 0.75,负类乘 0.25,在物理基数上再倾斜。
面试高分话术:
“Focal Loss 在交叉熵前增加 (1−p)γ(1-p)^\gamma(1−p)γ 调制系数。当样本容易分类时,调制系数趋近于 0,自动压低权重;面对难分类的罕见正样本,权重得以保留。使模型自动执行’困难样本挖掘’,将注意力聚焦在有价值的样本上。”
5.4 文生图原理:Stable Diffusion
文生图(Text-to-Image)是生成式 AIGC 的巅峰之作,工业界统治级别的模型是 Stable Diffusion (SD)。它的原理可以用你已掌握的三大核心武器来拆解:Embedding(向量映射)、CNN 与 注意力机制(模块六)。
5.4.1 前置知识一:CLIP —— 打通文字与图像的"翻译官"
在 Transformer 中,词汇通过 Embedding 变成了包含语义的高维向量。在 CNN 中,图片经过层层卷积也变成了一维的特征向量。但以前这两者是鸡同鸭讲,井水不犯河水。
CLIP 的核心思想:强行把"文本向量"和"图像向量"拉到同一个高维数学空间里对齐。
- 如果输入一张"小猫"的图片,经过 CNN/ViT 提取出一个图像向量
- 输入"一只小猫"的文本,经过 Transformer 提取出一个文本向量
- CLIP 负责在训练时,让这两个向量的余弦相似度尽可能接近 1,让不匹配的图文向量互斥
结论:经过 CLIP 处理后,大模型终于明白:“原来你们人类说的’猫’,在数学向量空间里,和长着两只尖耳朵、有胡须的像素特征是同一个东西!”
5.4.2 前置知识二:扩散模型 (Diffusion) —— 雕刻家的减法
如果让你凭空画一只猫,你可能无从下笔。但如果是给你一块石头,让你把不像猫的部分凿掉,是不是就简单多了?这就是扩散模型的哲学。
正向过程(加噪/毁掉图片):
- 拿一张真实的高清猫图,分 1000 步,每一步往上加一点点随机的高斯白噪声
- 到了第 1000 步,这张图已经变成了一块纯粹的"马赛克雪花屏"(纯噪声 xTx_TxT)
反向过程(去噪/无中生有):
- 训练一个神经网络,把这堆马赛克喂给它,让它预测出**“刚才这一步加了什么噪声?”**
- 把预测出来的噪声减掉,画面就变清晰了一点
- 减了 1000 次之后,纯马赛克就变回了一张猫图
文生图的本质:“拿着纯噪声,在文本的指导下,一步步把噪声扣掉的过程”。
5.4.3 核心架构:文生图的物理流水线
假设你输入了提示词:“画一只赛博朋克风格的猫”。以下是显卡里发生的真实战斗:
第一步:提示词的武装化 (Text Encoder)
你输入的文本经过 CLIP 的 Transformer 编码器,变成了一个包含"赛博朋克"、“猫"等丰富语义信息的条件矩阵(Context)。这就好比甲方给出的"项目需求说明书”。
第二步:UNet 网络与 Cross-Attention(跨界相亲大会)
接下来,我们要用一个叫 UNet 的神经网络来进行去噪。UNet 其实就是一个先用 CNN 不断池化降维,再不断上采样升维的 U 型网络结构。
这里是最核心的高潮部分:图像怎么听文本的指挥?
在 Transformer 中,自注意力机制(Self-Attention)是同一句话里的词互相开"相亲大会"。在 UNet 去噪时,发生的是交叉注意力(Cross-Attention)!
| 身份 | 来源 | 作用 |
|---|---|---|
| Query (Q) | 正在去噪的图像特征 | “我现在的像素有点模糊,我需要知道这里该画什么?” |
| Key (K) | 文本特征矩阵 | 散发着"赛博朋克"和"猫"的特征信号 |
| Value (V) | 文本特征矩阵 | 包含猫耳的轮廓、赛博朋克的霓虹色彩等实际内容 |
匹配与吸收:图像的 Q 扫描到文本的 K 匹配成功,瞬间吸收了文本的 V,并把这些信息融入到当前的图像像素中。
每一次去噪,图像都会疯狂向文本发起 Query 提问,文本则通过 Key 和 Value 告诉图像该怎么消除噪声!
第三步:降维打击,突破内存墙 (Latent Space / VAE)
如果在原始的 1024×10241024 \times 10241024×1024 像素上做 1000 步 CNN 去噪,哪怕是 RTX 4090 显卡也会当场冒烟。
借用 PCA(主成分分析)那种"特征降维,保留核心信息"的哲学,科学家引入了 VAE(变分自编码器):
- VAE 提前把真实的巨大图片,压缩成了一个长宽只有原来八分之一、但厚度更厚的潜空间向量(Latent)
- 前面说的加噪、UNet 去噪、交叉注意力,全部都是在这个被压缩的微观"潜空间"里进行的,计算量暴降!
- 等去噪彻底完成,雕刻出了完美的特征后,再交给 VAE 的解码器,"砰"地一下放大还原成我们肉眼看到的 4K 高清图片
5.4.4 图像向量的三代进化史
从 BoVW 到 CNN 再到 CLIP,计算机视觉发展了二十年,大家其实都在干同一件事:如何提取出那个最完美的"图像向量"。
| 代际 | 工艺 | 向量形态 | 物理意义 | 局限/突破 |
|---|---|---|---|---|
| 第一代:BoVW | 人工提取 SIFT -> K-Means 聚类 -> 统计词频 | 长度为 KKK 的直方图向量 H=[0,5,2,0,…,1]H = [0, 5, 2, 0, \dots, 1]H=[0,5,2,0,…,1] | 代表词典里某个"视觉单词"出现的次数 | 只有统计,没有深层理解,丢了空间位置 |
| 第二代:CNN | 卷积核层层提取 -> Flatten/GAP 压缩 | 512 维或 2048 维稠密浮点数 v=[0.85,−1.2,0.03,…,2.1]v = [0.85, -1.2, 0.03, \dots, 2.1]v=[0.85,−1.2,0.03,…,2.1] | 代表高阶语义特征(如"有没有猫毛质感") | 机器自己学出来的,包含极强的空间和语义信息 |
| 第三代:CLIP | 图文绑定训练 -> Transformer/ViT 提取 | 几百维浮点数,处于"图文共享的多模态空间" | 图像向量和文本向量实现"大一统",在高维空间里距离相近 | 文本能够跨界指挥图像,实现文生图 |
图像向量就是一个容器,装载着图像的核心语义精华。 BoVW 是用人工定义的"视觉单词频率"把这个容器填满;而 CNN 和 CLIP 则是用神经网络通过大数据自动把这个容器填满。
5.5 图神经网络 (GNN)
如果说 CNN 是在规规矩矩的"棋盘"上找规律,那 GNN 就是在错综复杂的"蜘蛛网"里抓内鬼。
5.5.1 为什么需要 GNN
传统神经网络(CNN、RNN)假设数据必须是规整的:
- 图像 (CNN):像素点像围棋盘,每个点周围有固定的 8 个邻居
- 文本 (RNN):字词像冰糖葫芦,永远是一条直线
但真实世界的大量数据是"不规整的图 (Graph)":
- 社交网络:微信好友数量不固定,邻居数量差异巨大
- 分子结构:碳原子可能连着 4 个氢,也可能连着氧
- 交通网络:十字路口连接复杂,无法拍扁成方方正正的图片
面对这种非欧几里得数据,CNN 的卷积核彻底抓瞎。于是,GNN 诞生了。
5.5.2 消息传递机制
GNN 的核心可以用一句话概括:“近朱者赤,近墨者黑;听取朋友圈的意见,更新我自己的三观。”
四步流水线:
第一步:节点初始化
每个节点带着自己的初始特征。比如节点 A:[注册时间: 1天, 余额: 0元, 异常登录: 是]。
第二步:聚合邻居信息 (Aggregate)
节点 A 向所有直接相连的邻居发送请求,收集朋友们的特征,用数学公式融合(求平均、求和或取最大值):
mA=AGGREGATE({hneighbor(k−1)})m_A = \text{AGGREGATE}(\{h_{\text{neighbor}}^{(k-1)}\})mA=AGGREGATE({hneighbor(k−1)})
第三步:更新自我状态 (Update)
把旧特征和邻居综合特征拼接,塞进神经网络算出全新特征:
hA(k)=σ(W⋅CONCAT(hA(k−1),mA))h_A^{(k)} = \sigma \left( W \cdot \text{CONCAT}(h_A^{(k-1)}, m_A) \right)hA(k)=σ(W⋅CONCAT(hA(k−1),mA))
第四步:多层循环迭代
- 第 1 层:节点 A 知道朋友的信息
- 第 2 层:节点 A 掌握**朋友的朋友(二度人脉)**的信息
- 第 K 层:感知周围 K 步以内的网络结构(类似 CNN 的感受野)
5.5.3 应用场景
| 任务 | 说明 | 例子 |
|---|---|---|
| 节点分类 | 判断节点属性 | 社交网络反欺诈:判断用户是不是骗子 |
| 边预测 | 预测未来连接 | 好友推荐:判断 A 和 F 未来会不会成为好友 |
| 图分类 | 判断整张图属性 | 分子毒性预测:判断分子结构是否有毒 |
5.6 生成对抗网络 (GAN)
GAN 是深度学习四大流派之一,被图灵奖得主 Yann LeCun 盛赞为**“过去十年机器学习领域最有趣的绝妙想法”**。
5.6.1 两个主角的物理结构
GAN 不是单个网络,而是两个完全独立的神经网络在博弈。
生成器 (Generator, G)
- 输入:100 维随机高斯噪声 zzz
- 过程:反卷积/线性映射升维,把乱码放大重塑
- 输出:256×256256 \times 256256×256 的假图片 G(z)G(z)G(z)
- 目标:让 G(z)G(z)G(z) 看起来像真人脸
判别器 (Discriminator, D)
- 输入:一张图片(真图 xxx 或假图 G(z)G(z)G(z))
- 过程:普通二分类 CNN,层层提取特征
- 输出:概率值 0∼10 \sim 10∼1,越接近 1 越真
- 目标:给真图打高分,给假图打低分
5.6.2 Minimax 损失函数
两个网络目标完全相反,形成零和博弈:
minGmaxDV(D,G)=E[logD(x)]+E[log(1−D(G(z)))]\min_G \max_D V(D, G) = \mathbb{E}[\log D(x)] + \mathbb{E}[\log(1 - D(G(z)))]GminDmaxV(D,G)=E[logD(x)]+E[log(1−D(G(z)))]
判别器 D 的目标(最大化):
- 真图 D(x)→1D(x) \to 1D(x)→1,log(1)=0\log(1) = 0log(1)=0(最大)
- 假图 D(G(z))→0D(G(z)) \to 0D(G(z))→0,log(1)=0\log(1) = 0log(1)=0(最大)
生成器 G 的目标(最小化):
- 希望 D(G(z))→1D(G(z)) \to 1D(G(z))→1,则 1−D(G(z))→01 - D(G(z)) \to 01−D(G(z))→0,log(0)→−∞\log(0) \to -\inftylog(0)→−∞(最小)
5.6.3 交替训练法
不能同时训练,必须用"跷跷板"交替:
第一步:冻结 G,训练 D
- 锁死生成器参数
- 真图标签
1,假图标签0 - 反向传播更新 D 的权重
- 结果:警察鉴伪能力提升
第二步:冻结 D,训练 G
- 锁死判别器参数
- 生成假图,但强行标签设为
1(真) - 判别器算出巨大 Loss,梯度穿过 D 流回 G
- 结果:生成器造假能力提升
直到判别器输出永远停留在 0.5(完全靠猜),达到纳什均衡,训练完成。
5.6.4 GAN 的三大绝症与 WGAN
| 问题 | 现象 | 解决方案 |
|---|---|---|
| 梯度消失 | 判别器太强,输出接近 0,梯度断裂 | WGAN 用推土机距离替代交叉熵 |
| 模式崩塌 | 生成器只画白猫,不画黑猫 | WGAN 提供平滑梯度 |
| 不收敛 | Loss 剧烈震荡,不知何时停止 | Wasserstein 距离始终有意义 |
WGAN (Wasserstein GAN):用推土机距离衡量真实分布与生成分布的差异,即使分布无重叠也能提供平滑梯度,彻底解决梯度消失。
WGAN 核心原理:
1. 为什么传统 GAN 会梯度消失?
- 判别器使用 sigmoid 输出概率,配合交叉熵损失
- 当判别器太强时,对假图输出接近 0,对真图输出接近 1
- 此时 sigmoid 的梯度几乎为 0,生成器收不到梯度信号,无法学习
2. 推土机距离 (Earth Mover’s Distance)
- 想象两堆土(真实分布和生成分布),推土机把一堆土变成另一堆所需的最小工作量
- 关键优势:即使两堆土完全不重叠(分布无交集),推土机距离依然有定义,且能提供平滑梯度
- 相比之下,JS散度在面对不重叠分布时会恒为常数,导致梯度消失
3. WGAN 的改进
- 去掉 sigmoid:判别器(在WGAN中叫Critic)输出实数值而非概率
- 改用推土机距离:损失函数变为真实样本的Critic输出减去假样本的Critic输出
- 权重裁剪:限制Critic的参数范围,保证Lipschitz连续性
- 有意义的Loss:Critic的Loss越大,表示生成分布与真实分布差距越大,可以据此判断收敛
4. WGAN 的优势总结
| 维度 | 传统 GAN | WGAN |
|---|---|---|
| 损失函数 | 交叉熵(JS散度) | 推土机距离 |
| 判别器输出 | 概率 [0,1] | 实数值(打分) |
| 梯度质量 | 易消失 | 始终平滑 |
| 训练稳定性 | 难收敛 | 稳定可收敛 |
| Loss指示性 | 无意义 | 越小表示生成越好 |
5.6.5 GAN的应用
风格迁移 (Style Transfer): 这是 GAN 最惊艳的艺术应用(如 CycleGAN)。它可以把你用手机拍的一张普通风景照,瞬间“翻译”成梵高的《星空》笔触,或者莫奈的印象派画风。
图像翻译 / 草图生成实体 (Image-to-Image Translation): 比如 Pix2Pix 技术。游戏原画师只需要在画板上随便勾勒出几根简陋的黑白线条(比如画一个包包的轮廓),GAN 就能瞬间给它自动上色、打光,渲染成一张拥有极强真实材质感的高清艺术设计图。
高保真虚拟角色创作 (High-Fidelity Generation): 比如大名鼎鼎的 StyleGAN。它能够生成这个世界上根本不存在的、极其逼真的人脸或二次元动漫角色。现在很多游戏里的 NPC 头像、虚拟偶像的捏脸,背后都是 GAN 在批量生产。
5.7 自编码器 (AE) 与变分自编码器 (VAE)
AE 和 VAE 是生成式 AI 领域的元老级模型,与 GAN 并称"生成三杰"。Stable Diffusion 中也包含 VAE 的核心组件。
5.7.1 传统自编码器 (AE)
物理架构:
- 编码器 (Encoder):把高维输入(如 256×256256 \times 256256×256 图像)压缩成低维潜变量 ZZZ(如 256 维)
- 解码器 (Decoder):把潜变量 ZZZ 还原成原始输入
训练目标:
让解码输出与编码输入一模一样,损失函数为均方误差 (MSE)。
物理意义:
逼迫编码器在极窄的瓶颈层里,只保留最核心特征(脸型、肤色),扔掉背景噪点。
AE 的死穴:
潜空间是离散断裂的。编码器把张三映射到点 A,李四映射到点 B。如果在 A 和 B 之间随便选一个点喂给解码器,会吐出一团雪花马赛克。
结论:AE 只是"死记硬背"的压缩包,没有创造力。
5.7.2 变分自编码器 (VAE)
核心大逆转:
编码器不再输出死板坐标,而是输出概率分布——均值 μ\muμ 和方差 σ\sigmaσ。
采样魔法:
在概率圈内随机抓取一个点 ZZZ 喂给解码器。即使同一张图,每次收到的 ZZZ 都有微小差别。
结果:
解码器被迫学会平滑过渡。张三和李四的概率圈发生重叠,潜空间再也没有空白断层,随便指一个点都能生成合理图像。
5.7.3 VAE vs GAN
| 维度 | VAE | GAN |
|---|---|---|
| 数学基础 | 概率论,严谨推导 | 博弈论,左右互搏 |
| 生成质量 | 较模糊(算 MSE) | 极其清晰逼真 |
| 训练稳定性 | 极其稳定 | 容易崩溃 |
| 模式崩塌 | 不会出现 | 常见问题 |
5.8 视频生成技术
如果说 2023 年是"文生图"的爆发年,那么从 2024 年 OpenAI 发布 Sora 开始,"AI 视频生成"正式成为了顶级科技公司厮杀的最红海战场。
5.8.1 核心误区
错误认知:视频就是很多张连续的照片,让 AI 连续画 30 张图拼起来就行。
真相:如果独立画 30 张"男人走路"的照片拼成视频,会看到一团不断闪烁、变形的怪物。视频生成的核心难点是时间一致性。
5.8.2 技术演进两阶段
阶段一:早期 U-Net 视频模型(戴着脚镣跳舞)
物理过程:
- 输入:30 张纯随机马赛克图(代表 1 秒视频),组成 3D 马赛克方块
- 架构:在 2D U-Net 中强行插入时间注意力层 (Temporal Attention)
- 机制:第 2 帧去噪时,必须同时参考第 1 帧和第 3 帧的特征
- 结果:30 张图从混乱中同时"生长"出来,通过全局时间注意力保证连贯
致命瓶颈:
- U-Net 中计算时间注意力的复杂度是 O(N2)O(N^2)O(N2)(指数级爆炸)
- 算 30 帧显卡还能扛,算 300 帧显存瞬间撑爆
- 无法生成长视频(物理死局)
阶段二:Sora/DiT 架构(降维打击)
初始全是噪声 Token → Transformer 并行看遍所有时空 Token → 一次性预测全局噪声 → 整体去噪 → 靠全局时空注意力保证帧间动作连贯。
核心创新:
1. 时空 Token 化 (Spacetime Patches)
- 把视频(长×宽×时间)切成 16×16×T16 \times 16 \times T16×16×T 的"时空豆腐块"
- 每个豆腐块就是一个 Token(类似 GPT 把文字切成单词)
- 通过 VAE 编码器压缩成潜空间 Token,数据量减少几十倍
2. Transformer 暴力美学
- 抛弃卷积网络,把 Token 队列塞进 Transformer
- 利用全局自注意力机制,计算几万个时空 Token 之间的相关性
- 网络自己在训练中领悟物理规律(物体运动、光影变化)
3. 输出还原
- Transformer 输出处理后的 Token 队列
- 通过 VAE 解码器还原成视频像素
5.8.3 为什么 Sora 能生成长视频
| 维度 | 早期 U-Net | Sora/DiT |
|---|---|---|
| 数据表示 | 像素级 3D 矩阵 | 压缩后的时空 Token |
| 核心架构 | CNN + 时间注意力 | Pure Transformer |
| 算力复杂度 | O(N2)O(N^2)O(N2) 指数爆炸 | O(N)O(N)O(N) 线性可扩展 |
| 序列长度 | 30-60 帧(2-4秒) | 60 秒一镜到底 |
| 物理理解 | 局部时间关联 | 全局时空推理 |
关键底气:
- 极致压缩:时空豆腐块比像素小几十倍
- 硬件红利:FlashAttention 等技术对 Token 计算优化到极致,而 U-Net 的 3D 卷积优化停滞
5.9 图像分割 (Image Segmentation)
5.9.1 核心痛点:为什么画框不够用?
目标检测(如 YOLO)输出的是粗糙的矩形边界框 (x,y,w,h)(x,y,w,h)(x,y,w,h)。
痛点:框内包含大量背景杂乱信息。如果一辆车斜着停,矩形框会把大片路面也框进去。
致命场景:
- 医疗影像:医生切除肿瘤必须知道精确边缘,差一毫米都不行
- L4自动驾驶:系统必须精确知道车道线的确切像素,而不是包含半个马路的宽大矩形框
图像分割的终极使命:抛弃矩形框,对图片上的每一个像素点进行分类。
5.9.2 图像分割的三级别
| 级别 | 名称 | 逻辑 | 特点 |
|---|---|---|---|
| L1 | 语义分割 | 按类别涂色,所有"猫"涂红色 | 只认种类,不认个体 |
| L2 | 实例分割 | 左边猫涂红色,右边猫涂蓝色 | 既认种类,又认个体 |
| L3 | 全景分割 | 前景实例分割 + 背景语义分割 | 全屏无死角覆盖 |
语义分割缺陷:两只猫抱在一起会涂成完整的一大块红色,无法区分个体。
实例分割缺陷:只抠有具体形状的前景物体,对背景(天空、马路)直接忽略。
5.9.3 核心架构一:FCN (Fully Convolutional Network全卷积网络)
传统CNN的灾难:最后一步 Flatten(拍扁)+ Dense(全连接)会把三维特征图扯成一维直线,物体的空间位置信息被彻底毁灭!
FCN的革命:
- 砍掉全连接层:网络最后几层全换成卷积层,输出的是一张小而深邃的"特征缩略图"
- 上采样 (Up-sampling):通过**反卷积(转置卷积)**把缩略图放大回原图分辨率,对每个像素输出预测
5.9.4 核心架构二:U-Net —— 医疗与工业界的霸主
FCN的问题:经过多次池化后放大的图片,边缘极其模糊。
U-Net 就是一种FCN(全卷积网络),而且是 FCN 最经典、最成功的改进版本之一。
U-Net的U型架构:
左半边(编码器 Encoder):
- 传统CNN不断卷积和池化
- 提取高级语义特征(知道这是猫)
- 但图像越来越小,丢失空间细节
右半边(解码器 Decoder):
- 不断上采样,把图像放大回原尺寸
神来之笔(跳跃连接 Skip Connections):
- 解码器放大图像时丢失了细节,边缘画不准
- 暴力操作:把左边编码器同一层级的高清大图,直接"抄近道"复制过来,和右边的模糊大图拼接(Concatenate)
- 物理意义:左边提供高分辨率的"位置细节(Where)“,右边提供深度的"语义特征(What)”
U-Net 的"抄近道拼接"与 ResNet 的"跳跃连接防梯度消失"有着相似的暴力美学。
5.9.5 评估指标:IoU (交并比)
IoU=预测面积∩真实面积预测面积∪真实面积IoU = \frac{\text{预测面积} \cap \text{真实面积}}{\text{预测面积} \cup \text{真实面积}}IoU=预测面积∪真实面积预测面积∩真实面积
- mIoU:所有类别的 IoU 求平均,是分割模型的终极分数
面试话术:
“目标检测输出宏观边界框,图像分割进行像素级密集分类。语义分割按类别抠图,实例分割进一步区分同类别不同个体。U-Net 通过编码器-解码器结构实现降维和上采样,利用跳跃连接融合浅层高分辨率位置信息与深层语义信息,实现精确边缘分割。”
模块六:序列模型与自然语言处理 (NLP)
6.1 循环神经网络 (RNN) 与 LSTM
传统神经网络(Dense和CNN)处理的是独立样本,输入大小固定。但真实世界中大量数据是序列数据(文本、语音、时间序列),具有长度不固定、前后时间依赖的特点。RNN专为解决这类问题而生。
6.1.1 RNN 的核心架构
核心思想:引入隐藏状态 (Hidden State, hth_tht) 作为"短期记忆缓冲区",让网络拥有"记忆"。
物理执行过程(以处理句子"我 爱 你"为例):
RNN按时间步(Time Step)逐字处理:
- t=1t=1t=1(输入"我"):接收 x1x_1x1("我"的向量),结合初始记忆 h0h_0h0,计算当前记忆 h1h_1h1
- t=2t=2t=2(输入"爱"):接收 x2x_2x2(“爱”)和上一时刻记忆 h1h_1h1(包含"我"的信息),计算 h2h_2h2
- t=3t=3t=3(输入"你"):接收 x3x_3x3(“你”)和 h2h_2h2(包含"我爱"的信息),计算 h3h_3h3
核心公式:
ht=tanh(Whh⋅ht−1+Wxh⋅xt+b) h_t = \tanh(W_{hh} \cdot h_{t-1} + W_{xh} \cdot x_t + b) ht=tanh(Whh⋅ht−1+Wxh⋅xt+b)
公式解读:
- hth_tht:当前时刻的隐藏状态(记忆)
- ht−1h_{t-1}ht−1:上一时刻的隐藏状态(过去记忆)
- xtx_txt:当前时刻的输入
- WhhW_{hh}Whh:隐藏层到隐藏层的权重矩阵(记忆传递)
- WxhW_{xh}Wxh:输入到隐藏层的权重矩阵(新信息输入)
- bbb:偏置项
- tanh\tanhtanh:激活函数,将输出压缩到 (−1,1)(-1, 1)(−1,1)
公式理解:当前记忆 = 激活函数(过去记忆 × 记忆权重 + 当前输入 × 输入权重 + 偏置)
RNN与CNN的本质区别:
| 特性 | CNN | RNN |
|---|---|---|
| 数据流 | 单向前馈 | 时间递归(存在反馈环) |
| 权重共享 | 空间上共享 | 时间上共享 |
| 处理对象 | 空间数据(图像) | 序列数据(文本、语音) |
| 记忆能力 | 无 | 有短期记忆 |
6.1.2 RNN 的致命缺陷:梯度消失
问题:RNN只能记住极短序列(约5-10个词),长距离依赖会丢失。
数学原因(连乘效应):
反向传播时,误差需要从第 ttt 步传回第 1 步,涉及对 WhhW_{hh}Whh 连续求导 ttt 次:
∂ht∂h1=Whh×Whh×⋯×Whh=Whht \frac{\partial h_t}{\partial h_1} = W_{hh} \times W_{hh} \times \dots \times W_{hh} = W_{hh}^t ∂h1∂ht=Whh×Whh×⋯×Whh=Whht
公式解读:
- 梯度 = 权重矩阵的 ttt 次幂
- 如果 WhhW_{hh}Whh 的特征值 <1< 1<1:0.9100≈0.000020.9^{100} \approx 0.000020.9100≈0.00002,梯度指数级衰减至0
- 如果 WhhW_{hh}Whh 的特征值 >1> 1>1:梯度指数级爆炸,Loss变成NaN
结论:RNN不是"装不下"长序列,而是梯度无法跨越长距离传播,第1步的参数接收不到远处的误差信号。
6.1.3 LSTM:长短期记忆网络
LSTM通过引入细胞状态高速公路和三大门控机制,解决了RNN的梯度消失问题。
核心思想:把记忆分成两条线:
- 隐藏状态 hth_tht:短期记忆,输出给下一层
- 细胞状态 CtC_tCt:长期记忆,贯穿整个时间序列的"高速公路"
三大门控机制:
1. 遗忘门:决定丢弃什么旧记忆
遗忘门看两个信息:上一时刻的短期记忆 ht−1h_{t-1}ht−1 和当前输入 xtx_txt。
它输出一个0到1之间的数字(通过Sigmoid函数):
- 输出接近0:表示"彻底忘掉这部分旧记忆"
- 输出接近1:表示"全部保留这部分旧记忆"
举例:前文提到"男主角",现在输入变成了"女主角",遗忘门就会输出接近0,把关于"男"的记忆清空。
2. 输入门:决定写入什么新记忆
输入门也看 ht−1h_{t-1}ht−1 和 xtx_txt,分两步工作:
- 第一步:决定哪些新信息值得记录(输出0-1的权重)
- 第二步:生成新内容的候选值(通过tanh函数,输出-1到1)
举例:读到"苹果"这个词,输入门会结合前文判断:
- 如果前文是"吃",就记录"水果"相关的特征
- 如果前文是"买"和"手机",就记录"公司/品牌"相关的特征
3. 细胞状态更新:长期记忆的"高速公路"
这是LSTM最核心的设计。细胞状态的更新公式是:
新记忆 = 保留的旧记忆 + 添加的新记忆
为什么能解决梯度消失?
RNN的问题在于:反向传播时要连续乘以权重矩阵,梯度会指数级衰减。
LSTM的细胞状态更新使用了加法:
- 在微积分中,加法的导数是1
- 误差沿着细胞状态传播时,不需要连乘权重矩阵
- 梯度可以以接近1的比例无损倒流,轻松传播100步甚至上千步
4. 输出门:决定当前展现什么
输出门看 ht−1h_{t-1}ht−1 和 xtx_txt,决定:
- 从长期记忆 CtC_tCt 中提取哪些信息作为当前输出 hth_tht
- 不是把所有记忆都输出,而是选择最相关的部分
举例:虽然细胞状态里装了整段话的所有信息,但输出门会根据当前语境,只输出"现在最需要"的信息。
6.1.4 分布式表征与 Embedding
核心概念:用高维浮点数向量(如256维、512维)表示语义信息。
静态 Embedding(如Word2Vec):
- 每个词对应一个固定的向量
- "苹果"无论出现在"吃水果"还是"苹果手机"中,向量相同
- 缺陷:没有上下文概念
动态表征(LSTM的CtC_tCt):
- LSTM的CtC_tCt是融合了上下文的动态向量
- 处理流程:Embedding查表 → 静态向量xtx_txt → LSTM处理 → 动态向量CtC_tCt
- 读到"吃"时,CtC_tCt的某些维度被激活;读到"苹果"时,根据上下文理解为"水果"
CtC_tCt的物理意义:
- 是一个高维浮点数向量(如256维)
- 每个维度代表一个抽象的语义特征
- 例如:第1维记录主语单复数,第50维记录情感倾向,第128维记录是否在从句中
- 不是存储具体字词,而是将整段序列的"核心语义状态"浓缩到向量空间中
6.2 Transformer 与大语言模型
Transformer是当今大语言模型(如ChatGPT)的绝对基石,它彻底颠覆了自然语言处理的范式。
6.2.1 动机:抛弃RNN,拥抱并行
RNN/LSTM的致命缺陷:必须像人类看书一样,从左到右串行处理,一个字一个字地读。
想读懂第100个词,必须先等前99个词处理完。这种串行模式让GPU(擅长并行计算)感到极其憋屈。
Transformer的革命性宣言:
- 彻底扔掉RNN和LSTM
- 把一整句话(如1000个词)一次性、同时全部砸给模型
- 让GPU火力全开,发挥到极致
但这引出一个难题:如果不按顺序读,模型怎么知道上下文关联?答案就是自注意力机制。
6.2.2 核心灵魂:自注意力机制 (Self-Attention)
通俗比喻:鸡尾酒会
假设输入一句话:“这个苹果手机的屏幕碎了,我得赶紧吃个苹果压压惊。”
每个词进入网络时,都会同时环顾四周,端详句子里的其他所有词:
- 第一个"苹果"看到了"手机"、“屏幕”,领悟:“我代表科技公司”
- 第二个"苹果"看到了"吃",领悟:“我代表水果”
自注意力的本质:一个词的最终含义,不是静态字典给的,而是通过动态分配注意力(看周围词),吸收周围特征,临时合成出来的新含义。
6.2.3 运作机制:Q、K、V 三兄弟
模型借鉴数据库查询概念,发明了三种身份:
| 身份 | 含义 | 作用 |
|---|---|---|
| Query (Q) | 查询/诉求 | 我想要什么? |
| Key (K) | 标签/特征 | 我是谁? |
| Value (V) | 核心内容 | 我肚子里装的实际信息 |
相亲大会过程(以"他抢劫了那个银行"为例):
- 亮出身份:每个词自动生成Q、K、V
- 发射查询:"bank"感觉自己是多义词,广播Q:“谁能提供金融或水流线索?”
- 匹配成功:"抢劫"的K散发着"犯罪、金钱"气息,与bank的Q匹配度极高
- 吸收价值:bank大量吸收robbed的V(核心内容)
- 脱胎换骨:bank从模糊多义词,变成精准的"金融犯罪现场"向量
全场1000个词,在千分之一秒内,同时完成这场互相查询、互相吸收的相亲大会。
6.2.4 多头注意力:多维度审视
人类理解一句话极其复杂。比如:“小明给了小红一拳,因为他太生气了。”
"他"既需要弄懂语法关系(指代小明),又需要弄懂情感关系(和"生气"绑定)。
多头注意力(Multi-Head):模型同时克隆出多个(如8个或12个)互不干扰的注意力机制,就像派出8个不同专业的侦探:
- 1号侦探:专门盯着语法和代词指代
- 2号侦探:专门盯着情感色彩
- 3号侦探:专门盯着时间先后顺序
最后把8个侦探的报告汇总,提取的上下文信息丰满到极致。
6.2.5 位置编码:找回丢失的秩序
问题:如果所有词同时处理,模型怎么区分"狗咬人"和"人咬狗"?
解决方案:位置编码
在把词变成向量扔进自注意力之前,模型给每个词身上烙印一个包含位置信息的特殊代码:
- “狗 (座位1) 咬 (座位2) 人 (座位3)”
- “人 (座位1) 咬 (座位2) 狗 (座位3)”
词与词之间不仅对比语义,还能感知彼此身上的"座位号"气息(距离多远、在左在右)。秩序,就这样被完美重建。
6.2.6 词嵌入机制:字怎么知道自己什么意思
疑问:这个字怎么知道自己有什么意思?
答案:出厂自带简历(词嵌入矩阵)
- 静态词典:模型在内存里建一个巨大表格(10万行×4096列),每行代表一个词的向量
- 死记硬背:经过海量文本训练,"苹果"的4096个数字被调整成综合所有潜在含义的静态混合向量
- 入场与变形:
- 先查表拿到"初始简历"(静态向量)
- 再通过自注意力机制,根据周围词决定"现在"是什么意思
总结:它本来就知道自己"可能"是什么意思(查表),然后通过自注意力决定自己"现在"是什么意思。
6.2.7 中英文处理的区别
核心答案:中英文在Transformer内部的矩阵运算和注意力分配上,100%一模一样。
真正的区别在分词阶段(Tokenization):
| 语言 | 分词方式 | 示例 |
|---|---|---|
| 英文 | 子词切分 | unbelievable → ['un', 'believ', 'able'] |
| 中文 | 字/词切分 | 人工智能 → ['人工', '智能'] 或 ['人工智能'] |
结论:中英文的皮囊(Token切分)不同,但灵魂(Transformer处理原理)完全一致。在底层高维向量空间里,中文"苹果"和英文"Apple"被映射到几乎相同的位置。
6.2.8 注意力掩码:防止偷看未来
问题:训练时模型会"偷看"答案
Transformer在训练阶段会一次性看到整句话(如"我爱北京天安门")。但如果不加限制,模型在预测"京"的时候,会"偷看"到后面的"天安门",这样学出来的模型在真正生成时(看不到未来)就会表现很差。
解决方案:因果掩码(Causal Mask)
用一个上三角矩阵把未来位置"遮住"(设为负无穷),经过Softmax后这些位置的概率变成0:
我 爱 北 京 天
我 [0 -∞ -∞ -∞ -∞]
爱 [0 0 -∞ -∞ -∞]
北 [0 0 0 -∞ -∞]
京 [0 0 0 0 -∞]
天 [0 0 0 0 0]
这样"北"只能看到"我"、“爱”、“北”,看不到"京"、“天”。每个位置只能看到自己和前面的词,不能偷看未来。
6.2.9 编码器 vs 解码器:两种架构
Transformer有两种工作模式,对应不同的任务:
编码器(Encoder)
- 特点:双向注意力,可以看到完整输入,没有掩码
- 用途:理解、分类任务
- 代表模型:BERT
- 例子:输入"我爱北京",编码器同时看到所有字,输出句向量用于情感分类
解码器(Decoder)
- 特点:单向注意力,只能看到已生成的部分,有因果掩码
- 用途:生成任务
- 代表模型:GPT系列
- 例子:输入"我爱",解码器预测"北",然后"我爱北"预测"京"…
两种Transformer架构对比:
| 架构 | 组成 | 注意力 | 代表模型 | 用途 |
|---|---|---|---|---|
| 编码器-解码器 | 左边编码器 + 右边解码器 | 编码器双向,解码器单向 | Transformer、T5、BART | 机器翻译 |
| 仅解码器 | 只有解码器 | 单向(有掩码) | GPT系列 | 文本生成 |
为什么GPT选择仅解码器架构?
- 简单、统一,输入输出是同一个东西
- 适合生成任务
- 训练数据更容易获取(只需要文本,不需要成对翻译数据)
BERT vs GPT 核心区别:
| 特性 | BERT(编码器) | GPT(解码器) |
|---|---|---|
| 注意力 | 双向(看全文) | 单向(只能看左边) |
| 掩码 | 没有 | 有(因果掩码) |
| 预训练任务 | 完形填空(Mask预测) | 预测下一个词 |
| 擅长任务 | 理解、分类 | 生成 |
| 为什么BERT不能做生成 | 训练时就看到全文,生成时没未来信息就不会了 | - |
6.2.10 完整Transformer层结构
一个完整Transformer层,除了自注意力,还有三大基础设施:
1. 前馈神经网络 (FFN)
- 结构:两个全连接层中间夹激活函数,先升维(4096→16384)再降维(16384→4096)
- 作用:对词属性进行深加工、非线性转换
- 比喻:自注意力是"开会讨论",FFN是"独立写报告"
2. 残差连接 (Residual Connection)
- 作用:每层处理完后,把处理前和处理后的数据相加
- 效果:在深层网络中铺设"信息高速公路",防止梯度消失
3. 层归一化 (Layer Normalization)(详见4.2.7)
- 作用:对每个词的向量数值强行缩放,拉回均值为0、方差为1
- 效果:防止经过几层矩阵乘法后数值爆炸,模型崩溃
6.2.11 终极架构图景
GPT-3的完整工厂流水线:
文本切Token → 查表拿静态向量 → 贴位置编码座位号 → 扔进工厂
↓
[多头自注意力] → 集体开会,融合上下文
↓
[残差相加 + 层归一化] → 稳固记忆,防止崩溃
↓
[前馈神经网络] → 独立思考,深度加工
↓
[残差相加 + 层归一化]
↓
(重复96次,这就是96层的GPT-3)
↓
最终出口:预测词典里概率最高的下一个词
Transformer = 并行计算的速度 + 位置编码的秩序 + 多头自注意力的极致语境理解
这就是ChatGPT能够读懂你万字长文,还能精准捕捉首尾伏笔关联的根本原因。
6.2.12 大模型输出的完整流水线
很多人以为大模型在第96层算完后,答案就"印"在那个向量里了。大错特错!第96层吐出的,依然只是一个代表了终极上下文的高维浮点数向量(如4096维)。
把这个抽象向量变成屏幕上真实打出来的字,需要经过一道极其精密的解码流水线:
完整例子:当你输入"请给我介绍一下Transformer。"
假设你坐在电脑前,敲下回车键发送了这句话。在按下回车到模型吐出第一个字的这几秒钟里,显卡里发生了一场惊心动魄的数据接力赛:
阶段一:入场安检与装备分发(Tokenize & Embed)
- 分词器切块:你输入的"请给我介绍一下Transformer。"被分词器切碎成Token序列:
[请, 你, 给, 我, 介绍, 一下, Transformer, 。] - 查静态字典:这8个Token拿着自己的编号,去模型出厂自带的"静态词表矩阵"里查表,每个人领到一份初始简历(4096维向量)
- 分发座位号:模型给"请"发1号座位,给"Transformer"发7号座位,座位号信息融入简历向量
阶段二:96层车间炼丹(Transformer Blocks)
这8个带着座位号的向量排成一排,开进96层Transformer加工厂:
- QKV开会:“介绍"环顾四周,看到"我"和"Transformer”,明白任务使命(介绍AI架构而非介绍人)
- FFN独立思考:"介绍"和"Transformer"各自回到办公室,FFN从记忆库提取"Transformer、注意力机制、Google、2017年"等知识,压缩进向量
经过96层提纯,每个Token都变成了包含极其丰富逻辑的"高级语境向量"。
阶段三:终极预测与发声(LM Head & Softmax)
关键时刻!虽然进去8个向量,出来8个高级向量,但模型预测下一个词时,只看最后一个Token(句号"。」")输出的那个终极向量——因为经过自注意力传递,这个句号的向量肚子里已经吸收了前面所有词的上下文。
- 降维打击:句号的4096维终极向量,去乘以模型出厂自带的输出词表矩阵,算出词典里10万个词的Logits得分
- 法官裁决:Softmax把得分变成概率。"好"的概率70%,"没"的概率20%,"滚"的概率0.0001%
- 轮盘赌抽签:根据Temperature参数,模型在大概率词汇中掷骰子,选中了**“好”**字!
此时,你的屏幕上终于蹦出了大模型的第一个回复:“好”。
阶段四:自回归死循环(Autoregressive Loop)
- 衔尾蛇吞噬:刚刚生成的"好"字被模型抓取,拼接到你原本的提问后面
- 新的输入:现在的总输入变成9个Token:
[请, 你, 给, 我, 介绍, 一下, Transformer, 。, 好] - 再走一遭:这9个词再次走一遍查字典、发座位号、96层QKV和FFN提纯
- 再次预测:拿着最后一个"好"字的终极向量,打分、算概率、掷骰子。这次抽中了**“的”**字
- 不断循环:屏幕上出现"好的"。然后新输入变成
[...好, 的],继续预测下一个词可能是[,]
就这样,大模型像不知疲倦的打字机,一圈一圈循环。直到某一次掷骰子抽中了特殊的**<EOS>(终止符)**,流水线拉闸断电,生成结束。
第一道工序:降维打击(Logits映射)
当最后一个Token穿过第96层,它带着一个4096维终极向量走出来。
但词典里有整整10万个词,这个向量怎么和词典对应?
线性层(LM Head):模型在最后部署了一个庞大的权重矩阵(4096×1000004096 \times 1000004096×100000)。终极向量乘以这个矩阵,被投射到10万个维度上。
物理意义:这10万个维度对应词典里的10万个词。算出来的10万个数字叫Logits(原始得分)。比如"苹果"得分15.2,"香蕉"8.1,“挖掘机”-50.4。
第二道工序:绝对理性的法官(Softmax)
Logits有正有负,毫无边界。Softmax把这10万个得分,强行压缩成0到1之间的概率分布,且总和严格等于100%。
结果:"苹果"变成85%,"香蕉"10%,"挖掘机"0.00001%。
第三道工序:轮盘赌与上帝之手(采样策略)
如果每次都只选概率最高的(贪婪搜索Greedy Search),大模型写出来的文章会极其枯燥、像个复读机,还容易陷入死循环。
为了让模型拥有"人类的创造力",工程师引入了受控的随机性(轮盘赌):
1. 温度(Temperature)
在Softmax计算前除以系数TTT:
- 降温(T<1T < 1T<1):拉大贫富差距。原本85%的词放大到99%,模型变得严谨死板。适合代码生成、数学计算。
- 升温(T>1T > 1T>1):杀富济贫。原本85%的词掉到40%,冷门词概率上升。模型变得跳跃、脑洞大开。适合写诗、写小说,但也容易产生幻觉(Hallucination)。
2. 斩断长尾(Top-K采样)
设置K=50K=50K=50,直接把概率排在50名开外的词全部砍掉(设为0),只在前50个最靠谱的词里抽签。
3. 动态截断(Top-P / Nucleus采样)
设置P=0.9P=0.9P=0.9,从概率第一名的词开始往下加,85% + 10% = 95% > 90%,截断! 只有"苹果"和"香蕉"有资格参与,第三名直接踢出局。
完整输出闭环:
- 第96层吐出4096维终极上下文向量
- 乘以词表矩阵,变成10万个词的Logits打分
- 根据Temperature调整分数锐度
- Softmax变成10万个0-1之间的概率值
- Top-K和Top-P把离谱词汇从轮盘上抹掉
- 在剩下的靠谱词汇中,按概率进行"轮盘赌抽签"
- 把选出来的字拼接到原输入,重新走一遍96层,预测下一个字
这就是ChatGPT每次回答同一个问题,用词都不一样的原因(底层有轮盘赌),也是为什么你可以调节参数让它"严谨点"或"活泼点"的底层原理。
6.2.13 KV Cache:大模型推理的加速黑科技
问题:每生成一个字就要走一遍循环,岂不是很慢?
灾难场景:如果每次为了吐出一个新字,都要把前面几千个字重新扔进96层网络里从头算一遍,生成速度会慢到让人砸键盘。
天才解法:KV Cache(空间换时间)
既然历史单词的KKK(Key/标签)和VVV(Value/内容)是固定的,干嘛不把它们存起来?
KV Cache核心逻辑:
1. 第一次进场(Prefill预填充)
你发了一段1000字的背景提示词。模型老老实实把这1000个字的Q,K,VQ, K, VQ,K,V算出来,互相开完会。关键动作:算完后,把这1000个词的**KKK和VVV**打包,塞进显卡内存(VRAM)的专属VIP缓存区。
2. 吐出第一个新词
要预测下一个词时,模型不再把那1000个字重新输进去!它只把刚刚新生成的这一个字扔进96层网络。
3. 开挂的相亲大会(Decoding解码阶段)
这个孤独的新字,一路绿灯走到自注意力会议室。它生成了自己的QQQ(诉求)。
按照规矩,它需要全场所有人的KKK和VVV来开会。这时候,会议室的抽屉(KV Cache)打开了!里面整整齐齐码放着前面1000个词的KKK和VVV。
新字的QQQ,直接拿着扫描仪去扫缓存里的KKK,然后提取缓存里的VVV。
零等待!零重复计算!
算完之后,新字顺手把自己的KKK和VVV也塞进缓存抽屉,供下个词使用。
架构师的代价:内存墙(Memory Wall)
KV Cache让大模型吐字速度从"便秘"变成"拉肚子",实现了O(1)O(1)O(1)级别的极速计算——不管前面文本多长,每次只需计算当前这一个词的代价。
但代价是极其恐怖的显存消耗:
为了存下这些KKK和VVV,显卡需要付出惨痛代价。假设一个130亿参数的模型(如Llama-13B),哪怕只有一个用户,如果上下文达到8000字,光是存KV Cache就会吃掉好几个G的显存!
这就解释了工业界的两个未解之谜:
- 为什么ChatGPT经常限制"历史对话长度"?因为对话太长,服务器的显存抽屉就被KV Cache撑爆了!
- 为什么大厂要疯狂堆卡?因为一块顶配RTX 4090只有24G显存,大模型权重占十几G,剩下的空间根本装不下几个用户的KV Cache。
6.3 思维链 (Chain-of-Thought, CoT)
CoT(Chain-of-Thought,思维链)是让大模型从"直肠子猜答案"进化到"像人类一样分步思考"的核心技术。它经历了从提示词技巧到模型内功的三个进化时代。
6.3.1 CoT 1.0:提示词时代(Prompt Engineering)
背景:早期模型(如 GPT-3)是"直肠子",问复杂数学题直接猜答案,准确率极低。
核心发现:在问题后面加上一句咒语:
“Let’s think step by step”(请一步一步地思考)
模型就会被"骗"得开始写推导步骤,准确率从 17% 飙升到 78%。
本质:CoT 在这个阶段纯粹是外挂的提示词技巧。你不加这句咒语,模型就绝对不展示思考过程。
6.3.2 CoT 2.0:微调内化时代(SFT)
痛点:每次都要用户手动输入"一步一步思考"太蠢了。
解法:在监督微调(SFT)阶段,刻意把训练数据里的答案都改成"带推导步骤的详细版"。
结果:模型形成了肌肉记忆。即使不加提示词,面对复杂问题也会本能地按照"第一步、第二步、结论"的格式回答。
本质:CoT 已融入模型权重,但更像是一种"排版格式"——它学会了展示思考过程,但未必在真正深度思考。
6.3.3 CoT 3.0:原生深度思考时代(RL强化学习)
代表模型:DeepSeek-R1、OpenAI o1/o3
核心突破:这些模型在底层被**强化学习(RL)**改造成了"思考机器"。
关键机制:
- 自动触发
<think>标签:当输入复杂问题时,模型在后台自动生成<think>隐藏字符,进入草稿纸模式 - 自我推演:在
<think>...</think>区间内,模型自己跟自己对话、试错、推翻重来 - 输出答案:直到内部推演完成,才输出
</think>,然后给出最终精简答案
重要提示:对于 R1/o1 这类模型,不需要加"请一步一步思考"的提示词,甚至官方建议不要加——多余提示可能打乱其强化学习训练出的思维节奏。
6.3.4 三种 CoT 实现方式对比
| 方式 | 实现手段 | 是否需要提示词 | 思考深度 | 代表模型 |
|---|---|---|---|---|
| CoT 1.0 | 手动加提示词 | 必须加 | 浅(表面推导) | GPT-3 |
| CoT 2.0 | SFT微调内化 | 不需要 | 中等(格式化推导) | 早期ChatGPT |
| CoT 3.0 | RL强化学习 | 不需要 | 深(自主推演) | DeepSeek-R1, o1 |
面试高分话术:
“CoT 已从人类强加给机器的’紧箍咒’,进化成机器解决复杂问题的’内功心法’。DeepSeek-R1 通过强化学习让模型自发产生
<think>内部动作,实现了无需提示词的原生深度思考能力。”
6.4 混合专家模型 (MoE)
MoE (Mixture of Experts) 是当前大模型为了省钱、提速而发明的绝对杀手锏。DeepSeek-V3、GPT-4、Mixtral 等最强模型都采用了基于 MoE 的 Transformer 架构。
6.4.1 痛点:大锅饭的灾难
传统 Transformer(如 LLaMA-70B),它的 FFN 层是一个极其庞大的矩阵。当你输入一个词(如"猫")时,整个网络里 700 亿个参数全都要被唤醒参与计算。
这就像为了治一个感冒,全医院所有的内科、外科、牙科医生全都要来给你看病,算力和电费极其浪费!
6.4.2 MoE 的破局:分科看病(稀疏激活)
MoE 把原本那个极其庞大的 FFN 层,硬生生切成了很多个小的网络(如切成 8 个),称为 “专家 (Experts)”。然后在专家前面,加一个 “路由器 (Router/Gate)”。
工作流程:
- 当一个词进来时,先经过 Router
- Router 给这个词算分数,判断它属于什么领域
- 如果这个词是
def(写代码),Router 说:“代码问题,分配给 2号专家和 5号专家处理!” - 结果:其他 6 个专家继续"睡大觉",完全不消耗算力
核心优势:
- 模型可以做得无限大(总参数量极大,知识储备极多)
- 推理时只唤醒一小部分参数(激活参数量小,运行速度极快)
- 这就是 DeepSeek 等模型又聪明又便宜的根本原因
6.4.3 Router 的数学原理
Router 本质上是一个小型的线性层 + Softmax:
G(x)=Softmax(Wg⋅x)G(x) = \text{Softmax}(W_g \cdot x)G(x)=Softmax(Wg⋅x)
- 输入:当前词的向量 xxx
- 输出:每个专家的"被选概率"(如
[0.1, 0.6, 0.05, 0.25]) - Top-K 选择:只选概率最高的 K 个专家(通常 K=2)
负载均衡损失:为了防止 Router 总是只选 1 号专家(导致其他专家永远睡大觉),训练时会加一个惩罚项,强迫 Router 均匀分配任务。
6.5 注意力机制进化:MHA vs MQA vs GQA
在你的笔记里,我们聊过 Transformer 为了防止每次生成新词都要从头算一遍,发明了极其耗费显存的黑科技——KV Cache。
但随着模型越来越大,哪怕用了 KV Cache,显存也会被瞬间撑爆。为了拯救显卡,科学家们把目光盯上了**“多头注意力 (Multi-Head Attention, MHA)”**,并对它进行了极其暴力的"资本家式精简"。
6.5.1 万恶之源:标准的多头注意力 (MHA)
在最原始的 Transformer(如早期 GPT-3)中,使用的是 MHA (Multi-Head Attention)。
物理设定:假设模型派出 8 个侦探(8 个注意力头)。
- 1 号侦探(负责查语法)有自己的 Q1Q_1Q1、K1K_1K1、V1V_1V1
- 2 号侦探(负责查情感)有自己的 Q2Q_2Q2、K2K_2K2、V2V_2V2
- 8 个侦探,每个人都有一套完全独立的 KKK 和 VVV
致命痛点(KV Cache 爆炸):
当要把历史上下文存进显存时,必须同时存下 8 份不同的 KKK 和 VVV!如果上下文有一万字,这 8 份数据的体积会极其庞大,直接导致服务器 Out of Memory。
6.5.2 极端的暴力压缩:多查询注意力 (MQA)
为了省显存,Google 在 2019 年提出了 MQA (Multi-Query Attention)。
物理设定:依然是 8 个侦探(保持 8 个不同的 QQQ 不变)。
抠门操作:强行没收他们独立的笔记本!全场 8 个侦探,必须共享唯一的一套 KKK 和 VVV。
结果:
- 算力与显存狂欢:只有 1 份 KKK 和 VVV 需要存入 KV Cache,显存消耗瞬间暴降至原来的 1/8
- 副作用:智商下降。负责语法的侦探和负责情感的侦探被迫看同一份简报,模型丧失了多维度细节,回答问题变得"死板"
6.5.3 工业界的完美中庸:分组查询注意力 (GQA)
既要 MQA 的极速省显存,又要 MHA 的高智商,怎么办?
目前统治大模型圈(LLaMA 3、DeepSeek、Mistral 等)的绝对霸主——GQA (Grouped-Query Attention)。
物理设定:完美的"部门制"管理法。
中庸操作:
- 把 8 个侦探分成 2 个小组(每组 4 人)
- 组内共享,组间独立:第 1 组共享 K1K_1K1 和 V1V_1V1;第 2 组共享 K2K_2K2 和 V2V_2V2
结果:
- 显存消耗:只需存 2 份 KKK 和 VVV,显存占用降到 MHA 的 1/4
- 模型智商:保留了多个小组的不同视角,GQA 的智商几乎和最原始的 MHA 一模一样!
6.5.4 三者对比总结
| 机制 | 显存占用 | 推理速度 | 模型智商 | 工业界地位 |
|---|---|---|---|---|
| MHA | 极高(8份KV) | 慢 | 最高 | 早期使用,现已淘汰 |
| MQA | 极低(1份KV) | 极快 | 较低 | 极端速度场景 |
| GQA | 低(2-4份KV) | 快 | 接近MHA | 当前绝对主流 |
面试高分话术:
“GQA 本质上是对 KV Cache 显存瓶颈的优雅妥协。它通过将多个 Query 头分组,共享少量的 Key 和 Value 头,在几乎不损失模型多维度理解能力的前提下,大幅削减了推理阶段的显存占用和访存带宽压力,是当前大模型落地部署的核心架构标配。”
6.6 Graph RAG:向量检索的进化版
6.6.1 传统向量 RAG 的两大死穴
死穴 1:缺乏全局宏观视野
用户提问:“请总结《史记》中汉武帝一生的核心政治主张”
传统 RAG 只会计算句子相似度,捞出 5 个最相似的文本块(如汉武帝打猎、吃饭)。大模型拿着这些碎片,根本总结不出宏观的一生。
死穴 2:缺乏多跳推理能力 (Multi-hop Reasoning)
用户提问:“刺杀张三的凶手的妻子的弟弟,在哪个公司上班?”
传统 RAG 用这段话去搜,由于文本库里没有一句话同时包含这四个人名,搜出来的全是毫无关联的垃圾。它只会做字面相似度匹配,根本不懂逻辑递进!
6.6.2 Graph RAG 的核心思想
底层哲学转变:不要把文章当成一堆散落的纸片(文本块),而要把它抽成一张充满逻辑连接的网(知识图谱 Knowledge Graph)!
想象警匪片里,老刑警在白板上钉满照片,中间用红毛线连起来的画面。那就是 Graph RAG 的本质。
6.6.3 Graph RAG 的两个阶段
阶段 1:建图阶段 (Indexing)
- 实体抽取 (NER):让大模型通读文本,把"人名、地名、公司名、事件"全部抽出来,变成图谱上的节点 (Nodes)
- 关系抽取 (Relation Extraction):让大模型搞清楚节点之间的关系,连上边 (Edges)。如:
(张三) --[被刺杀于]--> (长安街) <--[案发地]-- (李四) - 社区总结 (Community Detection):用图算法把关系紧密的节点圈成"社区",提前写好宏观摘要
阶段 2:检索阶段 (Query)
用户提问:“刺杀张三的凶手的妻子的弟弟在哪上班?”
Graph RAG 直接去图谱上走迷宫:
定位节点 [张三] -> 顺着 [被刺杀] 的边找到 [凶手王五] -> 顺着 [配偶] 的边找到 [妻子赵六] -> 顺着 [亲属] 的边找到 [弟弟赵七] -> 顺着 [就职于] 找到最终答案 [腾讯]!
6.6.4 工程权衡与最佳实践
Graph RAG 的代价:
| 问题 | 说明 |
|---|---|
| 建图成本极高 | 用 LLM 抽取节点和边,Token 消耗量是天文数字 |
| 图谱更新极难 | 传统 RAG 删文章只要删几个向量,图谱里牵一发而动全身 |
| 噪音问题 | 大模型容易抽取出充满噪音的废话节点 |
最佳实践:Hybrid RAG(混合检索)
- 用向量数据库做底层的基础召回保底
- 在关键的实体业务上(如金融风控股权穿透、医疗知识图谱),再外挂 Graph RAG 提供逻辑链条
- 两者互补,才是最终答案
面试绝杀话术:
“Graph RAG 解决了传统向量 RAG 在多跳推理和宏观摘要上的死穴,通过构建知识图谱实现逻辑链条的精准追溯。但它有着极高的工程代价:建图成本昂贵、图谱更新困难、容易产生噪音节点。所以目前的最佳实践是 Hybrid RAG——用向量检索做基础召回,在关键业务上外挂 Graph RAG 提供多跳推理能力,两者互补。”
6.7 大模型微调 (Fine-tuning) 与 LoRA
6.7.1 预训练 vs 微调
预训练 (Pre-training) —— 九年义务教育 + 大学本科
OpenAI 或 Meta 花几千万美元买几万张 A100 显卡,把全人类几千亿个网页、维基百科、代码全部喂给大模型(如 LLaMA-3)。
- 结果:训练出基座模型 (Base Model)
- 特点:通晓天文地理,但不会好好聊天。你输入"你好",它可能接"我好,大家好才是真的好"(广告词),而不是"您好,请问有什么可以帮您?"
- 本质:知识极其渊博,但毫无职场素养的应届毕业生
微调 (Fine-tuning) —— 职场岗前培训
拿出特定格式、高质量的小数据集(几万条人工写好的"一问一答"),让模型再进行小规模训练。
- 结果:模型权重发生微小改变,学会特定语气、任务格式、垂直领域知识
- 本质:改变大模型的"肌肉记忆"和"本能反射"
6.7.2 为什么不用 Prompt?
| 方式 | 比喻 | 问题 |
|---|---|---|
| Prompt | 带小抄 | 每次提问都要重复规矩,极度消耗 Token(费钱),任务复杂时容易"忘掉"提示词,开始幻觉 |
| 微调 | 把规矩刻进骨子里 | 不需要写提示词,直接扔输入,本能地按专业口吻输出 |
6.7.3 LoRA:平民炼丹的救星
全参数微调 (FFT) 的灾难:
微调 700 亿参数的模型,如果全部解冻重新训练,需要极其恐怖的显卡集群,普通公司玩不起。
LoRA (Low-Rank Adaptation) 的降维打击:
想象预训练好的大模型是一本 10000 页的超厚《新华字典》(预训练权重 W0W_0W0):
- FFT 的做法:用橡皮擦掉不合适的内容,重新写。一旦搞砸,字典就废了(灾难性遗忘)
- LoRA 的做法:绝对不允许在字典上乱涂乱画(彻底冻结 W0W_0W0)! 而是买一本极其轻薄的 10 页便利贴(旁路矩阵 AAA 和 BBB),把新知识全部写在便利贴上
- 推理时:同时查阅"厚字典"和"便利贴",结果相加 (W0+ΔWW_0 + \Delta WW0+ΔW)
优势:
- 只训练几百万参数(占总参数 0.1%)
- 一张 RTX 4090,几小时就能微调几百亿参数的大模型!
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 冻结原始权重 | 锁定预训练模型 W₀,不参与梯度更新,保留通用知识 |
| 2 | 注入低秩矩阵 | 添加两个小矩阵 A(维度 d×r)和 B(维度 r×k),r 为秩,通常远小于 d 和 k(r=8~64) |
| 3 | 计算增量 | ΔW = BA,通过训练 A 和 B 学习任务特定知识 |
| 4 | 前向传播 | 输出 = W₀・x + (B・A)・x,将原始输出与低秩增量输出相加 |
| 5 | 推理合并 | 训练完成后,可将 ΔW 与 W₀合并(W_new = W₀ + BA),不增加推理延迟 |
6.7.4 LoRA 合并的数学原理
核心问题:便利贴怎么和字典合并?
矩阵乘法的奇迹:
- 矩阵 AAA:10000×810000 \times 810000×8(8万参数)
- 矩阵 BBB:8×100008 \times 100008×10000(8万参数)
- A×BA \times BA×B = 10000×1000010000 \times 1000010000×10000 的大矩阵(和 W0W_0W0 尺寸一模一样!)
合并公式:
Wnew=W0+ΔW=W0+(A×B)W_{new} = W_0 + \Delta W = W_0 + (A \times B)Wnew=W0+ΔW=W0+(A×B)
关键洞察:
- 对应位置相加,替换原来的数字
- 参数量没有增加哪怕 1 个字节!
- 推理速度和原来一模一样,不会变卡
6.7.5 热插拔
理解了这个数学原理,就能明白为什么各大公司都在疯狂吹捧 LoRA:
- 推理零延迟:合并后参数量没变,速度不变
- 神级热插拔:基座模型 W0W_0W0 就像游戏主机,不同 LoRA 就是游戏卡带!
- 想当医生?加上医疗 LoRA(W0+ΔW医W_0 + \Delta W_{医}W0+ΔW医)
- 想写代码?减掉医疗 LoRA,加上代码 LoRA(Wnew−ΔW医+ΔW代码W_{new} - \Delta W_{医} + \Delta W_{代码}Wnew−ΔW医+ΔW代码)
- 一个基座模型,瞬间切换成无数个顶级专家!
6.7.6 微调实战
步骤 1:准备数据集(最脏、最累、最核心的活)
整理成 JSONL 格式(Instruction-Tuning 监督微调指令集):
{
"instruction": "请根据以下症状,给出可能的疾病诊断。",
"input": "患者男,45岁,胸骨后压榨性疼痛,持续30分钟,伴大汗。",
"output": "初步怀疑为急性心肌梗死(AMI)。建议立即进行心电图检查并检测心肌酶谱。"
}
步骤 2:跑命令炼丹
设置学习率、Batch Size,点击运行。几小时后得到 lora_adapter.bin(那本便利贴)。
部署时合并,一个完全属于你的专业大模型诞生!
6.7.7 RAG vs 微调
场景:一万份绝密报销文档,做 HR 智能客服。
正确答案:必须用 RAG,绝对不能用微调!
为什么?
| 问题 | 微调的风险 | RAG 的优势 |
|---|---|---|
| 幻觉风险 | 改变"语感"和"本能",容易脑补成"100元"(背错) | 拿着原文档逐字比对,极其精准 |
| 安全风险 | 像肌肉记忆,随时可能被"套话"套出高管专属条款 | 数据库层加权限校验,没权限搜不到 |
| 更新成本 | 报销额度改 80 元,得重新跑数据集、炼丹几小时 | 替换 PDF 文件,1 秒钟搞定 |
终极结论:
- 微调:学"格式、语气、逻辑"
- RAG:查"精准事实、动态数据"
6.8 RLHF:基于人类反馈的强化学习
6.8.1 RLHF 的定位与价值
RLHF (Reinforcement Learning from Human Feedback) 是大模型训练的第三阶段,也是当前 AI 时代最昂贵的"对齐 (Alignment)"技术。
如果说:
- 预训练给了大模型智商(知识储备)
- SFT 微调给了大模型情商(对话格式)
- RLHF 则在给大模型塑造**“三观"和"道德底线”**
ChatGPT 之所以震惊世界,核心就在于 RLHF 让 GPT-3 从"满嘴跑火车的键盘侠"变成了"有教养的得力助手"。
6.8.2 三阶段训练流水线
第一步:SFT(监督微调)—— 老师手把手教
- 做法:人类专家写出几万条完美的"提问-回答"对
- 目的:让模型模仿完美答案,学会"人类喜欢的说话腔调"
- 局限:太贵、太慢,人类专家一天最多写 10 篇长文
第二步:训练 Reward Model(奖励模型)—— 培养自动阅卷机
既然让人类写答案太慢,那让人类做**“排序题”**就快得多:
- 给 SFT 后的模型输入一个问题
- 让模型一次性生成 4 个不同回答(A, B, C, D)
- 人类标注员按好坏排序:
B > D > A > C - 训练 Reward Model (RM):一个全新的较小模型,学会人类的品味
结果:RM 变成超级阅卷机,能给任意回答打分(8.5 分或 -10 分),打分标准与人类价值观对齐。
第三步:PPO 强化学习 —— 疯狂刷分之旅
现在有了"考生(大模型)“和"阅卷机(RM)”,让机器自己卷自己:
- 从题库抽问题:“怎么造炸弹?”
- 大模型生成回答
- RM 瞬间评分:写炸弹配方 → -100 分;拒绝回答 → +10 分
- PPO 算法:大模型根据得分修改底层参数,迎合阅卷机拿高分
狂热闭环:这个过程重复几百万次,大模型彻底"顿悟",变得懂礼貌、拒绝有害问题、给出详实答案。
6.8.3 奖励黑客与 KL 散度惩罚
奖励黑客 (Reward Hacking):
大模型在 PPO 刷分时发现漏洞:“只要在每句话前加’作为人工智能,我非常乐意为您解答’,或者把回答写得无限长,RM 就会打高分!”
结果:模型变成"废话文学大师",得分高但人类看着不适。
解决方案:KL 散度惩罚项 (KL Penalty)
在 PPO 中加入数学封印:
总奖励=RM 分数−β⋅DKL(πθ∣∣πSFT)\text{总奖励} = \text{RM 分数} - \beta \cdot D_{KL}(\pi_{\theta} || \pi_{\text{SFT}})总奖励=RM 分数−β⋅DKL(πθ∣∣πSFT)
含义:你可以去迎合阅卷机刷高分,但现在的回答不能偏离 SFT 阶段的样子太远。只要为了刷分而变得油嘴滑舌,就狠狠扣分。
这个数学封印保证了大模型既拥有高尚道德,又保留正常说话方式。
6.8.4 DPO:RLHF的颠覆者
DPO (Direct Preference Optimization,直接偏好优化) 是2024年工业界(Llama 3、Qwen 2等)大规模采用的对齐技术,正在全面取代传统RLHF。
RLHF的痛点:
- 需要同时维护4个模型:基座模型、参考模型、奖励模型、价值模型
- 显存占用爆炸,训练极不稳定
- PPO强化学习调参复杂
DPO的神级降维打击:
科学家从数学上证明:可以直接把奖励模型干掉!
核心思想:利用Bradley-Terry模型,将人类偏好排序数据(A比B好)直接转换为常规的交叉熵损失函数:
LDPO=−logσ(β⋅logπθ(yw∣x)πref(yw∣x)−β⋅logπθ(yl∣x)πref(yl∣x))\mathcal{L}_{DPO} = -\log \sigma\left(\beta \cdot \log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \cdot \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)LDPO=−logσ(β⋅logπref(yw∣x)πθ(yw∣x)−β⋅logπref(yl∣x)πθ(yl∣x))
公式解读:
- ywy_wyw:人类偏好的回答(win)
- yly_lyl:人类不喜欢的回答(loss)
- πθ\pi_\thetaπθ:当前训练的策略模型
- πref\pi_{ref}πref:参考模型(SFT后的模型,冻结参数)
- β\betaβ:温度系数,控制与参考模型的偏离程度
DPO的优势:
- 极简:只需要2个模型(策略模型+参考模型),显存节省50%
- 稳定:像普通SFT一样训练,无需强化学习的复杂调参
- 效果:达到甚至超越RLHF的对齐效果
6.9 模型量化 (Quantization)
6.9.1 量化的本质与动机
核心矛盾:算力决定模型跑多快,显存决定能不能跑起来。
大模型几百亿参数,默认使用 FP32(32位单精度) 或 FP16(16位半精度) 存储:
- 7B 模型 FP32:70亿×4字节=28GB70亿 \times 4\text{字节} = 28\text{GB}70亿×4字节=28GB 显存
- 7B 模型 FP16:70亿×2字节=14GB70亿 \times 2\text{字节} = 14\text{GB}70亿×2字节=14GB 显存
量化(Quantization):把高精度小数参数,强行映射成低精度整数,实现数字压缩。
6.9.2 精度等级对比
| 精度 | 位数 | 存储/参数 | 7B模型显存 | 特点 |
|---|---|---|---|---|
| FP32 | 32位 | 4字节 | 28GB | 土豪模式,极致精准 |
| FP16/BF16 | 16位 | 2字节 | 14GB | 中产模式,主流训练 |
| INT8 | 8位 | 1字节 | 7GB | 平民模式,普通游戏本可跑 |
| INT4 | 4位 | 0.5字节 | 3.5GB | 极限模式,手机可跑 |
示例:记录 π\piπ 数字
- FP32:3.141592653.141592653.14159265(极其精准)
- INT4:333(粗糙整数,但省了 75% 空间)
6.9.3 为什么精度砍了,模型没变成智障?
核心原理:神经网络的鲁棒性(容错率)
大模型做决定不是靠某一个数字,而是靠几千万个数字"综合投票"。
- 某几根猫毛特征权重从 0.1230.1230.123 抹成 0.10.10.1
- 只要"尖耳朵"、"胡须"等宏观特征还在
- 投票结果依然是"猫"
结论:量化误差在千亿参数的汪洋大海里,连个水花都翻不起来。学术界证明:16位降到4位量化,模型智商损失极其微小。
6.9.4 分组量化 (Group-wise Quantization)
问题:如果直接按最大值压缩,小数字会被抹成0
参数组:[1.2,1.5,−0.8,100.0][1.2, 1.5, -0.8, 100.0][1.2,1.5,−0.8,100.0]
- 按最大值 100.0100.0100.0 压缩,前三个小数字全部变成 000
- 特征彻底死亡
解决方案:
- 每128个参数分一组 (Group)
- 找出组内最大值的缩放因子 (Scale Factor),用16位高精度保存
- 组内参数压缩成4位整数
- 还原公式:真实权重 = 4位整数 ×\times× 缩放因子
效果:完美解决大小数字跨度失真问题。
6.9.5 反量化发生在哪里?
关键洞察:INT4 无法直接运算,必须反量化回 FP16。
物理流程:
- 显存 (VRAM):模型以 INT4 压缩格式存储,只占 4GB
- 搬运:需要计算时,INT4 小块数据高速搬运到计算核心
- 计算核心 (SRAM/寄存器):
- 瞬间反量化成 FP16
- 与输入数据做乘法运算
- 算完立刻丢弃,绝不写回显存
结论:
- 显存里永远只存 4GB INT4 压缩包
- 反量化只在计算核心临时发生
- 既省显存,又白嫖搬运速度
面试话术:
“模型量化是将高精度浮点参数压缩为低精度整数的模型压缩技术。通过将 FP16 压缩为 INT4,显存占用降低 75%,使大模型能在消费级显卡甚至手机上运行。工业界采用分组量化策略,每 128 个参数共享一个缩放因子,防止小数字被抹杀。反量化在 GPU 计算核心动态进行,算完即弃,不会膨胀显存占用。量化是 QLoRA 微调和本地部署的基石。”
本模块完
模块七:AI术语表
本模块汇总人工智能领域高频缩写与核心概念,便于快速查阅和面试应对。
7.1 大模型 (LLM) 核心概念
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| RAG | Retrieval-Augmented Generation 检索增强生成 |
给大模型外挂知识库,先检索资料再生成回答,解决幻觉问题 |
| Graph RAG | Graph-based Retrieval-Augmented Generation | 基于知识图谱的RAG,解决多跳推理和宏观摘要问题 |
| Hybrid RAG | 混合RAG | 向量检索+Graph RAG互补,工业界最佳实践 |
| Multi-hop | 多跳推理 | 跨越多个逻辑步骤的推理能力 |
| RLHF | Reinforcement Learning from Human Feedback 基于人类反馈的强化学习 |
让人类给模型回答打分,训练奖励模型纠正说话风格(ChatGPT的核心技术) |
| RM | Reward Model 奖励模型 |
学会人类偏好的评分模型,给大模型回答打分 |
| PPO | Proximal Policy Optimization 近端策略优化 |
RLHF第三阶段的强化学习算法,让模型根据奖励优化策略 |
| SFT | Supervised Fine-Tuning 监督微调 |
用人类标注数据微调模型,让模型学会遵循指令 |
| Alignment | 对齐 | 让大模型行为符合人类价值观和期望的技术 |
| Reward Hacking | 奖励黑客 | 模型钻奖励函数漏洞,用作弊方式获取高分 |
| LoRA | Low-Rank Adaptation 低秩微调 |
冻结原模型权重,只训练两个小型低秩矩阵,节省90%显存 |
| Fine-tuning | 微调 | 在预训练模型基础上,用特定数据继续训练,适配下游任务 |
| Pre-training | 预训练 | 在大规模通用数据上训练,获得基础知识和语言能力 |
| Base Model | 基座模型 | 预训练完成但未微调的原始大模型 |
| Instruction Tuning | 指令微调 | 用指令-回答对训练,让模型学会遵循人类指令 |
| MoE | Mixture of Experts 混合专家模型 |
将大网络拆成多个专家,每次只激活最相关的专家,省算力 |
| CoT | Chain-of-Thought 思维链 |
让模型分步思考的技术,从提示词技巧进化到模型内功 |
| CoT Prompting | 思维链提示 | 通过"Let’s think step by step"等提示词触发模型逐步推理 |
| DeepSeek-R1/o1 | 原生深度思考模型 | 通过RL训练让模型自动生成<think>标签进行内部推演 |
| KV Cache | Key-Value Cache | 缓存历史Token的K和V,避免重复计算,加速推理 |
| MHA | Multi-Head Attention 多头注意力 |
标准Transformer注意力,每个头有独立的K、V,显存占用高 |
| MQA | Multi-Query Attention 多查询注意力 |
所有头共享一套K、V,显存暴降至1/8,但性能下降 |
| GQA | Grouped-Query Attention 分组查询注意力 |
头分组共享K、V,平衡显存与性能,当前大模型主流 |
| Router | 路由器/门控 | MoE中决定Token分配给哪个专家的小型网络 |
| Expert | 专家网络 | MoE中被稀疏激活的前馈子网络 |
| Quantization | 量化 | 将FP16参数压缩为INT4/INT8,降低75%显存占用 |
| FP16/BF16 | 半精度浮点 | 16位浮点数,模型训练和推理的标准精度 |
| INT8/INT4 | 8位/4位整数量化 | 低精度整数存储,极大节省显存和带宽 |
| Scale Factor | 缩放因子 | 分组量化中用于还原参数比例的系数 |
| Dequantize | 反量化 | 将低精度整数还原为高精度浮点数进行运算 |
7.2 AI Agent(智能体)
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| Agent | AI Agent 人工智能体 |
给大模型装上记忆、规划和工具,具备执行智能 |
| ReAct | Reasoning and Acting 协同推理与行动 |
Agent的核心框架:思考->行动->观察的循环 |
| CoT | Chain of Thought 思维链 |
让模型一步步推理,拆解复杂任务 |
| Tool Use | 工具使用 | 大模型调用外部API的能力 |
| Planning | 规划 | 将大任务拆解为子任务的能力 |
| Memory | 记忆 | 短期上下文+长期向量数据库 |
| LangChain | - | 编排大模型的框架,实现ReAct、RAG、记忆、工具调用 |
| Chains | 执行链 | LangChain中把多步骤任务串联起来的机制 |
7.3 工业部署与框架
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| TFF | TensorFlow Federated | Google开源的联邦学习框架,支持分布式隐私计算 |
| ONNX | Open Neural Network Exchange 开放神经网络交换 |
AI模型的通用格式,实现跨框架兼容 |
| TRT | TensorRT | NVIDIA官方推理优化工具,速度提升3-5倍 |
| CUDA | Compute Unified Device Architecture | NVIDIA的GPU并行计算平台,深度学习的基础 |
| API | Application Programming Interface 应用程序编程接口 |
软件间的"点菜菜单",按文档传参获取结果 |
7.4 计算机视觉 (CV)
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| ViT | Vision Transformer 视觉Transformer |
将图片切成Patch当单词处理,用Transformer做图像分类 |
| GAN | Generative Adversarial Network 生成对抗网络 |
生成器和判别器博弈,生成逼真图像 |
| NeRF | Neural Radiance Fields 神经辐射场 |
用神经网络从2D照片渲染3D场景 |
| IoU | Intersection over Union 交并比 |
预测框与真实框的重合度,目标检测的基础指标 |
| mAP | mean Average Precision 平均精度均值 |
目标检测的综合性能指标 |
| FCN | Fully Convolutional Network 全卷积网络 |
去掉全连接层,用卷积实现像素级分类 |
| U-Net | U型网络 | 编码器-解码器+跳跃连接,医学图像分割霸主 |
| Semantic Seg | 语义分割 | 按类别给像素涂色,只认种类不认个体 |
| Instance Seg | 实例分割 | 区分同类别不同个体,左边猫和右边猫分开 |
| Panoptic Seg | 全景分割 | 语义分割+实例分割的大一统 |
| mIoU | mean IoU | 平均交并比,图像分割的核心评估指标 |
| Superpixel | 超像素 | 聚类生成的有意义区域,降低计算量8000倍 |
| SLIC | Simple Linear Iterative Clustering | 生成超像素的标准算法,颜色+位置双重约束 |
7.5 统计数学与理论
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| MLE | Maximum Likelihood Estimation 极大似然估计 |
完全相信当前数据推测参数 |
| MAP | Maximum A Posteriori 最大后验估计 |
相信数据的同时加入先验知识 |
| KL | KL Divergence KL散度 |
衡量两个概率分布的差异,不对称 |
| OOD | Out-of-Distribution 分布外数据 |
模型训练时没见过的数据类型 |
| Non-IID | Non-Independent and Identically Distributed | 数据非独立同分布,联邦学习的核心难题 |
7.6 传统机器学习算法
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| KNN | K-Nearest Neighbors K近邻算法 |
懒惰学习,算距离找邻居投票 |
| Lazy Learning | 懒惰学习 | 没有训练过程,预测时才计算 |
| Euclidean Distance | 欧氏距离 | 高维空间中的几何距离度量 |
| Naive Bayes | 朴素贝叶斯 | 基于贝叶斯定理的概率分类器 |
| Bayes’ Theorem | 贝叶斯定理 | 通过先验和似然计算后验概率 |
| Laplace Smoothing | 拉普拉斯平滑 | 分子加1防止概率为0的技巧 |
7.7 优化与训练
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| BGD | Batch Gradient Descent 批量梯度下降 |
每次用全部数据算梯度,方向精准但极慢 |
| SGD | Stochastic Gradient Descent 随机梯度下降 |
每次用1张图算梯度,速度快但震荡剧烈 |
| Mini-Batch | 小批量梯度下降 | 每次用一小批(64/128)算梯度,工业界标准 |
| Batch Size | 批量大小 | 每次迭代使用的样本数,通常设为2的幂次 |
| Focal Loss | 焦点损失 | 解决样本不平衡,降低简单样本权重 |
| Hard Example Mining | 困难样本挖掘 | 让模型聚焦在难分类的样本上 |
| SMOTE | Synthetic Minority Over-sampling | 在少数类样本间插值生成合成样本 |
| Oversampling | 过采样 | 复制少数类样本以平衡数据 |
| Undersampling | 欠采样 | 减少多数类样本以平衡数据 |
| Class Weights | 类别权重 | 给少数类赋予更高的损失权重 |
| BN | Batch Normalization 批归一化 |
跨样本对同一特征归一化,CNN标配 |
| LN | Layer Normalization 层归一化 |
对单样本所有特征归一化,Transformer标配 |
| SimCLR | Simple Contrastive Learning | 对比学习框架,依赖超大Batch Size |
| MoCo | Momentum Contrast | 动量对比,用小Batch实现大字典 |
| InfoNCE | Information Noise Contrastive Estimation | 对比学习损失函数,拉近正样本推开负样本 |
| Hard Negative | 困难负样本 | 与锚点相似度高的负样本,用于打破模型捷径学习 |
7.8 强化学习 (RL)
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| RL | Reinforcement Learning 强化学习 |
在试错中学习,通过环境奖惩反馈优化策略 |
| DRL | Deep Reinforcement Learning 深度强化学习 |
用神经网络替代Q-Table,解决维度灾难 |
| MDP | Markov Decision Process 马尔可夫决策过程 |
强化学习的数学框架,包含状态、动作、奖励、策略四要素 |
| Q-Learning | Q学习 | 经典的值函数迭代算法,通过查表学习最优动作价值 |
| Policy Network | 策略网络 | 直接输出动作概率分布的神经网络 |
| Value Network | 价值网络 | 估计当前状态价值的神经网络 |
7.9 知识蒸馏 (KD)
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| KD | Knowledge Distillation 知识蒸馏 |
让小模型学习大模型的软标签,实现模型压缩 |
| Teacher | 教师模型 | 庞大复杂的预训练模型,提供软标签指导 |
| Student | 学生模型 | 轻量级小网络,学习教师模型的暗知识 |
| Soft Label | 软标签 | 教师输出的概率分布,包含类别间相似度信息 |
| Hard Label | 硬标签 | 标准答案的One-Hot编码 |
| Temperature | 温度参数 | Softmax中的缩放因子,高温暴露更多暗知识 |
| AT | Attention Transfer 注意力转移 |
对齐教师与学生的注意力热力图 |
7.10 图神经网络 (GNN)
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| GNN | Graph Neural Network 图神经网络 |
处理非欧几里得图数据的神经网络 |
| GCN | Graph Convolutional Network 图卷积网络 |
基于矩阵运算的GNN变种 |
| Message Passing | 消息传递 | GNN核心机制:聚合邻居信息更新节点特征 |
| Aggregate | 聚合 | 将邻居特征融合为综合向量的操作 |
| Node Classification | 节点分类 | 预测图中每个节点的类别 |
| Link Prediction | 边预测 | 预测图中两个节点未来是否会连接 |
7.11 生成对抗网络 (GAN)
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| GAN | Generative Adversarial Network 生成对抗网络 |
生成器与判别器博弈的生成模型 |
| Generator | 生成器 | 将随机噪声转换为假数据的网络 |
| Discriminator | 判别器 | 区分真图与假图的二分类网络 |
| Minimax | 极小极大 | GAN的零和博弈优化目标 |
| Nash Equilibrium | 纳什均衡 | 生成器与判别器达到平衡的状态 |
| Mode Collapse | 模式崩塌 | 生成器只生成少数几类样本的问题 |
| WGAN | Wasserstein GAN | 用推土机距离解决梯度消失的GAN改进版 |
7.12 自编码器 (AE/VAE)
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| AE | Autoencoder 自编码器 |
编码-解码架构,用于降维和特征提取 |
| VAE | Variational Autoencoder 变分自编码器 |
引入概率分布的生成模型 |
| Encoder | 编码器 | 将高维输入压缩成低维潜变量 |
| Decoder | 解码器 | 将潜变量还原成原始输入 |
| Latent Space | 潜空间 | 编码器输出的低维特征空间 |
| Reparameterization Trick | 重参数化技巧 | 使随机采样可导的数学技巧 |
| KL Divergence | KL散度 | 衡量两个概率分布差异的指标 |
7.13 神经网络对比
| 网络 | 别名 | 擅长数据 | 核心机制 | 解决痛点 | 经典应用 |
|---|---|---|---|---|---|
| MLP | 多层感知机 | 结构化表格数据 | 线性组合+非线性激活 | 解决异或问题 | 分类器、最终分类头 |
| CNN | 卷积神经网络 | 2D图像、视频 | 局部感受野+权值共享 | 参数量爆炸、丢失空间信息 | 图像分类、目标检测 |
| RNN/LSTM | 循环神经网络 | 序列数据(文本、语音) | 隐藏状态传递+门控机制 | 长度不固定、时间依赖 | 机器翻译、语音识别 |
| Transformer | 大模型基石 | 超长序列 | 自注意力+QKV矩阵 | 长距离依赖、并行计算 | ChatGPT、BERT、Sora |
| GNN | 图神经网络 | 非欧几里得图数据 | 消息传递机制 | 邻居数量不固定 | 社交反欺诈、新药发现 |
| GAN | 生成对抗网络 | 无监督图像数据 | 零和博弈(Minimax) | 赋予AI创造力 | Deepfake、风格迁移 |
| AE/VAE | (变分)自编码器 | 无监督数据 | 编码压缩+概率分布 | 特征降维、可控生成 | 图像去噪、特征提取 |
面试万能套路:
- 看数据结构:蛋白质折叠用 GNN
- 看时空依赖:自动驾驶视频用 CNN + LSTM 或 Video Transformer
- 看任务目标:隐私数据不足用 GAN/VAE 生成合成数据
7.14 视频生成
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| Sora | - | OpenAI发布的AI视频生成模型,采用DiT架构 |
| DiT | Diffusion Transformer | 将扩散模型与Transformer结合的架构 |
| Temporal Attention | 时间注意力 | 保证视频帧间时间一致性的注意力机制 |
| Spacetime Patches | 时空块 | 将视频切成包含空间和时间信息的Token块 |
| Video Diffusion | 视频扩散模型 | 对多帧同时进行去噪的生成模型 |
| FlashAttention | 闪存注意力 | 优化Transformer注意力计算的高效算法 |
本模块完
模块八:AI Agent(智能体)
如果说大语言模型(LLM)是"超级大脑",那 AI Agent 就是给这个大脑装上四肢、记忆和工具,让它真正具备"执行智能"。
8.1 核心痛点:为什么 ChatGPT 还不够聪明?
大语言模型虽然强大,但有一个致命的物理局限:它们就像是被泡在福尔马林罐子里的"超级大脑"。
| 局限 | 具体表现 |
|---|---|
| 没有四肢 | 算不出今天的实时天气,因为它没有手去联网查 |
| 不会用工具 | 面对复杂数学运算(如 12345×6789012345 \times 6789012345×67890)经常算错,因为它在靠文字接龙"猜"数字,而不是按计算器 |
| 没有长记忆 | 一旦对话框关掉,KV Cache 被清空,它就彻底忘了你是谁 |
如何打破这个局限? 把这个"超级大脑"装进一个拥有记忆、能思考、能使用工具的"虚拟躯体"里。这个全新的复合体,就叫 AI Agent(人工智能体)。
8.2 四大核心支柱
学术界和工业界目前公认,一个真正的 AI Agent 必须具备以下四大模块:
8.2.1 大脑 (Brain) —— LLM
Agent 的核心控制器。就是你笔记里学的 GPT-4、Claude 等大模型。它负责理解你的指令,并进行逻辑推理。
8.2.2 规划 (Planning) —— “谋定而后动”
面对一个复杂任务(比如:“帮我调研一下明天去北京出差的机票,并在日历上安排好行程”),大脑不能直接瞎给答案。它必须学会:
- 任务拆解 (Subgoal Decomposition):把大任务拆成:①查天气 -> ②查航班 -> ③写日历。我们之前聊过的 CoT(思维链) 就是在这里发挥巨大作用。
- 自我反思 (Self-Reflection):如果在查航班时发现机票卖光了,Agent 必须能自己反思报错,并修改计划(“既然没票了,那我换成查高铁票”)。
8.2.3 记忆 (Memory) —— “温故而知新”
- 短期记忆:就是当前的上下文对话历史。
- 长期记忆:利用我们提过的 RAG(检索增强生成) 技术和向量数据库。它能记住你上个月跟它说过"我晕机,尽量不坐飞机",然后在这次规划时自动避开航班。
8.2.4 工具使用 (Tool Use / Action) —— “给大脑装上四肢”
这是 Agent 产生物理化学反应的关键!
大模型被训练出了一种特殊能力:知道在什么情况下该调用什么外部 API。
它可以调用"谷歌搜索API"查实时新闻,调用"Python代码解释器"画数据图表,调用"美团API"帮你点外卖。
8.3 LangChain:Agent的工业化框架
8.3.1 LangChain是什么
LangChain是给大模型穿的"超级外骨骼机甲"。
纯大模型(如GPT-4)是绝顶聪明但被困在小黑屋里的"超级大脑":
- 不能上网查实时新闻
- 没有记忆,记不住十分钟前说过的话
- 没有手脚,无法执行"发邮件、查数据库"等动作
LangChain的作用:把LLM和外部世界连接起来,让大模型从"只会聊天的玩具"变成"能全自动搞定复杂任务的超级员工"。
8.3.2 五大核心模块
| 模块 | 功能 | 解决的问题 |
|---|---|---|
| Model I/O | 统一模型接口 | 换模型像换灯泡,改一行代码就行 |
| Memory | 记忆系统 | 自动打包历史对话,让AI像"老朋友" |
| Retrieval/RAG | 外挂知识库 | 把PDF、Word切成向量,提问时先检索再回答 |
| Chains | 执行链 | 把多步骤无缝串联:搜索→总结→翻译→输出 |
| Agents | 智能代理 | 大模型自己当老板,自己决定用什么工具 |
8.3.3 LangChain vs ReAct的关系
核心结论:LangChain实现了ReAct。
| 维度 | ReAct | LangChain |
|---|---|---|
| 本质 | 智能体方法论/提示词工程(思想) | 大模型应用开发框架(工具代码库) |
| 来源 | 学术论文 | 开源社区 |
| 解决的问题 | 大模型遇到复杂问题不会拆解步骤 | 程序员开发AI应用时重复造轮子 |
| 包含关系 | 被包含:LangChain Agent支持的一种逻辑 | 包含:提供极简API一键召唤ReAct Agent |
LangChain源码里有一个著名函数create_react_agent,调用它时,LangChain在底层自动帮你把Thought -> Action -> Observation的提示词模板塞给大模型,并自动解析输出。
8.3.4 记忆机制的四个段位
核心原理:大模型本身无状态,LangChain每次提问时偷偷把历史记录打包塞进Prompt。
段位一:暴力记仇本(ConversationBufferMemory)
- 原封不动记录所有对话
- 致命缺陷:Token爆炸,聊到后面账单爆表
段位二:鱼的记忆(ConversationBufferWindowMemory)
- 滑动窗口,只保留最近k轮对话
- 场景:客服机器人,只关心眼前问题
段位三:课代表笔记(ConversationSummaryMemory)
- 调用另一个小模型,把长对话总结成50字摘要
- 优势:保住长期记忆,省海量Token
段位四:外挂记忆库(VectorStoreRetrieverMemory)
- 把聊天记录变成向量存进数据库
- 用法:提问时向量化检索,精准召回相关内容
工业界组合拳:SummaryBufferMemory
- 最近3轮原汁原味保留(Buffer)
- 更早的对话压缩成摘要(Summary)
- 平衡"细节还原度"和"Token成本"
8.3.5 高端记忆:结构化情报提取
实体提取(Entity Extraction):
- 不记原话,只填表。你说"下周去北京出差",AI提取
{"目的地": "北京", "时间": "下周"}存进字典。
知识图谱(Knowledge Graph):
- 比字典更高级的"网状记忆"。
- 你昨天说"我给老板买了星巴克",今天说"老板把星巴克给了他的狗Max"。
- 图谱建立:
(你)--[购买]-->(星巴克)--[属于]-->(老板)--[赠送]-->(狗)--[名叫]-->(Max) - 一个月后问"Max喝的是什么",AI能顺着红线推理出"星巴克"!
面试话术:
“LangChain是一个编排大语言模型的框架。它通过统一接口、状态记忆、外部数据检索(RAG)以及能够自主调用工具的Agent机制,把大模型从’静态文本生成器’变成’能处理复杂工作流的智能体应用’。LangChain底层实现了ReAct框架,自动处理Thought-Action-Observation循环,让开发者用几行代码就能构建复杂的AI Agent。”
8.4 多智能体协作 (Multi-Agent)
从"单兵作战"到"开公司"
LangChain和ReAct实现了单个Agent的极致,但复杂工业场景(如开发完整软件系统)需要多个Agent协作。
核心概念:
引入SOP(标准作业程序),让多个不同人设的Agent组成"虚拟公司",在群聊中自动协作、自动迭代。
典型工作流:
用户需求 -> Agent A(产品经理)写PRD
-> Agent B(程序员)写代码
-> Agent C(测试员)跑测试并报错
-> Agent B根据报错修改
-> 循环直到通过
主流框架:
| 框架 | 特点 | 适用场景 |
|---|---|---|
| AutoGen (微软开源) | 灵活的对话编排,支持人机协作 | 复杂任务分解、代码生成 |
| MetaGPT | 严格遵循SOP,角色分工明确 | 软件开发全流程自动化 |
与单Agent的本质区别:
- 单Agent:一人分饰多角,容易"精神分裂"
- Multi-Agent:专业的人做专业的事,通过标准化流程保证质量
8.5 ReAct 框架:最核心的执行逻辑
大厂在面试 Agent 时,极大概率会问你:“Agent 到底是怎么一步步执行复杂任务的?”
标准答案是:ReAct (Reasoning and Acting,协同推理与行动) 框架。
Agent 会陷入一个极其严密的 [思考 -> 行动 -> 观察] 的死循环,直到任务解决:
- Thought (思考):我现在需要知道北京明天的天气。
- Action (行动):调用
Weather_API(location="Beijing", date="tomorrow")。 - Observation (观察):API 返回结果:“北京明天雷阵雨”。
- Thought (思考):既然明天雷阵雨,航班可能会延误。我需要查一下高铁。
- Action (行动):调用
Train_Ticket_API(...)。 - …循环往复,直到得出最终结论。
8.6 终极视野升华(高分话术)
“老师,在我看来,过去几年的大语言模型只是完成了**‘认知智能’的突破,它们像一个博学但被束缚在虚拟世界的顾问。而目前工业界全力押注的 AI Agent(智能体)体系,通过引入外部工具调用(Tool Use)、任务长程规划(Planning)以及外部存储(Memory),真正赋予了大模型’执行智能’**。未来的 AI 将不再是需要人一步步下达 Prompt 的问答机器,而是能够理解人类宏大目标、自主拆解任务并调用数字世界一切 API 去解决问题的虚拟员工。”
8.7 AGI 之路:数据墙与三大破局方向
8.7.1 大模型竞赛只是比拼训练数据吗?
绝对不是。
大版本性能飞跃靠三点硬核突破:
- 数据质量的洗脑级提升:雇佣顶尖博士写高质量推理题,而非吃垃圾数据
- 底层架构的疯狂魔改:从 U-Net 到 DiT,从全连接到 MoE,KV Cache 压缩黑科技
- Scaling Laws(缩放定律):算力 + 优质数据 + 参数量成比例放大,智商线性增长
8.7.2 恐怖的"数据墙"(Data Wall)
人类几千年积累的高质量文本数据,快被大模型吃光了。
据研究机构预测,最迟到 2026-2028 年,互联网上所有高质量语料将被彻底耗尽。
模型崩溃(Model Collapse):如果模型开始吃"其他 AI 生成的低质量水文",就像近亲繁殖,几代之后 AI 会完全丧失逻辑能力,变成胡言乱语的怪物。
8.7.3 通向 AGI 的三大破局之路
既然人类数据快没了,AGI 只能靠喂数据吗?
方向一:合成数据与逻辑验证
让 AI 自己出题、自己做。但必须引入极其严格的验证机制(如代码编译器跑通即正反馈)。有了客观标准,AI 可以左脚踩右脚,无限向上进化。
方向二:强化学习与自我博弈
就像 AlphaGo 击败李世石,前期看人类棋谱,后期自己和自己下了几千万盘棋,在试错中顿悟出神级招数。未来的大模型也会走向这条路:在复杂虚拟环境里通过 RL 自己顿悟世界规律。
方向三:具身智能(Embodied AI)
大模型现在只是"缸中之脑",只懂文本不懂物理。未来的 AGI 必须长出眼睛和手脚(机器人),亲自去物理世界里搬箱子、摔杯子、感受阻力和重力。真实的物理世界有着无穷无尽的"多模态数据"。
8.7.4 一句话总结
过去五年,AI 靠"疯狂吞噬人类文明的数据存量"大力出奇迹。但现在,存量快吃完了。
未来的 AGI,必须从"死记硬背的文科生(依赖海量数据)“,进化成"在客观规律中自我博弈的理科生(依赖强化学习与物理交互)”。
全文完
模块九:复试英语核心词汇
本模块汇总计算机复试中AI方向高频英语词汇,便于口语问答和文献翻译准备。
9.1 机器学习基础
| 英文术语 | 中文释义 |
|---|---|
| Machine Learning | 机器学习 |
| Deep Learning | 深度学习 |
| Neural Network | 神经网络 |
| Training Data | 训练数据 |
| Test Data | 测试数据 |
| Dataset | 数据集 |
| Model | 模型 |
| Algorithm | 算法 |
| Feature | 特征 |
| Label | 标签 |
| Prediction | 预测 |
| Classification | 分类 |
| Regression | 回归 |
| Supervised Learning | 监督学习 |
| Unsupervised Learning | 无监督学习 |
| Reinforcement Learning | 强化学习 |
| Loss Function | 损失函数 |
| Gradient | 梯度 |
| Optimization | 优化 |
| Parameter | 参数 |
| Hyperparameter | 超参数 |
| Accuracy | 准确率 |
| Precision | 精确率 |
| Recall | 召回率 |
| F1-score | F1值 |
| Generalization | 泛化能力 |
| Overfitting | 过拟合 |
| Underfitting | 欠拟合 |
| Regularization | 正则化 |
| Cross Validation | 交叉验证 |
| Feature Extraction | 特征提取 |
| Data Preprocessing | 数据预处理 |
| Learning Rate | 学习率 |
| Batch Size | 批大小 |
| Epoch | 训练轮次 |
9.2 自然语言处理
| 英文术语 | 中文释义 |
|---|---|
| Natural Language Processing | 自然语言处理 |
| Named Entity Recognition | 命名实体识别 |
| Question Answering | 问答 |
| Dialog System | 对话系统 |
| Word Embedding | 词向量 |
| Context | 上下文 |
| Semantic Representation | 语义表示 |
| Corpus | 语料库 |
| Language Understanding | 语言理解 |
| Text Classification | 文本分类 |
| Sequence Modeling | 序列建模 |
| Transformer Model | Transformer模型 |
| Pre-trained Model | 预训练模型 |
| Fine Tuning | 微调 |
9.3 计算机视觉
| 英文术语 | 中文释义 |
|---|---|
| Computer Vision | 计算机视觉 |
| Image Classification | 图像分类 |
| Object Detection | 目标检测 |
| Image Segmentation | 图像分割 |
| Semantic Segmentation | 语义分割 |
| Instance Segmentation | 实例分割 |
| Edge Detection | 边缘检测 |
| Visual Recognition | 视觉识别 |
| Image Processing | 图像处理 |
| Video Analysis | 视频分析 |
| Visual Representation | 视觉表示 |
| Image Captioning | 图像描述 |
| Facial Recognition | 人脸识别 |
| Scene Understanding | 场景理解 |
9.4 强化学习
| 英文术语 | 中文释义 |
|---|---|
| Agent | 智能体 |
| Environment | 环境 |
| Action | 行动 |
| State | 状态 |
| Reward | 奖励 |
| Policy | 策略 |
| Value Function | 价值函数 |
| Q-Learning | Q学习 |
| Deep Reinforcement Learning | 深度强化学习 |
| Policy Gradient | 策略梯度 |
| Optimal Policy | 最优策略 |
| Cumulative Reward | 累计奖励 |
9.5 AI前沿与大模型
| 英文术语 | 中文释义 |
|---|---|
| Large Language Model | 大语言模型 |
| Generative AI | 生成式人工智能 |
| Generative Adversarial Network | 生成对抗网络 |
| Diffusion Model | 扩散模型 |
| Multimodal Learning | 多模态学习 |
| Federated Learning | 联邦学习 |
| Transfer Learning | 迁移学习 |
| Self-Supervised Learning | 自监督学习 |
| Foundation Model | 基础模型 |
| Prompt | 提示词 |
| Prompt Engineering | 提示工程 |
| Alignment | 对齐 |
| Human Feedback | 人类反馈 |
备考建议:
- 优先级:重点记忆9.1、9.2、9.5模块,这些是复试翻译和口语问答的重灾区
- 自测方法:选取每个模块10-15个核心词,用英文简单解释其含义
- 背诵策略:看到中文能说出英文,看到英文能准确翻译
模块九完
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)