模块五:计算机视觉 (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]   →     (取最大值)

作用

  1. 降维:2×2 池化 → 数据量变为 1/4
  2. 提炼特征:只保留最强烈的信号
  3. 增强容错:目标稍微偏移一点,最大值可能还在

类比:就像看缩略图,虽然细节丢了,但主要轮廓还在。


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 为什么叫"只看一次"?

以前的笨办法(两阶段检测器)

  1. 先在图上盲目圈出2000个"可能包含物体"的候选框
  2. 把这2000个框一个个切下来,送进CNN分类
  3. 结果:极其缓慢,无法做到视频级实时检测

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执行逻辑(大逃杀法则)

  1. 排座次:把所有预测"猫"的框,按置信度从高到低排序
  2. 选状元:采纳置信度最高的框(如98%),它是绝对赢家
  3. 大屠杀:拿"状元框"去和其他框比对。如果重合度(IoU)大于阈值(如0.5),说明框的是同一只猫,直接删除这些低分框
  4. 循环:在剩下的框里再找第二高的,重复上述动作

结果:一车一框,一狗一框,干净利落。


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.01log(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.3log(0.1)2.3

后果:1000 的"简单背景误差"像雪崩一样淹没了小鸟的 2.3。模型变成"只会认背景的废物"。

Focal Loss 的核心哲学(何恺明,2017):
“欺软怕硬,劫富济贫”——加一个权重调节阀:

  • 简单样本(p→1p \to 1p1):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(1pt)γlog(pt)

核心参数 γ\gammaγ(通常设为 2)

  • 简单样本pt=0.9p_t = 0.9pt=0.9):(1−0.9)2=0.01(1 - 0.9)^2 = 0.01(10.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(10.1)2=0.81,Loss 全额保留

辅助参数 α\alphaα:给正类乘 0.75,负类乘 0.25,在物理基数上再倾斜。

面试高分话术

“Focal Loss 在交叉熵前增加 (1−p)γ(1-p)^\gamma(1p)γ 调制系数。当样本容易分类时,调制系数趋近于 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(k1)})

第三步:更新自我状态 (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)=σ(WCONCAT(hA(k1),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 101,越接近 1 越真
  • 目标:给真图打高分,给假图打低分

5.6.2 Minimax 损失函数

两个网络目标完全相反,形成零和博弈

min⁡Gmax⁡DV(D,G)=E[log⁡D(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(1D(G(z)))]

判别器 D 的目标(最大化)

  • 真图 D(x)→1D(x) \to 1D(x)1log⁡(1)=0\log(1) = 0log(1)=0(最大)
  • 假图 D(G(z))→0D(G(z)) \to 0D(G(z))0log⁡(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 01D(G(z))0log⁡(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 视频模型(戴着脚镣跳舞)

物理过程

  1. 输入:30 张纯随机马赛克图(代表 1 秒视频),组成 3D 马赛克方块
  2. 架构:在 2D U-Net 中强行插入时间注意力层 (Temporal Attention)
  3. 机制:第 2 帧去噪时,必须同时参考第 1 帧和第 3 帧的特征
  4. 结果: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 秒一镜到底
物理理解 局部时间关联 全局时空推理

关键底气

  1. 极致压缩:时空豆腐块比像素小几十倍
  2. 硬件红利: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的革命

  1. 砍掉全连接层:网络最后几层全换成卷积层,输出的是一张小而深邃的"特征缩略图"
  2. 上采样 (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)逐字处理:

  1. t=1t=1t=1(输入"我"):接收 x1x_1x1("我"的向量),结合初始记忆 h0h_0h0,计算当前记忆 h1h_1h1
  2. t=2t=2t=2(输入"爱"):接收 x2x_2x2(“爱”)和上一时刻记忆 h1h_1h1(包含"我"的信息),计算 h2h_2h2
  3. 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(Whhht1+Wxhxt+b)

公式解读

  • hth_tht:当前时刻的隐藏状态(记忆)
  • ht−1h_{t-1}ht1:上一时刻的隐藏状态(过去记忆)
  • 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 h1ht=Whh×Whh××Whh=Whht

公式解读

  • 梯度 = 权重矩阵的 ttt 次幂
  • 如果 WhhW_{hh}Whh 的特征值 <1< 1<10.9100≈0.000020.9^{100} \approx 0.000020.91000.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}ht1 和当前输入 xtx_txt

它输出一个0到1之间的数字(通过Sigmoid函数):

  • 输出接近0:表示"彻底忘掉这部分旧记忆"
  • 输出接近1:表示"全部保留这部分旧记忆"

举例:前文提到"男主角",现在输入变成了"女主角",遗忘门就会输出接近0,把关于"男"的记忆清空。


2. 输入门:决定写入什么新记忆

输入门也看 ht−1h_{t-1}ht1xtx_txt,分两步工作:

  • 第一步:决定哪些新信息值得记录(输出0-1的权重)
  • 第二步:生成新内容的候选值(通过tanh函数,输出-1到1)

举例:读到"苹果"这个词,输入门会结合前文判断:

  • 如果前文是"吃",就记录"水果"相关的特征
  • 如果前文是"买"和"手机",就记录"公司/品牌"相关的特征

3. 细胞状态更新:长期记忆的"高速公路"

这是LSTM最核心的设计。细胞状态的更新公式是:

新记忆 = 保留的旧记忆 + 添加的新记忆

为什么能解决梯度消失?

RNN的问题在于:反向传播时要连续乘以权重矩阵,梯度会指数级衰减。

LSTM的细胞状态更新使用了加法

  • 在微积分中,加法的导数是1
  • 误差沿着细胞状态传播时,不需要连乘权重矩阵
  • 梯度可以以接近1的比例无损倒流,轻松传播100步甚至上千步

4. 输出门:决定当前展现什么

输出门看 ht−1h_{t-1}ht1xtx_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) 核心内容 我肚子里装的实际信息

相亲大会过程(以"他抢劫了那个银行"为例)

  1. 亮出身份:每个词自动生成Q、K、V
  2. 发射查询:"bank"感觉自己是多义词,广播Q:“谁能提供金融或水流线索?”
  3. 匹配成功:"抢劫"的K散发着"犯罪、金钱"气息,与bank的Q匹配度极高
  4. 吸收价值:bank大量吸收robbed的V(核心内容)
  5. 脱胎换骨: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 词嵌入机制:字怎么知道自己什么意思

疑问:这个字怎么知道自己有什么意思?

答案:出厂自带简历(词嵌入矩阵)

  1. 静态词典:模型在内存里建一个巨大表格(10万行×4096列),每行代表一个词的向量
  2. 死记硬背:经过海量文本训练,"苹果"的4096个数字被调整成综合所有潜在含义的静态混合向量
  3. 入场与变形
    • 先查表拿到"初始简历"(静态向量)
    • 再通过自注意力机制,根据周围词决定"现在"是什么意思

总结:它本来就知道自己"可能"是什么意思(查表),然后通过自注意力决定自己"现在"是什么意思。


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)

  1. 分词器切块:你输入的"请给我介绍一下Transformer。"被分词器切碎成Token序列:[请, 你, 给, 我, 介绍, 一下, Transformer, 。]
  2. 查静态字典:这8个Token拿着自己的编号,去模型出厂自带的"静态词表矩阵"里查表,每个人领到一份初始简历(4096维向量)
  3. 分发座位号:模型给"请"发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(句号"。」")输出的那个终极向量——因为经过自注意力传递,这个句号的向量肚子里已经吸收了前面所有词的上下文。

  1. 降维打击:句号的4096维终极向量,去乘以模型出厂自带的输出词表矩阵,算出词典里10万个词的Logits得分
  2. 法官裁决:Softmax把得分变成概率。"好"的概率70%,"没"的概率20%,"滚"的概率0.0001%
  3. 轮盘赌抽签:根据Temperature参数,模型在大概率词汇中掷骰子,选中了**“好”**字!

此时,你的屏幕上终于蹦出了大模型的第一个回复:“好”。

阶段四:自回归死循环(Autoregressive Loop)

  1. 衔尾蛇吞噬:刚刚生成的"好"字被模型抓取,拼接到你原本的提问后面
  2. 新的输入:现在的总输入变成9个Token:[请, 你, 给, 我, 介绍, 一下, Transformer, 。, 好]
  3. 再走一遭:这9个词再次走一遍查字典、发座位号、96层QKV和FFN提纯
  4. 再次预测:拿着最后一个"好"字的终极向量,打分、算概率、掷骰子。这次抽中了**“的”**字
  5. 不断循环:屏幕上出现"好的"。然后新输入变成[...好, 的],继续预测下一个词可能是[,]

就这样,大模型像不知疲倦的打字机,一圈一圈循环。直到某一次掷骰子抽中了特殊的**<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%,截断! 只有"苹果"和"香蕉"有资格参与,第三名直接踢出局。


完整输出闭环

  1. 第96层吐出4096维终极上下文向量
  2. 乘以词表矩阵,变成10万个词的Logits打分
  3. 根据Temperature调整分数锐度
  4. Softmax变成10万个0-1之间的概率值
  5. Top-K和Top-P把离谱词汇从轮盘上抹掉
  6. 在剩下的靠谱词汇中,按概率进行"轮盘赌抽签"
  7. 把选出来的字拼接到原输入,重新走一遍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个词的**KKKVVV**打包,塞进显卡内存(VRAM)的专属VIP缓存区。

2. 吐出第一个新词

要预测下一个词时,模型不再把那1000个字重新输进去!它只把刚刚新生成的这一个字扔进96层网络。

3. 开挂的相亲大会(Decoding解码阶段)

这个孤独的新字,一路绿灯走到自注意力会议室。它生成了自己的QQQ(诉求)。

按照规矩,它需要全场所有人的KKKVVV来开会。这时候,会议室的抽屉(KV Cache)打开了!里面整整齐齐码放着前面1000个词的KKKVVV

新字的QQQ,直接拿着扫描仪去扫缓存里的KKK,然后提取缓存里的VVV

零等待!零重复计算!

算完之后,新字顺手把自己的KKKVVV也塞进缓存抽屉,供下个词使用。


架构师的代价:内存墙(Memory Wall)

KV Cache让大模型吐字速度从"便秘"变成"拉肚子",实现了O(1)O(1)O(1)级别的极速计算——不管前面文本多长,每次只需计算当前这一个词的代价

但代价是极其恐怖的显存消耗

为了存下这些KKKVVV,显卡需要付出惨痛代价。假设一个130亿参数的模型(如Llama-13B),哪怕只有一个用户,如果上下文达到8000字,光是存KV Cache就会吃掉好几个G的显存!

这就解释了工业界的两个未解之谜

  1. 为什么ChatGPT经常限制"历史对话长度"?因为对话太长,服务器的显存抽屉就被KV Cache撑爆了!
  2. 为什么大厂要疯狂堆卡?因为一块顶配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)**改造成了"思考机器"。

关键机制

  1. 自动触发 <think> 标签:当输入复杂问题时,模型在后台自动生成 <think> 隐藏字符,进入草稿纸模式
  2. 自我推演:在 <think>...</think> 区间内,模型自己跟自己对话、试错、推翻重来
  3. 输出答案:直到内部推演完成,才输出 </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)”

工作流程

  1. 当一个词进来时,先经过 Router
  2. Router 给这个词算分数,判断它属于什么领域
  3. 如果这个词是 def(写代码),Router 说:“代码问题,分配给 2号专家和 5号专家处理!”
  4. 结果:其他 6 个专家继续"睡大觉",完全不消耗算力

核心优势

  • 模型可以做得无限大(总参数量极大,知识储备极多)
  • 推理时只唤醒一小部分参数(激活参数量小,运行速度极快)
  • 这就是 DeepSeek 等模型又聪明又便宜的根本原因

6.4.3 Router 的数学原理

Router 本质上是一个小型的线性层 + Softmax

G(x)=Softmax(Wg⋅x)G(x) = \text{Softmax}(W_g \cdot x)G(x)=Softmax(Wgx)

  • 输入:当前词的向量 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_1Q1K1K_1K1V1V_1V1
  • 2 号侦探(负责查情感)有自己的 Q2Q_2Q2K2K_2K2V2V_2V2
  • 8 个侦探,每个人都有一套完全独立的 KKKVVV

致命痛点(KV Cache 爆炸)
当要把历史上下文存进显存时,必须同时存下 8 份不同的 KKKVVV!如果上下文有一万字,这 8 份数据的体积会极其庞大,直接导致服务器 Out of Memory。

6.5.2 极端的暴力压缩:多查询注意力 (MQA)

为了省显存,Google 在 2019 年提出了 MQA (Multi-Query Attention)

物理设定:依然是 8 个侦探(保持 8 个不同的 QQQ 不变)。
抠门操作强行没收他们独立的笔记本!全场 8 个侦探,必须共享唯一的一套 KKKVVV

结果

  • 算力与显存狂欢:只有 1 份 KKKVVV 需要存入 KV Cache,显存消耗瞬间暴降至原来的 1/8
  • 副作用:智商下降。负责语法的侦探和负责情感的侦探被迫看同一份简报,模型丧失了多维度细节,回答问题变得"死板"

6.5.3 工业界的完美中庸:分组查询注意力 (GQA)

既要 MQA 的极速省显存,又要 MHA 的高智商,怎么办?

目前统治大模型圈(LLaMA 3、DeepSeek、Mistral 等)的绝对霸主——GQA (Grouped-Query Attention)

物理设定:完美的"部门制"管理法。
中庸操作

  • 把 8 个侦探分成 2 个小组(每组 4 人)
  • 组内共享,组间独立:第 1 组共享 K1K_1K1V1V_1V1;第 2 组共享 K2K_2K2V2V_2V2

结果

  • 显存消耗:只需存 2 份 KKKVVV,显存占用降到 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)

  1. 实体抽取 (NER):让大模型通读文本,把"人名、地名、公司名、事件"全部抽出来,变成图谱上的节点 (Nodes)
  2. 关系抽取 (Relation Extraction):让大模型搞清楚节点之间的关系,连上边 (Edges)。如:(张三) --[被刺杀于]--> (长安街) <--[案发地]-- (李四)
  3. 社区总结 (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):

  1. FFT 的做法:用橡皮擦掉不合适的内容,重新写。一旦搞砸,字典就废了(灾难性遗忘)
  2. LoRA 的做法绝对不允许在字典上乱涂乱画(彻底冻结 W0W_0W0)! 而是买一本极其轻薄的 10 页便利贴(旁路矩阵 AAABBB,把新知识全部写在便利贴上
  3. 推理时:同时查阅"厚字典"和"便利贴",结果相加 (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 合并的数学原理

核心问题:便利贴怎么和字典合并?

矩阵乘法的奇迹

  • 矩阵 AAA10000×810000 \times 810000×8(8万参数)
  • 矩阵 BBB8×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:

  1. 推理零延迟:合并后参数量没变,速度不变
  2. 神级热插拔:基座模型 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(奖励模型)—— 培养自动阅卷机

既然让人类写答案太慢,那让人类做**“排序题”**就快得多:

  1. 给 SFT 后的模型输入一个问题
  2. 让模型一次性生成 4 个不同回答(A, B, C, D)
  3. 人类标注员按好坏排序:B > D > A > C
  4. 训练 Reward Model (RM):一个全新的较小模型,学会人类的品味

结果:RM 变成超级阅卷机,能给任意回答打分(8.5 分或 -10 分),打分标准与人类价值观对齐

第三步:PPO 强化学习 —— 疯狂刷分之旅

现在有了"考生(大模型)“和"阅卷机(RM)”,让机器自己卷自己:

  1. 从题库抽问题:“怎么造炸弹?”
  2. 大模型生成回答
  3. RM 瞬间评分:写炸弹配方 → -100 分;拒绝回答 → +10 分
  4. 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(ywx)πθ(ywx)βlogπref(ylx)πθ(ylx))

公式解读

  • 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
  • 特征彻底死亡

解决方案

  1. 每128个参数分一组 (Group)
  2. 找出组内最大值的缩放因子 (Scale Factor),用16位高精度保存
  3. 组内参数压缩成4位整数
  4. 还原公式:真实权重 = 4位整数 ×\times× 缩放因子

效果:完美解决大小数字跨度失真问题。


6.9.5 反量化发生在哪里?

关键洞察:INT4 无法直接运算,必须反量化回 FP16。

物理流程

  1. 显存 (VRAM):模型以 INT4 压缩格式存储,只占 4GB
  2. 搬运:需要计算时,INT4 小块数据高速搬运到计算核心
  3. 计算核心 (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 (变分)自编码器 无监督数据 编码压缩+概率分布 特征降维、可控生成 图像去噪、特征提取

面试万能套路

  1. 看数据结构:蛋白质折叠用 GNN
  2. 看时空依赖:自动驾驶视频用 CNN + LSTM 或 Video Transformer
  3. 看任务目标:隐私数据不足用 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 会陷入一个极其严密的 [思考 -> 行动 -> 观察] 的死循环,直到任务解决:

  1. Thought (思考):我现在需要知道北京明天的天气。
  2. Action (行动):调用 Weather_API(location="Beijing", date="tomorrow")
  3. Observation (观察):API 返回结果:“北京明天雷阵雨”。
  4. Thought (思考):既然明天雷阵雨,航班可能会延误。我需要查一下高铁。
  5. Action (行动):调用 Train_Ticket_API(...)
  6. …循环往复,直到得出最终结论。

8.6 终极视野升华(高分话术)

“老师,在我看来,过去几年的大语言模型只是完成了**‘认知智能’的突破,它们像一个博学但被束缚在虚拟世界的顾问。而目前工业界全力押注的 AI Agent(智能体)体系,通过引入外部工具调用(Tool Use)、任务长程规划(Planning)以及外部存储(Memory),真正赋予了大模型’执行智能’**。未来的 AI 将不再是需要人一步步下达 Prompt 的问答机器,而是能够理解人类宏大目标、自主拆解任务并调用数字世界一切 API 去解决问题的虚拟员工。”


8.7 AGI 之路:数据墙与三大破局方向

8.7.1 大模型竞赛只是比拼训练数据吗?

绝对不是。

大版本性能飞跃靠三点硬核突破:

  1. 数据质量的洗脑级提升:雇佣顶尖博士写高质量推理题,而非吃垃圾数据
  2. 底层架构的疯狂魔改:从 U-Net 到 DiT,从全连接到 MoE,KV Cache 压缩黑科技
  3. 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 人类反馈

备考建议

  1. 优先级:重点记忆9.1、9.2、9.5模块,这些是复试翻译和口语问答的重灾区
  2. 自测方法:选取每个模块10-15个核心词,用英文简单解释其含义
  3. 背诵策略:看到中文能说出英文,看到英文能准确翻译

模块九完

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐