覆盖概率、线性代数、微积分、信息论、MLE / MAP、常见分布。双语标注:中文为主要语言,英文术语用括号标注。
适用场景:ML/DL 面试复习、课程笔记速查、技术博客参考。
Part 1: 概念与公式推导 / Concepts & Formula Derivations
1.1 概率基础 / Probability Fundamentals
条件概率 (Conditional Probability)、联合概率 (Joint)、边缘概率 (Marginal) 的基本关系:
P(A,B)=P(A∣B)P(B)=P(B∣A)P(A)
P(A)=B∑P(A,B)(边缘化 / Marginalization)
贝叶斯定理 (Bayes' Theorem):
P(A∣B)=P(B)P(B∣A)P(A)
后验 (posterior) ∝ 似然 (likelihood) × 先验 (prior)。
链式法则 (Chain Rule of Probability):
P(X1,X2,…,Xn)=i=1∏nP(Xi∣X1,…,Xi−1)
条件独立 (Conditional Independence):A⊥B∣C 表示在给定 C 时,A 与 B 独立,即 P(A,B∣C)=P(A∣C)⋅P(B∣C)。
1.2 期望、方差与协方差 / Expectation, Variance, Covariance
| 性质 |
公式 |
| 线性 |
E[aX+b]=aE[X]+b |
| 方差定义 |
Var(X)=E[X2]−(E[X])2 |
| 缩放 |
Var(aX+b)=a2Var(X) |
| 和的方差 |
Var(X+Y)=Var(X)+Var(Y)+2Cov(X,Y) |
| 协方差 |
Cov(X,Y)=E[XY]−E[X]E[Y] |
协方差矩阵 (Covariance Matrix) Σ:对角元素 Σii=Var(Xi);矩阵总是半正定 (PSD) 的,因为 ∀w:w⊤Σw=Var(w⊤X)≥0。
1.3 常见概率分布 / Common Distributions
| 分布 |
参数 |
均值 |
方差 |
典型应用 |
| 伯努利 Bernoulli |
p |
p |
p(1−p) |
二分类标签 |
| 二项 Binomial |
n,p |
np |
np(1−p) |
n 次独立实验成功次数 |
| 泊松 Poisson |
λ |
λ |
λ |
稀有事件计数 |
| 均匀 Uniform |
[a,b] |
2a+b |
12(b−a)2 |
参数初始化 |
| 高斯 Gaussian |
μ,σ2 |
μ |
σ2 |
噪声模型、权重先验 |
| 指数 Exponential |
λ |
1/λ |
1/λ2 |
等待时间建模 |
多元高斯 PDF (Multivariate Gaussian):
N(x∣μ,Σ)=(2π)d/2∣Σ∣1/21exp(−21(x−μ)⊤Σ−1(x−μ))
经验法则 (68-95-99.7):对于 N(μ,σ2),约 68% 数据落在 μ±1σ,95% 在 μ±2σ,99.7% 在 μ±3σ。
1.4 中心极限定理 / Central Limit Theorem (CLT)
设 X1,…,Xn i.i.d.,均值 μ,方差 σ2,当 n→∞:
σ/nXˉn−μdN(0,1)
ML 联系:Mini-batch SGD 中,batch 梯度是总体梯度的无偏估计,其方差 ∝1/B(B 为 batch size)。SGD 噪声在非凸优化中有隐式正则化 (implicit regularization) 效果,帮助逃离尖锐极小值 (sharp minima)。
1.5 MLE 与 MAP / Maximum Likelihood & Maximum A Posteriori
MLE(最大似然估计):
θ^MLE=argθmaxi=1∑NlogP(xi∣θ)
纯数据驱动,无先验信息。
MAP(最大后验估计):
θ^MAP=argθmax[i∑logP(xi∣θ)+logP(θ)]
正则化等价关系:
| 先验分布 |
对应正则化 |
| 高斯先验 P(θ)∝e−λ∥θ∥2 |
L2 正则化 (Weight Decay) |
| 拉普拉斯先验 P(θ)∝e−λ∥θ∥1 |
L1 正则化 (Lasso) |
1.6 偏差-方差分解 / Bias-Variance Decomposition
E[(f^(x)−f∗(x))2]=Bias2(E[f^(x)]−f∗(x))2+VarianceE[(f^(x)−E[f^(x)])2]+Noiseσϵ2
- Bias:模型系统性偏离 → 欠拟合 (underfitting)
- Variance:模型对训练数据扰动的敏感性 → 过拟合 (overfitting)
- Noise:数据内在的不可约误差
集成方法 (ensemble) 如 Bagging、Dropout 主要降低 Variance。
1.7 线性代数核心 / Core Linear Algebra
1.7.1 矩阵的秩 (Rank) 与低秩分解
矩阵 W∈Rm×n 的秩 r=rank(W) 是其线性无关行(或列)的最大数目,即列空间 (column space) 的维数。
低秩矩阵的参数效率:若 rank(W)=r≪min(m,n),则可分解为 W=AB,其中 A∈Rm×r,B∈Rr×n。
- 原始参数量:mn
- 低秩分解参数量:r(m+n)
- 当 r≪min(m,n) 时,参数量大幅降低
1.7.2 SVD 分解 (Singular Value Decomposition)
任意矩阵 W∈Rm×n 可分解为:
W=UΣV⊤
其中 U∈Rm×m 正交(左奇异向量),Σ=diag(σ1,σ2,…)(奇异值,σ1≥σ2≥⋯≥0),V∈Rn×n 正交(右奇异向量)。
最优低秩近似 (Eckart–Young–Mirsky Theorem):
W^r=UrΣrVr⊤=argrank(M)=rmin∥W−M∥F
其中 Ur∈Rm×r,Σr∈Rr×r,Vr∈Rn×r 由前 r 个奇异值/向量组成。
两种范数与奇异值的关系:
- Frobenius 范数:∥W∥F=∑iσi2
- 谱范数 (Spectral Norm):∥W∥2=σ1(最大奇异值)
ML 应用:
- PCA:协方差矩阵的右奇异向量 = 主成分方向
- 参数压缩:SVD 截断用于模型压缩
- LoRA 初始化策略:对预训练权重做 SVD 截断来初始化低秩因子(参见 LoftQ 等方法)
1.7.3 特征值分解 (Eigendecomposition) vs SVD
|
特征值分解 |
SVD |
| 适用范围 |
方阵(需可对角化) |
任意 m×n 矩阵 |
| 分解形式 |
A=QΛQ−1 |
W=UΣV⊤ |
| 对称矩阵 |
A=QΛQ⊤,Q 正交 |
同形式,奇异值 = |特征值|(PSD 时特征值 = 奇异值) |
| 值域 |
特征值可为负 |
奇异值 ≥0 |
当 A 对称正定 (SPD) 时,特征值分解与 SVD 等价。
1.7.4 正定矩阵 (Positive Definite Matrix)
对称矩阵 A 是正定的,充要条件:
- 所有特征值 >0
- 所有顺序主子式 >0(Sylvester 准则)
- 存在 Cholesky 分解 A=LL⊤
- ∀x=0:x⊤Ax>0
1.7.5 伪逆 (Moore–Penrose Pseudoinverse)
由 SVD 给出:A+=VΣ+U⊤,其中 Σ+ 将非零奇异值取倒数。用于求解 Ax=b 的最小范数最小二乘解。
线性回归的解析解:θ^=(X⊤X)−1X⊤y=X+y。当 X⊤X 奇异时,加 L2 正则化(Ridge 回归):θ^=(X⊤X+λI)−1X⊤y,同时改善条件数 (condition number)。
1.7.6 矩阵乘法计算复杂度
A∈Rm×k,B∈Rk×n:AB 需 O(mkn) FLOPs。
LLM FLOPs 估算:对于参数量为 N 的 Transformer 模型,训练 D 个 token 的总计算量约为:
FLOPs≈6ND
(前向约 2ND,反向约 4ND;推理/仅前向时为 2ND。)此公式即 scaling law 文献中的经典估算来源。
1.8 微积分与梯度 / Calculus & Gradients
1.8.1 Jacobian 与 Hessian
Jacobian 矩阵:向量函数 f:Rn→Rm 的一阶导数:
Jij=∂xj∂fi,J∈Rm×n
Hessian 矩阵:标量函数 f:Rn→R 的二阶导数:
Hij=∂xi∂xj∂2f,H∈Rn×n
H 对称。正定 → 局部极小;负定 → 局部极大;不定 → 鞍点 (saddle point)。
1.8.2 链式法则与反向传播 (Backpropagation)
对于复合函数 L=f(g(h(x))):
∂x∂L=∂f∂L⋅∂g∂f⋅∂h∂g⋅∂x∂h
矩阵形式(向量 → 向量),使用 向量-Jacobian 乘积 (VJP):
∂x∂L=Jh⊤Jg⊤∂f∂L
反向传播的本质是从输出到输入高效计算 VJP 链式乘积,利用前向缓存的激活值。
1.9 信息论 / Information Theory
1.9.1 熵 (Entropy)
H(X)=−x∑P(x)logP(x)
度量随机变量的不确定性。均匀分布时 H 最大(=log∣X∣);确定性分布时 H=0。单位:log2 → bits,ln → nats(深度学习框架通常用 nats)。
1.9.2 KL 散度 (Kullback–Leibler Divergence)
DKL(P∥Q)=x∑P(x)logQ(x)P(x)=EP[logQP]
核心性质:
- DKL≥0(由 Jensen 不等式证明),等号当且仅当 P=Q
- 非对称:DKL(P∥Q)=DKL(Q∥P),不是距离度量
- Forward KL (P∥Q):均值追逐 (mean-seeking),Q 倾向覆盖 P 的全部支撑
- Reverse KL (Q∥P):模式追逐 (mode-seeking),Q 倾向集中在 P 的主模式
ML 应用:RLHF 中的 KL 惩罚 DKL(πθ∥πref) 约束策略不偏离参考模型;DPO 目标中隐含 KL 约束。
1.9.3 交叉熵 (Cross-Entropy)
H(P,Q)=−x∑P(x)logQ(x)
与熵和 KL 散度的关系:
H(P,Q)=H(P)+DKL(P∥Q)
当 P 为确定性分布(one-hot label)时,H(P)=0,因此最小化交叉熵 ⇔ 最小化 DKL(P∥Q) ⇔ MLE。
困惑度 (Perplexity, PPL) 与交叉熵的关系:
PPL=exp(H(P,Q))=exp(−N1i=1∑NlogQ(xi))
1.9.4 互信息 (Mutual Information)
I(X;Y)=DKL(P(X,Y)∥P(X)P(Y))=H(X)−H(X∣Y)=H(Y)−H(Y∣X)
度量 X,Y 共享的信息量。I(X;Y)=0 当且仅当 X⊥Y。
ML 应用:表示学习中最大化 MI(如 InfoNCE loss 的对比学习);特征选择中用 MI 筛选与标签最相关的特征。
1.9.5 Jensen 不等式 (Jensen's Inequality)
对凸函数 f:f(E[X])≤E[f(X)]。
核心应用:
- 证明 KL 散度非负:DKL(P∥Q)=EP[−log(Q/P)]≥−logEP[Q/P]=0
- 推导 ELBO:logP(x)=logEz∼Q[Q(z)P(x,z)]≥EQ[logQ(z)P(x,z)]=ELBO
1.10 重要性采样 / Importance Sampling
当从目标分布 P 直接采样困难时,从建议分布 (proposal) Q 采样并加权修正:
EP[f(x)]=EQ[f(x)Q(x)P(x)]≈N1i=1∑Nf(xi)Q(xi)P(xi),xi∼Q
权重 wi=P(xi)/Q(xi) 即 importance weight。当 Q 与 P 差异过大时,方差可能爆炸。
1.11 正态分布 KL 散度闭合解 / Closed-Form KL for Gaussians
对于 P=N(μ1,Σ1),Q=N(μ2,Σ2):
DKL(P∥Q)=21[tr(Σ2−1Σ1)+(μ2−μ1)⊤Σ2−1(μ2−μ1)−k+ln∣Σ1∣∣Σ2∣]
VAE 中的特殊情况:Q(z)=N(μ,diag(σ2)),P(z)=N(0,I):
DKL(Q∥P)=−21j=1∑d(1+logσj2−μj2−σj2)
1.12 变分推断与 ELBO / Variational Inference & ELBO
目标:推断后验 P(z∣x)=P(x,z)/P(x),但 P(x)=∫P(x,z)dz 不可解。
引入变分分布 Q(z),用 ELBO 下界代替:
logP(x)≥ELBOEQ[logQ(z)P(x,z)]=EQ[logP(x∣z)]−DKL(Q(z)∥P(z))
等价关系:logP(x)=ELBO+DKL(Q∥P(z∣x))。最大化 ELBO ⇔ 最小化 DKL(Q∥P(z∣x))。
Part 2: PyTorch 代码片段 / PyTorch Snippets
2.1 数值稳定的 Softmax / Numerically Stable Softmax
import torch
def softmax(x: torch.Tensor, dim: int = -1) -> torch.Tensor:
"""Numerically stable softmax."""
x_max = x.max(dim=dim, keepdim=True).values
exp_x = torch.exp(x - x_max)
return exp_x / exp_x.sum(dim=dim, keepdim=True)
2.2 从零实现交叉熵损失 / Cross-Entropy Loss from Scratch
import torch
def cross_entropy_loss(logits: torch.Tensor, targets: torch.Tensor) -> torch.Tensor:
"""
logits: (N, C) — 未归一化的分数
targets: (N,) — 整数类标签
返回: 标量 loss
"""
log_probs = logits - logits.max(dim=-1, keepdim=True).values
log_probs = log_probs - torch.logsumexp(log_probs, dim=-1, keepdim=True)
nll = -log_probs[torch.arange(len(targets)), targets]
return nll.mean()
2.3 KL 散度(VAE 场景)/ KL Divergence for VAE
import torch
def kl_divergence_gaussian(mu: torch.Tensor, log_var: torch.Tensor) -> torch.Tensor:
"""
计算 KL( N(mu, exp(log_var)) || N(0, I) )
mu, log_var: (N, d)
返回: (N,) 每个样本的 KL 值
"""
return -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp(), dim=-1)
2.4 SVD 低秩近似 / SVD Low-Rank Approximation
import torch
def low_rank_approx(W: torch.Tensor, r: int) -> torch.Tensor:
"""
返回 W 的秩为 r 的最优 Frobenius 范数近似。
W: (m, n), r: 目标秩
"""
U, S, Vt = torch.linalg.svd(W, full_matrices=False)
return (U[:, :r] * S[:r]) @ Vt[:r, :]
W = torch.randn(128, 64)
W_approx = low_rank_approx(W, r=8)
print(f"近似误差 (Frobenius): {(W - W_approx).norm():.4f}")
2.5 LoRA 风格的低秩前向传播 / LoRA-Style Forward Pass
import torch
import torch.nn as nn
class LoRALinear(nn.Module):
"""简化的 LoRA 线性层,冻结预训练权重,添加可训练低秩旁路。"""
def __init__(self, in_dim: int, out_dim: int, r: int = 8, alpha: float = 16.0):
super().__init__()
self.W = nn.Linear(in_dim, out_dim, bias=False)
self.W.weight.requires_grad_(False)
self.A = nn.Linear(in_dim, r, bias=False)
self.B = nn.Linear(r, out_dim, bias=False)
nn.init.kaiming_uniform_(self.A.weight)
nn.init.zeros_(self.B.weight)
self.scaling = alpha / r
def forward(self, x: torch.Tensor) -> torch.Tensor:
return self.W(x) + self.B(self.A(x)) * self.scaling
2.6 高斯 MLE / Gaussian MLE from Scratch
import torch
def gaussian_mle(data: torch.Tensor):
"""
data: (N, d)
返回: (mu, var) — MLE 估计的均值和方差
"""
mu = data.mean(dim=0)
var = data.var(dim=0, unbiased=False)
return mu, var
def gaussian_log_likelihood(data: torch.Tensor, mu: torch.Tensor, var: torch.Tensor) -> torch.Tensor:
"""计算高斯对数似然。"""
d = data.shape[-1]
return -0.5 * (d * torch.log(2 * torch.pi * var) + ((data - mu) ** 2) / var).sum(dim=-1).mean()
2.7 Monte Carlo 估计 KL 散度 / MC Estimation of KL Divergence
import torch
def mc_kl_divergence(log_p, log_q, samples, num_samples: int = 10000):
"""
通过 Monte Carlo 估计 KL(P || Q)。
log_p, log_q: 可调用函数,输入样本返回 log 概率
samples: 从 P 采样的样本
"""
return (log_p(samples) - log_q(samples)).mean()
def log_p(x): return -0.5 * (x ** 2 + torch.log(torch.tensor(2 * 3.14159)))
def log_q(x): return -0.5 * ((x - 1) ** 2 / 0.5 + torch.log(torch.tensor(2 * 3.14159 * 0.5)))
samples = torch.randn(100000)
print(f"MC KL estimate: {mc_kl_divergence(log_p, log_q, samples):.4f}")
Part 3: 面试题库 / Interview Questions (25 Questions)
L1 — 基础 / Basic
Q1. 条件概率、联合概率、边缘概率之间的关系是什么?
A:联合概率 P(A,B)=P(A∣B)P(B)=P(B∣A)P(A);边缘概率通过对联合概率求和(或积分)得到:P(A)=∑BP(A,B)。贝叶斯定理 P(A∣B)=P(B∣A)P(A)/P(B) 将三者联系起来。
追问:联合概率的链式法则如何推广到三个以上变量?条件独立 A⊥B∣C 意味着什么?
答:P(A,B,C)=P(A)P(B∣A)P(C∣A,B)。A⊥B∣C 意味着给定 C 后,知道 A 不改变对 B 的信念:P(A,B∣C)=P(A∣C)P(B∣C)。在概率图模型中对应 C 阻断了 A 到 B 的所有路径。
Q2. 期望和方差有哪些基本运算法则?
A:
- 线性:E[aX+b]=aE[X]+b
- 方差:Var(X)=E[X2]−(E[X])2
- 缩放:Var(aX+b)=a2Var(X)
- 独立变量之和的方差等于方差之和(无协方差项)
追问:协方差矩阵的对角元素是什么?为什么协方差矩阵一定是半正定的?
答:对角元素是各维度的方差 Var(Xi)。对称性显然;半正定性是因为 ∀w:w⊤Σw=Var(w⊤X)≥0(方差非负)。
Q3. 列举至少四种常见概率分布及其均值、方差和典型应用场景。
A:
| 分布 |
均值 |
方差 |
应用 |
| 伯努利 p |
p |
p(1−p) |
二分类标签 |
| 高斯 μ,σ2 |
μ |
σ2 |
噪声模型、权重先验 |
| 泊松 λ |
λ |
λ |
稀有事件计数 |
| 均匀 [a,b] |
(a+b)/2 |
(b−a)2/12 |
参数初始化 |
追问:多维高斯分布的 PDF 如何写?
答:N(x∣μ,Σ)=(2π)−d/2∣Σ∣−1/2exp(−21(x−μ)⊤Σ−1(x−μ))。
Q4. 什么是最大似然估计 (MLE)?请给出数学定义。
A:
θ^MLE=argθmaxi=1∑NlogP(xi∣θ)
即选择使观测数据出现概率最大的参数。等价于最小化负对数似然 (NLL)。对于高斯假设下的回归,MLE 等价于最小化 MSE。
追问:MLE 在什么条件下会给出有偏估计?
答:典型例子是高斯方差的 MLE(除以 N 而非 N−1)是有偏的(低估方差)。小样本下 MLE 对复杂模型容易过拟合。
Q5. 矩阵的秩 (Rank) 是什么?低秩矩阵有什么特性?
A:矩阵的秩是其线性无关行(或列)的最大数目,等于列空间的维数。低秩矩阵 W∈Rm×n(秩 r≪min(m,n))可分解为 W=AB(A∈Rm×r,B∈Rr×n),参数量从 mn 降到 r(m+n)。
追问:低秩分解与参数高效微调 (PEFT) 有什么关系?
答:LoRA 假设预训练权重的更新 ΔW 是低秩的,用 ΔW=BA 的低秩分解来近似,只训练 A,B 而冻结原始权重,大幅减少可训练参数和显存开销。
Q6. 熵 (Entropy) 的定义和直觉是什么?
A:H(X)=−∑xP(x)logP(x),度量随机变量的不确定性。均匀分布时熵最大(=log∣X∣),确定性分布时熵为 0。单位取决于对数底:log2 → bits,ln → nats。
追问:为什么最大熵原理可以推导出高斯分布?
答:在给定均值和方差的约束下,最大化熵 H(X) 受约束 ∫P=1、E[X]=μ、Var(X)=σ2,用拉格朗日乘子法求解,得到的最优分布恰好是高斯分布。
Q7. 点积 (Dot Product) 和余弦相似度 (Cosine Similarity) 的区别?
A:
- 点积:u⋅v=∥u∥∥v∥cosθ,同时受向量幅度和方向影响
- 余弦相似度:cosθ=∥u∥∥v∥u⋅v,只反映方向(角度),幅度归一化
追问:Attention 中为什么用缩放点积而不用余弦相似度?
答:缩放点积 QK⊤/dk 计算高效(矩阵乘法),且 Q/K 的 norm 大小也参与注意力权重计算,增加了表达能力。RoPE 旋转保持 norm 不变,只编码相对位置信息。用余弦需要额外的 L2 归一化,会限制表达力。
Q8. Jacobian 矩阵和 Hessian 矩阵分别是什么?
A:
- Jacobian J∈Rm×n:向量函数 f:Rn→Rm 的一阶导数矩阵,Jij=∂fi/∂xj
- Hessian H∈Rn×n:标量函数的二阶导数矩阵,Hij=∂2f/∂xi∂xj,对称。正定 → 局部极小;不定 → 鞍点
追问:为什么在大模型优化中很少直接用 Hessian?
答:Hessian 大小为 n×n(n 为参数量),大模型参数量达数十亿,存储和计算 Hessian 不现实。K-FAC、Shampoo 等二阶方法用 Kronecker 分解或对角块近似 Hessian 以降低开销。
L2 — 中等 / Intermediate
Q9. MLE 和 MAP 的区别是什么?正则化如何对应贝叶斯先验?
A:MLE 最大化似然 P(D∣θ);MAP 最大化后验 P(θ∣D)∝P(D∣θ)P(θ),多了一项先验 logP(θ)。Gaussian 先验 → L2 正则化(Weight Decay);Laplace 先验 → L1 正则化(Lasso)。
追问:AdamW 的 weight decay 从贝叶斯角度看相当于假设了什么先验?
答:等价于各向同性高斯先验 P(θ)∝exp(−λ∥θ∥2/2)。AdamW 将 weight decay 从梯度中解耦(decoupled),与带 L2 正则的 Adam 有细微差异,但贝叶斯解释相同。
Q10. 偏差-方差分解 (Bias-Variance Decomposition) 是什么?
A:预测误差 = 偏差² + 方差 + 不可约噪声。高偏差 → 欠拟合;高方差 → 过拟合。增加模型容量降低偏差但可能增加方差,反之亦然,这就是 bias-variance tradeoff。
追问:集成方法(Bagging、Dropout as ensemble)主要降低的是偏差还是方差?
答:主要降低方差。Bagging 对多个高方差模型取平均,方差按 1/M 缩小(M 为模型数),偏差几乎不变。Boosting 则主要降低偏差。
Q11. SVD 分解是什么?如何用于低秩近似?
A:任意矩阵 W=UΣV⊤,其中 U,V 正交,Σ 为奇异值对角阵。Eckart–Young 定理表明,保留前 r 个奇异值的截断 SVD W^r=UrΣrVr⊤ 是秩为 r 的最优 Frobenius 范数近似。
追问:Frobenius 范数和谱范数分别由奇异值如何确定?
答:∥W∥F=∑iσi2(所有奇异值的平方和的根),∥W∥2=σ1(最大奇异值)。
Q12. 特征值分解 (Eigendecomposition) 和 SVD 有什么区别?
A:特征值分解仅适用于方阵(且需可对角化),A=QΛQ−1;SVD 适用于任意形状矩阵,W=UΣV⊤,奇异值始终非负。对称正定矩阵的特征值分解与 SVD 等价。
追问:协方差矩阵的特征向量有什么几何意义?
答:协方差矩阵的特征向量是数据分布的主轴方向(principal directions),对应 PCA 的主成分方向。特征值大小表示该方向的方差。
Q13. KL 散度的定义和关键性质是什么?
A:DKL(P∥Q)=EP[log(P/Q)]。性质:(1) DKL≥0;(2) 非对称,不是距离度量;(3) DKL=0⇔P=Q。
追问:Forward KL 和 Reverse KL 在拟合行为上有什么不同?
答:Forward KL (P∥Q) 是均值追逐 (mean-seeking),Q 倾向覆盖 P 的所有高概率区域,适合保持多样性。Reverse KL (Q∥P) 是模式追逐 (mode-seeking),Q 倾向集中在 P 的单一峰上,可能忽略其他模式。变分推断通常用 Reverse KL。
Q14. 交叉熵、KL 散度、熵之间有什么关系?
A:H(P,Q)=H(P)+DKL(P∥Q)。当 P 是 one-hot 分布时 H(P)=0,最小化交叉熵 = 最小化 KL 散度 = MLE。
追问:语言模型的困惑度 (PPL) 和交叉熵的关系是什么?
答:PPL=exp(H(P,Q)),其中 H 是交叉熵。PPL 可理解为模型在每个 token 位置平均的有效选择数;PPL 越低,模型越好。
Q15. Jensen 不等式是什么?在 ML 中有哪些应用?
A:对凸函数 f:f(E[X])≤E[f(X)]。应用:(1) 证明 KL 散度非负;(2) 推导变分下界 ELBO;(3) EM 算法的收敛性证明。
追问:什么是变分推断 (VI)?ELBO 和 KL 散度的关系?
答:VI 用简单分布 Q(z) 近似复杂后验 P(z∣x)。logP(x)=ELBO+DKL(Q∥P(z∣x)),最大化 ELBO 等价于最小化近似后验与真实后验的 KL 散度。
Q16. 正定矩阵 (Positive Definite Matrix) 的充要条件有哪些?
A:对称矩阵 A 正定的充要条件:(1) 所有特征值 >0;(2) 所有顺序主子式 >0(Sylvester 准则);(3) 存在 Cholesky 分解 A=LL⊤;(4) ∀x=0:x⊤Ax>0。
追问:为什么协方差矩阵一定是半正定的?
答:对任意 w,w⊤Σw=Var(w⊤X)≥0(方差非负)。正定的额外要求是方差严格大于零(没有确定性线性关系)。
Q17. 矩阵乘法的计算复杂度是多少?LLM 训练的 FLOPs 如何估算?
A:A∈Rm×k,B∈Rk×n:AB 需 O(mkn) FLOPs。LLM 训练估算:参数量 N,训练 token 数 D,总 FLOPs ≈6ND(前向约 2ND,反向约 4ND;推理/仅前向时为 2ND)。
追问:为什么 LLM 推理的 decode 阶段通常是 memory-bound 而非 compute-bound?
答:自回归 decode 每步只生成 1 个 token,batch 维度退化,矩阵乘法变成矩阵-向量乘,FLOPs 很小但需加载全部模型权重(IO 密集),GPU 算力未被充分利用。
L3 — 深度 / Deep
Q18. 中心极限定理 (CLT) 与 SGD 的噪声有什么关系?SGD 噪声为什么有正则化效果?
A:CLT 保证 mini-batch 梯度 g^B=B1∑i∇L(xi) 是总体梯度的无偏估计,方差 ∝1/B。SGD 的梯度噪声帮助模型逃离尖锐极小值 (sharp minima),倾向于收敛到平坦极小值 (flat minima)。平坦极小值通常泛化更好,这相当于一种隐式正则化 (implicit regularization)。
追问:增大 batch size 对训练有什么影响?
答:减小梯度方差(∝1/B),优化更稳定但可能丧失正则化效果,导致泛化能力下降。需要配合学习率调整(线性缩放规则)。
Q19. Forward KL 和 Reverse KL 的拟合行为有什么根本差异?各用在什么场景?
A:
- Forward KL (DKL(P∥Q),I-projection):最小化时 Q 试图在 P>0 的所有区域都有质量 → mean-seeking / zero-avoiding。适合保持多模态覆盖。
- Reverse KL (DKL(Q∥P),M-projection):最小化时 Q 在 P≈0 的区域尽量没有质量 → mode-seeking / zero-forcing。适合集中在主模式上。
变分推断 (VI) 默认用 Reverse KL(因为 ELBO 推导自然产生);RLHF 中 KL 约束 DKL(πθ∥πref) 按上面的约定是 Reverse KL(mode-seeking):把策略 πθ 拉向参考、惩罚其偏离 πref 高概率区域,抑制 reward hacking 式的分布漂移。
追问:混合 Forward/Reverse KL 有什么实际应用?
答:如 Rényi-α 散度家族在 α∈(0,1) 时介于二者之间,被用于变分推断和强化学习中,在覆盖率和集中度之间做折中。
Q20. Attention 中为什么用缩放点积 (Scaled Dot-Product) 而不用余弦相似度?
A:缩放点积 softmax(QK⊤/dk) 优点:(1) 矩阵乘法高效;(2) Q/K 的 norm 大小参与注意力权重计算,增加表达能力;(3) 缩放因子 dk 防止点积值过大导致 softmax 饱和。余弦相似度会丢失幅度信息,且需额外归一化计算。
RoPE (Rotary Position Embedding) 旋转编码只改变 Q/K 的方向(角度),保持 norm 不变,因此位置信息通过点积中的角度差自然融入。
追问:如果对 Q, K 做 L2 归一化后再算点积,效果如何?
答:等价于余弦相似度(乘以温度缩放后)。一些工作(如 Normalized Attention)探索了这个方向,优点是注意力权重与 norm 无关、更稳定,但可能限制了不同 token 之间差异化表达的能力。CosFormer 等方法在保持线性注意力效率的同时引入余弦重加权。
Q21. 反向自动微分 (Reverse-Mode AD) 和前向自动微分 (Forward-Mode AD) 各在什么场景更高效?
A:
- 反向模式 (reverse-mode AD):一次前向 + 一次反向可计算标量损失对所有参数的梯度,复杂度 O(1)× 前向计算。适合参数多、输出少(即 f:Rn→R)的场景,是深度学习反向传播的基础。
- 前向模式 (forward-mode AD):每次沿一个输入方向传播,得到输出对一个输入的梯度。适合输入少、输出多(即 f:R→Rm)的场景,如计算 Jacobian-vector product (JVP)。
追问:HVP (Hessian-vector product) 可以不显式构造 Hessian 来计算吗?
答:可以。∇2f⋅v=∇(∇f⋅v),先对 ∇f⋅v 做前向模式微分(或对 ∇f 做反向传播),只需两次微分运算,复杂度与一次梯度计算相当。这是 CG (Conjugate Gradient) 等隐式二阶方法的基础。
Q22. 重要性采样 (Importance Sampling) 在 PPO 中如何应用?PPO-Clip 中的 ϵ 限制的是什么?
A:PPO 复用旧策略 πθold 收集的轨迹数据训练新策略 πθ,通过 importance ratio rt(θ)=πθ(at∣st)/πθold(at∣st) 修正分布偏移。PPO-Clip 的目标函数:
LCLIP=Et[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
ϵ(通常 0.1~0.2)限制的是 importance ratio 的范围(而非权重本身)。当 rt 超出 [1−ϵ,1+ϵ] 时梯度被截断,防止过大的策略更新导致训练不稳定。
追问:如果 importance ratio 方差过大,有什么替代方案?
答:可用 V-trace(在 IMPALA 中提出)对 ratio 做截断,或使用 Retrace(λ) 等方法控制方差。核心思想是限制有效 importance weight 以保证收敛稳定性。
Q23. 变分推断 (Variational Inference) 和 ELBO 是什么?如何推导?
A:用简单分布 Q(z) 近似真实后验 P(z∣x)。推导:
logP(x)=log∫P(x,z)dz=logEQ[Q(z)P(x,z)]≥EQ[logQ(z)P(x,z)]=ELBO
不等式由 Jensen 不等式给出(log 是凹函数)。ELBO = 重构项 EQ[logP(x∣z)] − 正则项 DKL(Q(z)∥P(z))。β-VAE 通过超参数 β 调节 KL 项权重,控制解耦程度和重构质量之间的 tradeoff。
追问:ELBO 为什么要最大化(而不是最小化)?
答:ELBO 是 logP(x) 的下界。最大化 ELBO → 更紧的下界 → Q(z) 更接近真实后验 P(z∣x)。同时 logP(x)=ELBO+DKL(Q∥P(z∣x)),因为 KL ≥0,最大化 ELBO 相当于最小化变分后验与真实后验的 KL 散度。
Q24. 低秩假设在参数高效微调 (PEFT) 中的理论和实验依据是什么?
A:理论依据——内在维度 (Intrinsic Dimensionality) 的研究表明,预训练模型的 fine-tuning 实际上在一个远低于参数空间维度的低维子空间中进行。LoRA 将权重更新参数化为 ΔW=BA(B∈Rm×r,A∈Rr×n),只需训练 r(m+n) 个参数(r≪min(m,n)),比原始 mn 参数量少几个数量级。实验上,r=4∼64 即可在多种下游任务上达到接近全参微调的效果。
追问:如何选择 LoRA 的秩 r 和哪些层应用 LoRA?
答:秩 r 通常通过在验证集上做小规模搜索确定。实践中应用到注意力层的 Q/K/V/O 投影矩阵效果较好。更进阶的方法(如 AdaLoRA)根据各层奇异值分布自适应分配不同的秩。秩 r 的选择需要在表达能力和参数效率之间权衡。
Q25. 正态分布 KL 散度的闭合解是什么?在 VAE 中如何使用?
A:对于两个多元高斯 P=N(μ1,Σ1),Q=N(μ2,Σ2):
DKL(P∥Q)=21[tr(Σ2−1Σ1)+(μ2−μ1)⊤Σ2−1(μ2−μ1)−k+ln∣Σ1∣∣Σ2∣]
VAE 中 Q(z)=N(μ,diag(σ2)),P(z)=N(0,I),简化为:
DKL=−21j∑(1+logσj2−μj2−σj2)
这个 KL 项作为正则项出现在 ELBO 中,鼓励编码器输出接近标准正态先验。
追问:β-VAE 中 β>1 有什么效果?
答:增大 KL 项权重 → 编码器被迫更紧密地匹配标准正态先验 → 学到的隐变量 z 更解耦 (disentangled),但重构质量可能下降。β<1 则相反,允许更灵活的隐空间但可能牺牲解耦性。
Last updated: 2025 | 本手册仅供学习参考,公式以原始文献为准。
更多 L3 深挖 / Extended L3
Q26: Fisher 信息矩阵 (Fisher Information Matrix, FIM) 与自然梯度 (Natural Gradient) 有什么内在联系?为什么说 natural gradient 是 KL 意义下的最速下降?
答:Fisher 信息矩阵定义为对数似然梯度的协方差:F(θ)=Ex∼pθ[∇θlogpθ(x)∇θlogpθ(x)⊤]。它同时也是对数似然 Hessian 的负期望(在 MLE 处),并与 KL 散度的局部二次展开密切相关:DKL(pθ∥pθ+δ)≈21δ⊤F(θ)δ。因此 FIM 是 KL 散度在参数空间的局部度量张量 (metric tensor)。自然梯度定义为 ∇~=F−1∇L,即在 KL 球约束 {δ:DKL(pθ∥pθ+δ)≤ϵ} 下使损失下降最快的方向。直观理解:普通梯度在欧氏空间中最速下降,但参数空间中等距移动并不对应等概率分布变化;natural gradient 用 FIM 修正了这个"扭曲",使优化步长在分布空间中是均匀的。
追问:为什么实际训练中通常不直接使用 natural gradient?近似方法有哪些?(提示:K-FAC、EKFAC 对 FIM 进行分块对角近似,降低求逆的计算开销。)
Q27: 重参数化技巧 (Reparameterization Trick) 的数学本质是什么?为什么它能降低梯度估计的方差?
答:在 VAE 中,ELBO 的期望 Ez∼qϕ(z∣x)[⋅] 的梯度无法直接通过采样节点反向传播(采样操作不可微)。重参数化技巧将 z∼qϕ=N(μϕ,σϕ2) 改写为 z=μϕ+σϕ⊙ϵ,其中 ϵ∼N(0,I)。这样随机性来源从参数 ϕ 转移到了无参数的噪声 ϵ,而 z 关于 ϕ 是确定性可微的,梯度可以通过标准反向传播传递到 μϕ 和 σϕ。相比 score function estimator(REINFORCE)∇ϕEq[f(z)]=Eq[f(z)∇ϕlogqϕ(z)],重参数化将梯度信息直接编码到计算图中,不依赖 f(z) 作为标量乘子,因此方差显著更低。本质上,score function estimator 只用 f(z) 的标量值作为权重,而重参数化利用了 f 对 z 的局部梯度 ∂f/∂z,提供了更丰富的信号。
追问:对于离散隐变量(如离散 VAE),重参数化技巧不直接适用,有哪些替代方案?(提示:Gumbel-Softmax / Concrete 分布用连续松弛近似离散采样,保持可微性。)
Q28: 矩阵的谱范数 (Spectral Norm) ∥W∥2=σ1 如何控制神经网络的 Lipschitz 常数?这对训练稳定性有何意义?
答:一个函数 f 的 Lipschitz 常数 L 满足 ∥f(x)−f(y)∥≤L∥x−y∥。对于线性层 f(x)=Wx,Lipschitz 常数恰好等于 ∥W∥2=σ1(最大奇异值)。对于 k 层网络 f=Wk⋯W1,整体 Lipschitz 常数 L≤∏i∥Wi∥2,即各层谱范数之积。如果 L 过大,输入的微小扰动会在前向传播中指数放大(exploding activations),梯度也会在反向传播中指数放大(exploding gradients),导致训练不稳定。Spectral normalization(将每层权重除以其谱范数:W^=W/σ1)将每层 Lipschitz 常数约束为 1,广泛用于 GAN 的判别器训练以防止模式崩溃 (mode collapse)。谱范数可通过幂迭代 (power iteration) 高效近似,无需完整 SVD。
追问:为什么 GAN 训练中对判别器施加 Lipschitz 约束(如 spectral normalization 或 gradient penalty)是必要的?如果不约束会出现什么问题?(提示:Wasserstein 距离要求判别器属于 1-Lipschitz 函数类,否则目标无界。)
Q29: 矩阵求迹技巧 (Trace Trick) 的核心等式是什么?它在推导哪些 ML 公式时不可或缺?
答:核心等式是 tr(AB)=tr(BA)(循环置换不变性)以及标量等于其自身的迹:x⊤Ax=tr(x⊤Ax)=tr(Axx⊤)。这使得对含矩阵乘积的标量函数求导变得可行。典型应用:(1) 线性回归的矩阵微分 ∇W∥Y−XW∥F2=∇Wtr((Y−XW)⊤(Y−XW)),展开后利用 ∇Wtr(AW)=A⊤ 得到闭合解;(2) 多元高斯对数似然中 log∣Σ∣ 和 x⊤Σ−1x 的求导;(3) 协方差矩阵的 MLE 推导 Σ^=N1∑i(xi−μ)(xi−μ)⊤;(4) 线性动态系统 (Kalman filter) 中矩阵 Riccati 方程的推导。总之,任何涉及矩阵二次型求导的场景,trace trick 都是核心工具。
追问:试用 trace trick 推导多元高斯 N(μ,Σ) 关于 Σ−1(精度矩阵 Λ)的 MLE。提示:对数似然中含 tr(ΛS) 和 log∣Λ∣ 两项。(答:Λ^=S−1,即 MLE 精度矩阵为样本协方差的逆。)
Q30: Schur 补 (Schur Complement) 与多元高斯的条件分布 (Conditional Distribution) 之间有什么精确的数学对应?
答:设联合分布 (xa,xb)∼N(μ,Σ),将协方差矩阵分块为 Σ=(ΣaaΣbaΣabΣbb)。条件分布 P(xa∣xb) 仍为高斯,其精度矩阵(逆协方差)中 Σaa∣b−1 的左上角块恰好是联合精度矩阵 Σ−1 的对应块 Σaa,这就是 Schur 补:Σaa=(Σaa−ΣabΣbb−1Σba)−1。条件均值为 μa∣b=μa+ΣabΣbb−1(xb−μb)。这个对应有深远意义:(1) 高斯图模型 (Gaussian Markov Random Field) 中,精度矩阵的零元素对应条件独立关系,比协方差矩阵更直接编码了条件结构;(2) 高斯过程 (GP) 的后验预测本质上就是条件高斯,利用 Schur 补给出闭合解;(3) Kalman filter 的更新步也可以从 Schur 补角度理解。
追问:为什么在高斯图模型中用精度矩阵而不是协方差矩阵来编码图结构?条件独立与精度矩阵零元素的关系是什么?(答:xi⊥xj∣rest 当且仅当 Σij−1=0,即精度矩阵的非零模式直接对应图的边结构。)
Q31: Wasserstein 距离 (Wasserstein Distance) 与 KL 散度在度量分布差异时有何本质区别?为什么 WGAN 要用 Wasserstein 而非 KL?
答:KL 散度 DKL(P∥Q) 在两个分布的支撑不重叠时为无穷大(即使它们在几何上很"近"),这在高维空间中几乎总是成立,因为两个低维流形支撑集重叠的概率极低。Wasserstein 距离(推土机距离, Earth Mover's Distance)基于最优传输 (optimal transport),定义为 W(P,Q)=infγ∈Π(P,Q)E(x,y)∼γ[∥x−y∥],即使支撑不重叠也能给出有意义的有限距离。直观类比:KL 只看比值 P/Q(如果 Q 在 P 有质量的地方为 0,就"爆炸"了),Wasserstein 看把一堆"土"搬到另一堆需要的最少"工作量"。因此 Wasserstein 在分布不重叠时仍有平滑的梯度信号,而 KL 或 JS 散度会导致梯度消失。WGAN 用 Wasserstein-1 距离作为生成器目标,通过 Kantorovich-Rubinstein 对偶转化为对 1-Lipschitz 判别器的优化,解决了经典 GAN 训练不稳定的问题。
追问:Wasserstein 距离的计算代价通常高于 KL 散度,在高维情况下如何近似?(提示:Sinkhorn 算法在最优传输中加入熵正则化,将线性规划转化为可并行化的矩阵缩放迭代;Sliced Wasserstein 通过随机投影将高维问题降为多个一维问题。)
Q32: Hessian 矩阵的谱性质 (spectrum) 如何刻画损失函数的局部几何结构?这对理解优化中的鞍点和逃离策略有何帮助?
答:在临界点(梯度为零处),Hessian H 的特征值分布决定了局部几何:(1) 所有特征值 >0(正定)→ 局部极小,曲面呈碗状;(2) 所有特征值 <0(负定)→ 局部极大;(3) 有正有负(不定)→ 鞍点,沿负曲率方向是下降方向。在高维参数空间中,鞍点远多于局部极小(因为特征值全部为正的"概率"指数衰减),这是非凸优化的主要障碍。逃离鞍点的策略:(1) SGD 的梯度噪声自然提供沿负曲率方向的扰动,帮助逃离——这是 SGD 噪声的隐式正则化效应的几何解释;(2) 动量 (momentum) 帮助穿越平坦区域;(3) 显式方法如添加 Hessian 负曲率方向的扰动(尚不常用但理论上有效)。Hessian 的特征值谱还与泛化相关:极小值处 Hessian 的特征值越大(曲面越"尖锐"),该极小值的泛化能力通常越差——这启发了 sharpness-aware minimization (SAM) 等方法。
追问:为什么在极高维空间中,鞍点问题比局部极小问题更严重?如何从 Hessian 的特征值分布来解释?(答:在 n 维空间中,Hessian 有 n 个特征值;在随机临界点处,每个特征值等概率正或负,全部为正的概率为 2−n,指数级小,因此几乎任何临界点都是鞍点而非极小值。)