Ch03 概率论与梯度 · 阶段测试题¶
章节: Ch03 概率与梯度 (5 节) 难度: 3 阶 (基础 / 进阶 / 挑战) 时长: 75 分钟 (Part A 25min + Part B 30min + Part C 20min) 总分: 100 分
Part A · 选择题 (10 题 × 3 分 = 30 分)¶
A1. 条件概率基础¶
袋中 5 红 3 蓝球, 无放回取两次, 第二次红球概率? - A) 5/8 - B) 1/2 - C) 25/64 - D) 5/7
答案
A) 5/8。$P(R_2) = P(R_2|R_1)P(R_1) + P(R_2|B_1)P(B_1) = 4/7 \cdot 5/8 + 5/7 \cdot 3/8 = 20/56 + 15/56 = 35/56 = 5/8$ **关键**: 全概率公式A2. 贝叶斯公式¶
疾病 1% 患病率, 检验灵敏度 99%, 特异性 95%。阳性时真正患病概率? - A) 1% - B) ~17% - C) ~50% - D) ~95%
答案
B) 约 17%。 $$P(D|+) = \frac{0.99 \cdot 0.01}{0.99 \cdot 0.01 + 0.05 \cdot 0.99} = \frac{0.0099}{0.0099 + 0.0495} = \frac{0.0099}{0.0594} \approx 0.167$$ **关键**: 基础率谬误 (Base Rate Fallacy)A3. 期望计算¶
\(E[X^2]\) (X 为 0/1 伯努利, p=0.3)? - A) 0.09 - B) 0.21 - C) 0.3 - D) 0.7
答案
C) 0.3. $E[X^2] = 0^2 \cdot 0.7 + 1^2 \cdot 0.3 = 0.3$ **关键**: $Var(X) = E[X^2] - (E[X])^2$A4. 高斯分布¶
\(\mathcal{N}(0, 1)\) 在 \(x = 1\) 处的 PDF 值? - A) 0.5 - B) 0.242 - C) 0.399 - D) 0.683
答案
B) 0.242. $f(1) = \frac{1}{\sqrt{2\pi}} e^{-1/2} \approx 0.399 \cdot 0.607 \approx 0.242$ **关键**: 标准正态 PDFA5. 协方差 / 相关¶
\(X = \{1, 2, 3\}\), \(Y = \{2, 4, 6\}\) 的相关系数? - A) 0 - B) 0.5 - C) 1 - D) 2
答案
C) 1, 完全正相关。$Y = 2X$, 完全线性依赖A6. 熵¶
均匀分布 \(U(0, 1)\) 的微分熵? - A) 0 - B) 1 - C) \(\ln 2\) - D) 都需要 × 1/2
答案
D) $h(U) = -\int_0^1 \frac{1}{1} \ln \frac{1}{1} dx = 0$ (bizarre!), 但实际微分熵 $h(U) = \ln 1 = 0$, 均匀分布微分熵公式: $h(X) = \log(a)$ for $U(0, a)$, so $h(U(0,1)) = 0$. **关键**: 微分熵可以为负A7. KL 散度¶
\(D_{KL}(P \| Q)\) 总是? - A) \(\geq 0\), 对称 - B) \(\geq 0\), 不对称 - C) \(\leq 0\) - D) 与 \(P,Q\) 无关
答案
B) $\geq 0$, 不对称 **关键**: 吉布斯不等式A8. 交叉熵¶
二分类 \(y = 1\), \(\hat{y} = 0.9\) 的交叉熵? - A) \(\ln 1.1\) - B) \(\ln 0.9\) - C) \(-\ln 0.9\) - D) 0.1
答案
C) $-\ln 0.9 \approx 0.105$ **关键**: $H = -y \log \hat{y} - (1-y) \log(1-\hat{y})$A9. 梯度下降¶
凸函数梯度下降, 学习率过大导致? - A) 收敛快 - B) 收敛慢 - C) 发散 - D) 局部最优
答案
C) 发散。$\eta > 2/L$ 时 (L 为 Lipschitz) **关键**: 学习率选择A10. Adam vs SGD¶
Adam 相比 SGD 主要优势? - A) 更快收敛 - B) 自适应学习率 - C) 内存小 - D) 精确梯度
答案
B) 自适应学习率 **关键**: Adam = SGD + 动量 + RMSPropPart B · 简答题 (5 题 × 6 分 = 30 分)¶
B1. 大数定律与中心极限定理 (6 分)¶
题: 简述弱大数定律 + 中心极限定理, 给出 \(X_i \sim \text{Bernoulli}(p)\) 时的具体例子。说明两者关系。
参考答案
**弱大数定律 (WLLN)**: $\bar{X}_n = \frac{1}{n}\sum X_i \xrightarrow{P} \mu$ **中心极限定理 (CLT)**: $\frac{\sum X_i - n\mu}{\sigma \sqrt{n}} \xrightarrow{d} \mathcal{N}(0, 1)$ **伯努利例子**: - $\bar{X}_n$ 收敛到 $p$ (WLLN) - 标准化后 $\sqrt{n}(\bar{X}_n - p)/\sqrt{p(1-p)}$ 收敛到 $\mathcal{N}(0,1)$ (CLT) **关系**: WLLN 关心**收敛位置** (极限值), CLT 关心**收敛速度** (分布形状)。CLT 蕴含 WLLN。B2. KL 散度非负证明 (6 分)¶
题: 证明 \(D_{KL}(P \| Q) \geq 0\), 等号成立条件。
参考答案
**证明** (吉布斯不等式): $$D_{KL}(P \| Q) = \sum_x p(x) \log \frac{p(x)}{q(x)} = -\sum_x p(x) \log \frac{q(x)}{p(x)}$$ 由 $\log x \leq x - 1$ (凹函数): $$\log \frac{q(x)}{p(x)} \leq \frac{q(x)}{p(x)} - 1$$ 代入: $$D_{KL} \geq -\sum_x p(x) \left[\frac{q(x)}{p(x)} - 1\right] = -\sum_x q(x) + \sum_x p(x) = -1 + 1 = 0$$ **等号**: 仅当 $\frac{q(x)}{p(x)} = 1$ 即 $P = Q$ 时成立 (a.s.) **应用**: VAE, GAN, RL 中的策略优化B3. 凸函数判定 (6 分)¶
题: 列出 3 个凸函数判定方法, 各举一例。说明 Hessian 矩阵判定法。
参考答案
**方法 1**: 一阶条件 $f(y) \geq f(x) + \nabla f(x)^T (y-x)$ (图在切线上方) **方法 2**: 二阶条件 $\nabla^2 f(x) \succeq 0$ (Hessian 半正定) **方法 3**: 定义 (Jensen) $f(\lambda x + (1-\lambda)y) \leq \lambda f(x) + (1-\lambda) f(y)$ **Hessian 判定**: - $f(x) = x^2$: $f''(x) = 2 > 0$ ✓ 凸 - $f(x) = e^x$: $f''(x) = e^x > 0$ ✓ 凸 - $f(x) = \log x$: $f''(x) = -1/x^2 < 0$ ✗ 凹 - $f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x}$: 凸当 $A \succeq 0$ **应用**: 深度学习损失函数 (非凸), 容易陷入局部最优B4. Adam 算法推导 (6 分)¶
题: 写出 Adam 算法的 4 个步骤, 解释 bias correction 的作用。
参考答案
**Adam 算法**: 1. $g_t = \nabla L(\theta_t)$ 2. $m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t$ (一阶矩) 3. $v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2$ (二阶矩) 4. $\hat{m}_t = m_t / (1-\beta_1^t)$, $\hat{v}_t = v_t / (1-\beta_2^t)$ (bias correction) 5. $\theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}$ **Bias correction 作用**: - 初始 $m_0 = 0, v_0 = 0$, 前几步 $m_t, v_t$ 系统性偏小 - $\beta^t$ 随 t 增长, 偏置 $\to 0$ - 校正后: $E[\hat{m}_t] = E[g_t]$, 无偏 **超参**: $\beta_1 = 0.9$, $\beta_2 = 0.999$, $\epsilon = 10^{-8}$B5. 互信息与熵关系 (6 分)¶
题: 推导 \(I(X;Y) = H(X) - H(X|Y)\), 解释其信息含义。
参考答案
**推导**: $$I(X;Y) = \sum_{x,y} p(x,y) \log \frac{p(x,y)}{p(x)p(y)}$$ $$= \sum_{x,y} p(x,y) [\log p(x) - \log p(x) - \log p(x) + \log p(x|y)]$$ 不对, 重做: $$I(X;Y) = \sum_{x,y} p(x,y) \log \frac{p(x|y)}{p(x)}$$ $$= \sum_{x,y} p(x,y) \log p(x|y) - \sum_x p(x) \log p(x)$$ $$= -H(X|Y) + H(X)$$ **信息含义**: - $H(X)$: X 自身的不确定性 - $H(X|Y)$: 知道 Y 后 X 的剩余不确定性 - $I(X;Y)$: 知道 Y 后 X 不确定性减少量 (= Y 提供的关于 X 的信息) **应用**: 特征选择 (高互信息 = 强预测), 决策树 (信息增益)Part C · 编程题 (4 题 × 10 分 = 40 分)¶
C1. 蒙特卡洛估计 π (10 分)¶
题: 用蒙特卡洛方法估计 \(\pi\), 解释原理。
import numpy as np
np.random.seed(42)
N = 100000
x = np.random.uniform(-1, 1, N)
y = np.random.uniform(-1, 1, N)
inside = (x**2 + y**2) <= 1
pi_est = 4 * inside.mean()
print(f"π ≈ {pi_est:.4f}, 误差: {abs(pi_est - np.pi):.4f}")
评分要点
- 圆周率原理: $P(\text{inside}) = \pi/4$ - 估计误差 $\propto 1/\sqrt{N}$ - 误差报告 + 实验次数 - 100k 次典型误差 ~0.003C2. 采样高斯 (10 分)¶
题: 用 Box-Muller 变换从均匀分布生成标准正态样本。
def box_muller(n):
u1 = np.random.uniform(0, 1, n)
u2 = np.random.uniform(0, 1, n)
z0 = np.sqrt(-2 * np.log(u1)) * np.cos(2 * np.pi * u2)
z1 = np.sqrt(-2 * np.log(u1)) * np.sin(2 * np.pi * u2)
return z0, z1
samples = box_muller(10000)[0]
print(f"均值: {samples.mean():.4f}, 应为 0")
print(f"方差: {samples.var():.4f}, 应为 1")
评分要点
- Box-Muller 公式正确 - 验证均值 ≈ 0, 方差 ≈ 1 - 解释原理: $R = \sqrt{-2\ln U_1}$, $\Theta = 2\pi U_2$ - $Z = R \cos \Theta$, $Z = R \sin \Theta$ 独立C3. KL 散度计算 (10 分)¶
题: 计算 \(P = (0.5, 0.3, 0.2)\) 和 \(Q = (0.3, 0.4, 0.3)\) 的 KL 散度。
import numpy as np
def kl_divergence(p, q):
p = np.array(p)
q = np.array(q)
return np.sum(p * np.log(p / q))
P = [0.5, 0.3, 0.2]
Q = [0.3, 0.4, 0.3]
d_kl = kl_divergence(P, Q)
print(f"D_KL(P || Q) = {d_kl:.4f}")
评分要点
- $D_{KL} \approx 0.158$ - 验证非负 - 数值稳定性 (避免 log(0)) - $D_{KL}(P \| Q) \neq D_{KL}(Q \| P)$C4. Adam 优化器实现 (10 分)¶
题: 实现 Adam 优化器, 拟合 \(y = 3x + 2\) (带噪声)。
import numpy as np
np.random.seed(42)
X = np.linspace(0, 10, 100)
y = 3 * X + 2 + np.random.randn(100) * 0.5
theta = np.array([0.0, 0.0]) # [b, w]
m, v = np.zeros(2), np.zeros(2)
beta1, beta2, eta, eps = 0.9, 0.999, 0.01, 1e-8
for t in range(1, 1001):
y_pred = theta[0] + theta[1] * X
grad = np.array([
-2 * (y - y_pred).mean(),
-2 * (X * (y - y_pred)).mean()
])
m = beta1 * m + (1 - beta1) * grad
v = beta2 * v + (1 - beta2) * grad**2
m_hat = m / (1 - beta1**t)
v_hat = v / (1 - beta2**t)
theta -= eta * m_hat / (np.sqrt(v_hat) + eps)
print(f"b={theta[0]:.3f}, w={theta[1]:.3f}")
评分要点
- Adam 5 个步骤正确 - bias correction 正确 - 1000 步后 b ≈ 2, w ≈ 3 - 收敛曲线说明总分对照¶
| 等级 | 分数段 | 理解水平 |
|---|---|---|
| 优秀 | 90-100 | 完全掌握, 可进 Ch04-05 |
| 良好 | 75-89 | 基础扎实, 需补熵/优化 |
| 及格 | 60-74 | 核心概念通过, 需刷题 |
| 需补 | <60 | 重读 Ch03 章节 |
跨套书连接¶
- 题目涉及熵 \(\to\) Ch05 贝叶斯 (先验/后验)
- 梯度 \(\to\) Ch06 ML (反向传播)
- KL 散度 \(\to\) Ch07 §04 Transformer (交叉熵损失)
- Adam \(\to\) Ch07 §05 LLM 训练