范围:AI 学习阶段 A 的数学三条主线——“矩阵=线性变换、梯度=方向导数、交叉熵=信息论”——的知识点展开。面向 20+ 年工程经验读者:不啃证明,每个知识点只回答两个问题——它在深度学习里对应什么 / 后面哪个实验会用到。
结论先行
AI 所需的数学不是数学系的数学,而是三根支柱:
| 主线 | 一句话核心观点 | 服务的具体场景 |
|---|---|---|
| 矩阵 = 线性变换 | 矩阵不是表格,是把空间"搬个位置"的动作 | SVD/PCA 降维、LoRA 低秩分解、向量检索的距离度量 |
| 梯度 = 方向导数 | 梯度是上坡最快的方向,训练 = 沿负梯度走 | 手写反向传播、优化器选择、调训练排查问题 |
| 交叉熵 = 信息论 | 交叉熵 = 用错分布编码数据的额外成本 | 一切损失函数、LLM 采样参数、对比学习损失(ArcFace/CLIP) |
三条线互相独立、可并行穿插。每条线的终点都是一次白板验收(手推/口述),不是"看懂了"。
一、主线 1:矩阵 = 线性变换(线性代数)
核心观点
矩阵乘法不是逐元素算账,而是变换的复合:A·B 表示"先作用 B,再作用 A"。神经网络的每一层线性层就是一个变换,整个网络是一串变换 + 逐点非线性。这个视角下,“网络深”= “变换串得长”,梯度消失/爆炸、残差连接的作用都能在这个框架里讲通。
知识点清单
1.1 向量空间与线性组合
- 向量:空间里的一个箭头;线性组合:若干向量的加权和,"能被组合出来的所有点"张成一个子空间
- 基向量:描述子空间所需的"最少数量的独立方向"
- AI 对应:一个词/图片/人脸的 embedding 就是一个高维向量;“相似”= 位置接近
1.2 矩阵乘法 = 变换的复合
- 乘向量:把空间整体变形(旋转/拉伸/镜像/投影)
- 乘矩阵:两个变形排队执行,顺序敏感(AB ≠ BA),对应层序不可随意交换
- AI 对应:全连接层 y = Wx + b 就是"线性变换 + 平移";Transformer 的 Q/K/V 投影是三次独立线性变换
1.3 列空间、零空间与秩
- 列空间:变换后所有可能落点构成的空间;零空间:被压成零的向量集合
- 秩:变换后空间的"有效维度"。秩 < 原维度 = 信息有损压缩
- AI 对应:embedding 降维"信息没丢"的判据就是秩;人脸 512 维向量、RAG 向量入库"维度为什么可以砍"靠这个判断
- 自测:一个 m×n 矩阵秩为 r,输出空间是多少维?哪些信息必然丢了?
1.4 特征值/特征向量与 SVD(本主线重点)
- 特征向量:变换后方向不变的向量;特征值是它被拉伸的倍数
- SVD:任何矩阵 A = UΣVᵀ,几何意义 = “旋转 → 沿轴拉伸 → 旋转”。前 k 个奇异值保留 99% 能量 = 最优低维近似
- AI 对应(两处直接落地):
- PCA:对数据协方差矩阵做特征分解(SVD 的特例)做降维——W2 人脸评测集的特征分布分析、白化预处理
- LoRA 低秩分解:权重更新 ΔW 假设"变化只发生在低秩子空间里"(ΔW = BA,rank ≪ d),这就是 LoRA 为什么省显存、为什么 rank 是超参——阶段 E 微调的理论地基,"rank 怎么选"从这一节直接推导
- 自测:口述 SVD 三步几何含义;解释为什么"微调只需学习低秩增量"
1.5 矩阵求导与 Jacobian
- 标量对向量求导 → 梯度向量;向量对向量求导 →Jacobian 矩阵(每个输出对每个输入的偏导排成表)
- 链式法则的多变量版:复合函数的 Jacobian = 各层 Jacobian 连乘
- AI 对应:反向传播 = Jacobian 连乘的工程化。连乘中每层范数 < 1 梯度消失,> 1 梯度爆炸——残差连接(加恒等项)与权重初始化(控制每层范数≈1)分别堵这两个洞
1.6 范数与距离度量
- L2 范数 = 向量长度;欧氏距离 = 差向量的 L2 范数
- 余弦相似度= 归一化后的内积,只看方向不看模长
- AI 对应:向量检索(RAG/人脸 1:N)默认"相似"的度量;人脸识别里余弦相似度 + 阈值就是 1:1/1:N 判断的全部数学
- 自测:什么时候该用余弦而不是欧氏(模长受光照/质量影响时)
验收标准(白板)
- 口述矩阵乘法 = 变换复合,举一个网络层序的例子
- 写出 SVD 分解形式并解释每个因子
- 用秩解释"embedding 为什么能降维且不丢关键信息"
- 用距离度量解释人脸 1:1 阈值逻辑
二、主线 2:梯度 = 方向导数(微积分与优化)
核心观点
可微函数在任何一点的梯度方向 = 函数值上升最快的方向,梯度大小 = 那个方向上的陡度。训练神经网络 = 从参数空间的某点出发,反复"往梯度反方向迈一小步"。一切优化器、一切训练技巧,都是对"迈多大、往哪迈、要不要带惯性"这个问题的变体。
知识点清单
2.1 导数 → 偏导 → 方向导数 → 梯度(逐层升级)
- 导数:一元函数在某点的瞬时变化率(切线斜率)
- 偏导:多元函数沿某一坐标轴的变化率
- 方向导数:沿任意方向u 的变化率 = 梯度 · u(点积)
- 梯度:把所有方向导数"打包"成一个向量。点积的性质决定了它与 u 同向时方向导数最大 → 梯度就是最陡方向
- AI 对应:损失函数 L(θ) 的参数空间可能有上亿维,"梯度"是导航仪
- 自测:为什么说"梯度与任意方向的正交投影 = 该方向的方向导数"?
2.2 链式法则(反向传播的唯一数学工具)
- 一元:(f∘g)′ = f′(g(x))·g′(x)
- 网络版:L 对某参数 = 从输出层往回逐层乘偏导(= 主线 1 的 Jacobian 连乘)
- 前向算激活、反向算梯度:两遍扫描,中间量都要存下来(这就是激活显存开销的来源,推理时 KV Cache 是同一逻辑的序列版)
- 自测(本计划阶段 A 总验收):白板手推一个 2 层 MLP(1-2-1 结构,ReLU/线性激活自选)的完整反向传播
2.3 凸性与局部最优(认知级)
- 凸函数:任意两点连线在函数上方,局部最优 = 全局最优,梯度下降必达底
- 神经网络的损失面非凸:存在鞍点与局部极小,但高维空间里大盆地现象让 SGD 实际找到的解质量不差
- 认知意义:知道"没有全局最优保证"就不会迷信单次训练的分数,重复训练/多种子对比是常态
2.4 优化器家族(只记"每个修了什么缺陷")
| 优化器 | 加了什么 | 修了什么缺陷 |
|---|---|---|
| SGD | 无 | 基准:噪声大反而帮助跳出尖窄局部极小 |
| Momentum | 速度缓存(梯度指数滑动平均) | 修振荡:窄谷地形来回弹 |
| AdaGrad/RMSProp | 按参数历史梯度平方缩放步长 | 修稀疏/量纲:大梯度参数自动减速 |
| Adam | 一阶矩(方向)+ 二阶矩(幅度) | 两者都修,通用默认 |
| AdamW | Adam + 解耦权重衰减 | 修 Adam 里 L2 正则被自适应步长扭曲的问题 |
- 自测:不查资料说出 momentum 修什么、Adam 修什么、训练发散第一步查什么(学习率/初始化/梯度爆炸)
2.5 学习率与调度
- 太小 = 走得慢且容易卡在平坦区边缘;太大 = 在谷底来回飞甚至发散
- 调度器逻辑:warmup(大 batch 初期梯度不稳先小步试探)→ 衰减/余弦(接近盆地底部小步精修)
- AI 对应:微调阶段(LoRA)学习率必须比从头训练小一个量级(1e-5 级 vs 1e-3 级)——因为权重已接近好解,大步会踩坏
2.6 梯度消失/爆炸与工程对策(排查思维框架)
| 症状 | 原因 | 对策 |
|---|---|---|
| 深层梯度≈0 | 连乘每层范数<1、饱和激活(sigmoid 两端) | ReLU 族、残差连接、BatchNorm、合理初始化 |
| 梯度爆炸/NaN | 连乘范数>1、损失尖峰 | 梯度裁剪(clip)、检查数据、降学习率 |
| 调参排查顺序 | — | 学习率 → 初始化 → 激活/归一化 → 数据 |
验收标准(白板)
- 手推 2 层网络反向传播(含一次逐点非线性)
- 说清 BatchNorm 前向/反向各做了什么(前向:归一化 + 仿射;反向:归一化的逆运算链)
- 解释 Adam 为什么通常收敛快(每参数自适应步长 → 各维度同时接近各自最优步长)
- 给出一次真实训练发分的 3 步排查清单
三、主线 3:交叉熵 = 信息论(概率、损失与对齐)
核心观点
信息论把"信息"量化成比特:越罕见的事件携带的信息越多(-log p)。交叉熵 = “用模型分布 p 去编码真实分布 q 的数据,平均每个事件花多少比特”。训练分类/生成模型就是不断压缩这个浪费,让 p 逼近 q。这一个视角统一了:损失函数为什么长这样、温度采样为什么有效、LLM 的 perplexity 是什么、对比学习损失为什么是那个形式。
知识点清单
3.1 熵、交叉熵、KL 散度(三者关系是本节核心)
- 熵 H(q)= -Σq·log q:真实分布 q 的最优编码长度(不可约的下限)
- 交叉熵 H(q, p)= -Σq·log p:用 p 设计的码本编码 q 数据的实际长度
- KL(p‖q)= H(q,p) - H(q) = Σp·log(p/q):用错分布的额外浪费,恒 ≥ 0,当且仅当两分布相同取 0
- 训练等价链(必背):最小化交叉熵 = 最小化 KL 散度(H(q) 是常数)= 最大化对数似然(MLE)。"损失函数为什么是那个负 log"到这里彻底讲通
- 自测:口述上述等价链,并说明为什么 H(q) 可以不进梯度
3.2 Softmax + 交叉熵:分类任务的标配组合
- Softmax:logits → 概率分布(指数化保证非负归一;先减最大值再指数 = 数值稳定,手写代码必做的一步)
- 组合后损失= -log p(正确类):模型对正确类给的概率越低惩罚越重(对数放大错误)
- 二者梯度合起来极干净(p - one_hot(y)),这是"标配"的工程原因
- AI 对应:手写 MLP 分类、截图分类微调(阶段 E 实验场景)的损失函数就是它
3.3 温度采样:LLM 参数的理论落点
- 温度 T:logits 除以 T 再 softmax。T→0 分布锐化(趋向 argmax,确定性强);T→1 原分布;T>1 抹平(更随机)
- top_p(nucleus):按概率降序累加到 p 的最小候选集——动态截断长尾,T 管"多平"、top_p 管"多短"
- AI 对应:阶段 B 采样参数实验的理论依据;结构化输出/JSON 场景为什么要把 T 压低(长尾 token 破坏语法)
- 自测:为什么 T 大时 top_p 需要相应收紧?
3.4 从交叉熵到大语言模型:CE 与 Perplexity
- LLM 预训练目标= 逐 token 平均交叉熵:p(整句) = Π p(token_t | 前文),负对数求和 = Σ 每步交叉熵
- Perplexity = exp(平均 CE):直观读法是"模型平均在多少个等概率候选之间困惑",PPL 越低越好——读技术报告、对比模型/量化版本好坏的基本语言(阶段 B 实测报告里 Q4 vs FP8 的精度损失就报 PPL)
- 困惑度不敏感的局限:PPL 相近的两个模型下游能力可能差很远,所以 PPL 只做粗筛,细看要用阶段 C 的评测集
- 自测:从 p(整句)=Π p(t_t|t_<t) 推出"负对数似然 = Σ 交叉熵"
3.5 交叉熵的对比学习变体:InfoNCE(打通工作线 W2/W4)
- 问题形式:给一个锚点 + 1 个正样本 + k 个负样本,损失 = 锚点对正样本的交叉熵(把"找正样本"当成 (k+1) 分类)
- InfoNCE= 对比学习的标准损失,是 CLIP 系多模态嵌入的训练目标:图文匹配对 = 正样本,同批其他对 = 负样本(W4 跨模态检索嵌入的理论来源)
- ArcFace(W2 人脸识别):在特征空间的"类间角裕量"上做交叉熵分类,等价于"识别=在单位超球面上做多类分类,损失里给正确类角度加一个 margin"——学完 3.2 的 softmax 分类,ArcFace 的论文公式一屏就能读懂
- 温度在对比学习里的角色:CLIP/InfoNCE 里的 τ 与 3.3 的温度同源,控制负样本惩罚的锐度
- 自测:说清"CLIP 训练 = 双向 InfoNCE",以及为什么负样本越多嵌入空间越干净(但假负样本是主要坑)
验收标准(白板)
- 写出 熵/交叉熵/KL 三个公式并证明记忆链 H(q,p) = H(q) + KL
- 解释 softmax 减最大值的数值稳定逻辑(指数上溢)
- 从生成概率乘积推出 LLM 损失 = 逐 token 交叉熵和,PPL = exp(CE)
- 口述 InfoNCE → CLIP → ArcFace 的继承关系
四、三条主线的交汇点(为什么是这三条)
- 前向 = 主线 1:网络前向传播就是矩阵变换的复合 + 逐点非线性
- 反向 = 主线 1 × 主线 2:Jacobian 连乘(1.5)× 链式法则(2.2),反向传播是这两条线的乘积
- 损失 = 主线 3:训练优化的目标函数来自信息论(3.1),优化过程是主线 2 在损失面上的行走
- 工程闭环:三条线学完,"设计网络(1)→ 训练它(2)→ 定义什么叫训好了(3)"的完整闭环里不再有黑箱
与后续阶段的依赖表
| 后续场景 | 依赖知识点 |
|---|---|
| 阶段 A 手写 NN / 反向传播 | 1.5、2.1、2.2、3.2 |
| 阶段 B 量化精度对比(PPL) | 3.4 |
| 阶段 B 采样参数实验 | 3.3 |
| 阶段 C 向量检索/相似度 | 1.6、1.3 |
| 阶段 E LoRA rank 选择 | 1.4、2.4 |
| 阶段 E 微调学习率 | 2.5 |
| W1 声纹 EER / W2 人脸阈值 | 1.6、3.5 |
| W4 多模态嵌入(SigLIP2/CLIP 系) | 3.5、1.6 |
学习节奏建议(穿插进行,不占独立课时)
- 第 1–2 周:主线 1 全部(配合 3B1B 线代系列,约 5 集核心 + 3 集 SVD/特征值)
- 第 3–4 周:主线 2 全部(配合 3B1B 神经网络系列;手写 NN 实验同步做)
- 第 5–8 周:主线 3 全部(配合 MNIST/CIFAR 训练实验,边调温度/看 loss 边理解)
- 每周一次白板自测(15 分钟,按各节"自测"条目抽 2–3 题,答不上 = 该节回炉)