第03章 · 微积分 · 阶段测试题答案¶
一 · 单选 (8 题)¶
1.1 B - d/dx(x^n) = nx^(n-1)。
1.2 A - 链式法则: df(g(x))/dx = f'(g) × g'(x)。
1.3 C - ∂²f/∂x∂y = ∂²f/∂y∂x (混合偏导连续时)。
1.4 B - 多元函数极值必要条件: ∇f = 0。
1.5 A - Hessian 半正定是局部极小值的充要条件(凸函数时)。
1.6 C - SGD 用随机梯度代替全梯度, 每步廉价。
1.7 B - 凸函数满足 f(λx+(1-λ)y) ≤ λf(x)+(1-λ)f(y)。
1.8 A - 学习率太大会发散, 太小收敛慢。
二 · 多选 (4 题)¶
2.1 ACD - 凸函数判别方法。
2.2 ABD - 都是常见优化算法。
2.3 ABC - 全微分 / 偏导 / 方向导数的关系。
2.4 ABC - 梯度下降的常见改进。
三 · 简答 (5 题)¶
3.1 链式法则¶
答: 复合函数求导法则
ML 应用: 反向传播(Backpropagation)的基础。每个神经元都是复合函数,链式法则让梯度高效传播。3.2 多元函数极值¶
必要条件: ∇f(x) = 0 (梯度为 0) 充分条件: ∇f(x) = 0 且 Hessian 正定 → 极小值 鞍点: ∇f = 0 但 Hessian 不定, 在某些方向是极大, 某些方向是极小。
3.3 梯度下降¶
算法:
变种: - SGD: 用单个样本的梯度 - Batch GD: 用全部样本 - Mini-batch: 折中(主流) - Momentum: 引入动量加速 - Adam: 自适应学习率收敛性: 凸函数 O(1/k), 强凸函数 O(ρ^k) 线性收敛。
3.4 凸 vs 非凸¶
凸: 局部最优 = 全局最优, 易优化 非凸: 多个局部最优, 深度学习都是非凸
深度学习虽非凸, 但实践中: - 随机初始化 + SGD 通常能找到"好的"局部最优 - 过参数化时损失景观更平滑 - 现代架构 (Transformer) 损失景观较友好
3.5 反向传播¶
核心: 链式法则的高效实现 前向: 算 Loss 反向: 从 Loss 开始, 用链式法则算每个参数的梯度
计算复杂度: 与前向传播同阶 O(n), 不需要 O(n²) 关键: 计算图 + 自动微分
四 · 编程 (2 题)¶
4.1 梯度下降¶
import numpy as np
def gradient_descent(grad_fn, x0, lr=0.1, n_steps=100):
x = x0
for _ in range(n_steps):
x = x - lr * grad_fn(x)
return x
# 例子: f(x) = x^2
grad = lambda x: 2 * x
x_min = gradient_descent(grad, x0=10.0, lr=0.1, n_steps=100)
print(f"x_min: {x_min}") # ~0