《最优化理论基础》8课时层次化教案
课程总目标
- 掌握最优化核心理论(最优性条件、凸分析、对偶理论);
- 能独立实现经典优化算法(梯度法、牛顿法、约束优化建模);
- 理解优化理论与机器学习模型的关联(如逻辑回归、SVM)。
课程结构
前4课时:理论奠基
课时 | 主题 | 教学目标与关键内容 | 机器学习关联案例 |
---|---|---|---|
1 | 最优性条件 | - 目标:理解无约束优化的必要与充分条件 | 逻辑回归损失函数的最优解分析 |
- 关键内容:Fermat定理、一阶/二阶最优性条件、驻点与鞍点区别 | |||
- 作业:证明凸函数下局部最优即全局最优 | |||
2 | 凸集与凸函数 | - 目标:掌握凸性判定方法 | 凸性在SVM支持向量中的作用 |
- 关键内容:凸集定义、凸函数Jensen不等式、保凸运算(仿射变换、逐点极大) | |||
- 作业:证明线性函数与二次函数为凸函数 | |||
3 | 拉格朗日对偶理论 | - 目标:能构建优化问题的对偶形式 | 支持向量机(SVM)对偶问题推导 |
- 关键内容:Lagrange函数、强/弱对偶性、Slater条件 | |||
- 作业:对偶化一个简单约束优化问题 | |||
4 | KKT条件与约束优化 | - 目标:熟练应用KKT条件分析约束优化问题 | 神经网络训练中的约束优化建模 |
- 关键内容:互补松弛性、有效约束、几何解释 | |||
- 作业:推导线性规划问题的KKT条件 |
后4课时:算法实践
课时 | 主题 | 教学目标与关键内容 | 代码实践任务(Python示例) |
---|---|---|---|
5 | 梯度下降法实现 | - 目标:实现梯度下降法并分析步长影响 | 代码:逻辑回归参数优化 |
- 关键公式: x k + 1 = x k − α ∇ f ( x k ) x_{k+1} = x_k - \alpha \nabla f(x_k) xk+1=xk−α∇f(xk) | 任务:用梯度法训练线性回归模型 | ||
- 作业:对比固定步长与Armijo线搜索的收敛速度 | |||
6 | 牛顿法与拟牛顿法 | - 目标:理解二阶方法的优势与计算代价 | 代码:牛顿法求解二次规划 |
- 关键公式: x k + 1 = x k − ∇ 2 f ( x k ) − 1 ∇ f ( x k ) x_{k+1} = x_k - \nabla^2 f(x_k)^{-1} \nabla f(x_k) xk+1=xk−∇2f(xk)−1∇f(xk) | 任务:实现BFGS算法更新Hessian | ||
- 作业:对比梯度法与牛顿法在Rosenbrock函数上的性能 | |||
7 | 约束优化建模与求解 | - 目标:使用CVXPY或SciPy建模约束问题 | 代码:投资组合优化问题 |
- 关键工具:cvxpy.Problem.solve() 、scipy.optimize.minimize | 任务:最小化风险下的收益最大化 | ||
- 作业:用KKT条件验证求解器结果的正确性 | |||
8 | 综合项目:优化与机器学习 | - 目标:将优化算法应用于实际模型 | 代码:Adam优化器实现神经网络 |
- 关键内容:随机梯度下降(SGD)、动量法、自适应学习率 | 任务:训练MNIST分类器并调参 | ||
- 作业:分析不同优化器在训练损失曲线上的差异 |
特色设计
- 递进式实践:
- 从单变量函数优化(课时5)→ 多变量非凸优化(课时6)→ 带约束的工程问题(课时7)→ 深度学习模型(课时8)。
- 理论-代码对照:
- 每课时提供公式的代码对应片段(如梯度公式→自动微分实现)。
- 机器学习贯穿:
- 逻辑回归(课时1)、SVM对偶问题(课时3)、神经网络优化(课时8)强化理论与应用联系。
评估方式
- 理论作业(40%):最优性条件证明、对偶问题推导等;
- 编程任务(40%):算法实现与结果可视化;
- 综合项目(20%):优化算法在机器学习模型中的应用报告。
扩展资源
- 教材:Boyd《Convex Optimization》第1-5章;
- 工具:Jupyter Notebook、PyTorch自动微分库、CVXPY凸优化建模工具;
- 数据集:UCI机器学习库、MNIST手写数字数据集。
通过该教案,学生既能深入理解优化理论,又能通过代码实现掌握算法核心,最终在机器学习场景中灵活应用。
课时1:最优性条件
教学目标
- 理解无约束优化问题的必要与充分最优性条件;
- 掌握梯度为零(Fermat定理)与Hessian矩阵正定性的意义;
- 区分驻点、极值点与鞍点的差异;
- 应用最优性条件分析逻辑回归的损失函数最优解。
1. 无约束优化问题的数学描述
问题定义:
寻找函数
f
(
x
)
f(x)
f(x) 的极小值点,其中
x
∈
R
n
x \in \mathbb{R}^n
x∈Rn,无约束条件:
min
x
f
(
x
)
\min_{x} f(x)
xminf(x)
- 局部极小值:存在邻域 N ϵ ( x ∗ ) N_\epsilon(x^*) Nϵ(x∗),使得 f ( x ∗ ) ≤ f ( x ) f(x^*) \leq f(x) f(x∗)≤f(x) 对所有 x ∈ N ϵ ( x ∗ ) x \in N_\epsilon(x^*) x∈Nϵ(x∗) 成立。
- 全局极小值: f ( x ∗ ) ≤ f ( x ) f(x^*) \leq f(x) f(x∗)≤f(x) 对所有 x ∈ R n x \in \mathbb{R}^n x∈Rn 成立。
2. 一阶最优性条件:Fermat定理
定理内容:
若
x
∗
x^*
x∗ 是
f
(
x
)
f(x)
f(x) 的局部极值点,且
f
(
x
)
f(x)
f(x) 在
x
∗
x^*
x∗ 处可微,则:
∇
f
(
x
∗
)
=
0
\nabla f(x^*) = 0
∇f(x∗)=0
证明(单变量情况):
假设
x
∗
x^*
x∗ 是极小值点,由泰勒展开:
f
(
x
∗
+
h
)
=
f
(
x
∗
)
+
f
′
(
x
∗
)
h
+
o
(
h
)
f(x^* + h) = f(x^*) + f'(x^*)h + o(h)
f(x∗+h)=f(x∗)+f′(x∗)h+o(h)
当
h
→
0
h \to 0
h→0 时,若
f
′
(
x
∗
)
≠
0
f'(x^*) \neq 0
f′(x∗)=0,取
h
=
−
sign
(
f
′
(
x
∗
)
)
⋅
ϵ
h = -\text{sign}(f'(x^*)) \cdot \epsilon
h=−sign(f′(x∗))⋅ϵ,则
f
(
x
∗
+
h
)
<
f
(
x
∗
)
f(x^* + h) < f(x^*)
f(x∗+h)<f(x∗),矛盾。故
f
′
(
x
∗
)
=
0
f'(x^*) = 0
f′(x∗)=0。
3. 二阶最优性条件
必要条件
若 x ∗ x^* x∗ 是局部极小值点且 f ( x ) f(x) f(x) 二阶可微,则:
- ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇f(x∗)=0;
- Hessian矩阵 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) ∇2f(x∗) 半正定: d ⊤ ∇ 2 f ( x ∗ ) d ≥ 0 ∀ d ∈ R n d^\top \nabla^2 f(x^*) d \geq 0 \quad \forall d \in \mathbb{R}^n d⊤∇2f(x∗)d≥0∀d∈Rn。
充分条件
若 ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇f(x∗)=0 且 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) ∇2f(x∗) 正定,则 x ∗ x^* x∗ 是严格局部极小值点。
证明(多变量情况):
由泰勒展开:
f
(
x
∗
+
d
)
=
f
(
x
∗
)
+
∇
f
(
x
∗
)
⊤
d
+
1
2
d
⊤
∇
2
f
(
x
∗
)
d
+
o
(
∥
d
∥
2
)
f(x^* + d) = f(x^*) + \nabla f(x^*)^\top d + \frac{1}{2} d^\top \nabla^2 f(x^*) d + o(\|d\|^2)
f(x∗+d)=f(x∗)+∇f(x∗)⊤d+21d⊤∇2f(x∗)d+o(∥d∥2)
当
∇
f
(
x
∗
)
=
0
\nabla f(x^*) = 0
∇f(x∗)=0,若
∇
2
f
(
x
∗
)
\nabla^2 f(x^*)
∇2f(x∗) 正定,则存在
α
>
0
\alpha > 0
α>0 使得:
1
2
d
⊤
∇
2
f
(
x
∗
)
d
≥
α
∥
d
∥
2
\frac{1}{2} d^\top \nabla^2 f(x^*) d \geq \alpha \|d\|^2
21d⊤∇2f(x∗)d≥α∥d∥2
因此,当
∥
d
∥
\|d\|
∥d∥ 足够小时,
f
(
x
∗
+
d
)
>
f
(
x
∗
)
f(x^* + d) > f(x^*)
f(x∗+d)>f(x∗),即
x
∗
x^*
x∗ 为严格极小值点。
4. 驻点、鞍点与极值点的区别
- 驻点:满足 ∇ f ( x ) = 0 \nabla f(x) = 0 ∇f(x)=0 的点,可能是极小值、极大值或鞍点。
- 鞍点:Hessian矩阵既不正定也不负定(即存在正负特征值)。
示例1:鞍点分析
函数
f
(
x
,
y
)
=
x
2
−
y
2
f(x, y) = x^2 - y^2
f(x,y)=x2−y2:
- 梯度: ∇ f = [ 2 x , − 2 y ] ⊤ \nabla f = [2x, -2y]^\top ∇f=[2x,−2y]⊤,驻点为 ( 0 , 0 ) (0,0) (0,0);
- Hessian矩阵:
∇ 2 f = [ 2 0 0 − 2 ] \nabla^2 f = \begin{bmatrix} 2 & 0 \\ 0 & -2 \end{bmatrix} ∇2f=[200−2]
特征值为 2 2 2 和 − 2 -2 −2,故 ( 0 , 0 ) (0,0) (0,0) 是鞍点。
5. 典型示例与解答
示例2:二次函数的最优解
函数 f ( x ) = 1 2 x ⊤ Q x + b ⊤ x f(x) = \frac{1}{2}x^\top Q x + b^\top x f(x)=21x⊤Qx+b⊤x,其中 Q Q Q 对称正定:
- 梯度: ∇ f ( x ) = Q x + b \nabla f(x) = Qx + b ∇f(x)=Qx+b,令其为零得解 x ∗ = − Q − 1 b x^* = -Q^{-1}b x∗=−Q−1b;
- Hessian矩阵 Q Q Q 正定,故 x ∗ x^* x∗ 是全局极小值点。
数值案例:
设
Q
=
[
2
1
1
2
]
Q = \begin{bmatrix}2 & 1 \\ 1 & 2\end{bmatrix}
Q=[2112],
b
=
[
−
1
−
3
]
b = \begin{bmatrix}-1 \\ -3\end{bmatrix}
b=[−1−3],则:
x
∗
=
−
1
3
[
2
−
1
−
1
2
]
[
−
1
−
3
]
=
[
1
1
]
x^* = -\frac{1}{3} \begin{bmatrix}2 & -1 \\ -1 & 2\end{bmatrix} \begin{bmatrix}-1 \\ -3\end{bmatrix} = \begin{bmatrix}1 \\ 1\end{bmatrix}
x∗=−31[2−1−12][−1−3]=[11]
验证
∇
f
(
x
∗
)
=
0
\nabla f(x^*) = 0
∇f(x∗)=0,Hessian正定。
6. 机器学习案例:逻辑回归的最优解
逻辑回归损失函数(对数似然损失):
J
(
w
)
=
−
1
m
∑
i
=
1
m
[
y
i
log
σ
(
w
⊤
x
i
)
+
(
1
−
y
i
)
log
(
1
−
σ
(
w
⊤
x
i
)
)
]
J(w) = -\frac{1}{m} \sum_{i=1}^m \left[ y_i \log \sigma(w^\top x_i) + (1-y_i) \log (1-\sigma(w^\top x_i)) \right]
J(w)=−m1i=1∑m[yilogσ(w⊤xi)+(1−yi)log(1−σ(w⊤xi))]
其中
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z) = \frac{1}{1+e^{-z}}
σ(z)=1+e−z1。
最优性条件应用:
- 梯度计算:
∇ J ( w ) = 1 m ∑ i = 1 m ( σ ( w ⊤ x i ) − y i ) x i \nabla J(w) = \frac{1}{m} \sum_{i=1}^m (\sigma(w^\top x_i) - y_i) x_i ∇J(w)=m1i=1∑m(σ(w⊤xi)−yi)xi - 最优解条件:令 ∇ J ( w ) = 0 \nabla J(w) = 0 ∇J(w)=0,方程无闭式解,需用梯度下降法迭代求解。
- 凸性保证:Hessian矩阵 ∇ 2 J ( w ) \nabla^2 J(w) ∇2J(w) 半正定(证明略),因此局部极小即全局极小。
7. 课后作业
- 理论证明:证明若 f ( x ) f(x) f(x) 是凸函数且可微,则满足 ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇f(x∗)=0 的点 x ∗ x^* x∗ 是全局极小值点。
- 编程任务:用Python实现梯度下降法求解 f ( x ) = x 2 + 3 x + 4 f(x) = x^2 + 3x + 4 f(x)=x2+3x+4 的最小值,并可视化迭代过程。
关键点总结
- Fermat定理:极值点处梯度必为零;
- 二阶条件:Hessian矩阵正定性决定极值类型;
- 鞍点危害:在高维非凸优化(如神经网络)中需警惕;
- 机器学习关联:逻辑回归的凸性保证全局最优解存在。
通过理论推导与实例结合,学生可深入理解最优性条件的数学本质及其在算法中的应用。
课时2:凸集与凸函数
教学目标
- 掌握凸集与凸函数的定义及判定方法;
- 理解Jensen不等式与保凸运算的规则;
- 应用凸性分析支持向量机(SVM)的优化问题;
- 能独立证明常见函数(如线性函数、二次函数)的凸性。
1. 凸集的定义与判定
定义:
集合
C
⊆
R
n
C \subseteq \mathbb{R}^n
C⊆Rn 是凸集,若对任意
x
1
,
x
2
∈
C
x_1, x_2 \in C
x1,x2∈C 和
θ
∈
[
0
,
1
]
\theta \in [0,1]
θ∈[0,1],有:
θ
x
1
+
(
1
−
θ
)
x
2
∈
C
\theta x_1 + (1-\theta) x_2 \in C
θx1+(1−θ)x2∈C
几何意义:集合中任意两点的连线仍在集合内。
示例1:凸集与非凸集
- 凸集:超球 { x ∣ ∥ x ∥ 2 ≤ r } \{x \mid \|x\|_2 \leq r\} {x∣∥x∥2≤r}、仿射集 { x ∣ A x = b } \{x \mid Ax = b\} {x∣Ax=b}。
- 非凸集:环形区域 { x ∣ 1 < ∥ x ∥ 2 < 2 } \{x \mid 1 < \|x\|_2 < 2\} {x∣1<∥x∥2<2}。
判定方法:
通过定义直接验证,或利用凸集运算性质:
- 任意多个凸集的交集仍是凸集;
- 仿射变换(平移、旋转、缩放)保持凸性。
2. 凸函数的定义与判定
定义:
函数
f
:
R
n
→
R
f: \mathbb{R}^n \to \mathbb{R}
f:Rn→R 是凸函数,若对任意
x
,
y
∈
dom
(
f
)
x, y \in \text{dom}(f)
x,y∈dom(f) 和
θ
∈
[
0
,
1
]
\theta \in [0,1]
θ∈[0,1],有:
f
(
θ
x
+
(
1
−
θ
)
y
)
≤
θ
f
(
x
)
+
(
1
−
θ
)
f
(
y
)
f(\theta x + (1-\theta) y) \leq \theta f(x) + (1-\theta) f(y)
f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y)
严格凸:当不等式严格成立(
x
≠
y
x \neq y
x=y 且
θ
∈
(
0
,
1
)
\theta \in (0,1)
θ∈(0,1))。
判定方法
- 一阶条件(可微函数):
f ( y ) ≥ f ( x ) + ∇ f ( x ) ⊤ ( y − x ) ∀ x , y ∈ dom ( f ) f(y) \geq f(x) + \nabla f(x)^\top (y - x) \quad \forall x, y \in \text{dom}(f) f(y)≥f(x)+∇f(x)⊤(y−x)∀x,y∈dom(f) - 二阶条件(二阶可微函数):
Hessian矩阵 ∇ 2 f ( x ) \nabla^2 f(x) ∇2f(x) 半正定,即:
d ⊤ ∇ 2 f ( x ) d ≥ 0 ∀ d ∈ R n d^\top \nabla^2 f(x) d \geq 0 \quad \forall d \in \mathbb{R}^n d⊤∇2f(x)d≥0∀d∈Rn
3. Jensen不等式与保凸运算
Jensen不等式
若
f
f
f 是凸函数,
x
i
∈
dom
(
f
)
x_i \in \text{dom}(f)
xi∈dom(f),
θ
i
≥
0
\theta_i \geq 0
θi≥0 且
∑
θ
i
=
1
\sum \theta_i = 1
∑θi=1,则:
f
(
∑
i
=
1
k
θ
i
x
i
)
≤
∑
i
=
1
k
θ
i
f
(
x
i
)
f\left( \sum_{i=1}^k \theta_i x_i \right) \leq \sum_{i=1}^k \theta_i f(x_i)
f(i=1∑kθixi)≤i=1∑kθif(xi)
应用:证明熵函数、指数函数的凸性。
保凸运算
- 仿射变换:若 f ( x ) f(x) f(x) 凸,则 g ( x ) = f ( A x + b ) g(x) = f(Ax + b) g(x)=f(Ax+b) 凸;
- 逐点极大:若 f 1 , f 2 f_1, f_2 f1,f2 凸,则 h ( x ) = max { f 1 ( x ) , f 2 ( x ) } h(x) = \max\{f_1(x), f_2(x)\} h(x)=max{f1(x),f2(x)} 凸;
- 非负加权和:若 f i f_i fi 凸且 α i ≥ 0 \alpha_i \geq 0 αi≥0,则 ∑ α i f i ( x ) \sum \alpha_i f_i(x) ∑αifi(x) 凸。
示例2:逐点极大函数的凸性证明
设
f
1
,
f
2
f_1, f_2
f1,f2 为凸函数,定义
h
(
x
)
=
max
{
f
1
(
x
)
,
f
2
(
x
)
}
h(x) = \max\{f_1(x), f_2(x)\}
h(x)=max{f1(x),f2(x)},对任意
x
,
y
x, y
x,y 和
θ
∈
[
0
,
1
]
\theta \in [0,1]
θ∈[0,1],有:
h
(
θ
x
+
(
1
−
θ
)
y
)
=
max
{
f
1
(
θ
x
+
(
1
−
θ
)
y
)
,
f
2
(
θ
x
+
(
1
−
θ
)
y
)
}
≤
max
{
θ
f
1
(
x
)
+
(
1
−
θ
)
f
1
(
y
)
,
θ
f
2
(
x
)
+
(
1
−
θ
)
f
2
(
y
)
}
≤
θ
max
{
f
1
(
x
)
,
f
2
(
x
)
}
+
(
1
−
θ
)
max
{
f
1
(
y
)
,
f
2
(
y
)
}
=
θ
h
(
x
)
+
(
1
−
θ
)
h
(
y
)
h(\theta x + (1-\theta)y) = \max\{f_1(\theta x + (1-\theta)y), f_2(\theta x + (1-\theta)y)\} \leq \max\{\theta f_1(x) + (1-\theta)f_1(y), \theta f_2(x) + (1-\theta)f_2(y)\} \leq \theta \max\{f_1(x), f_2(x)\} + (1-\theta)\max\{f_1(y), f_2(y)\} = \theta h(x) + (1-\theta)h(y)
h(θx+(1−θ)y)=max{f1(θx+(1−θ)y),f2(θx+(1−θ)y)}≤max{θf1(x)+(1−θ)f1(y),θf2(x)+(1−θ)f2(y)}≤θmax{f1(x),f2(x)}+(1−θ)max{f1(y),f2(y)}=θh(x)+(1−θ)h(y)
4. 典型示例与解答
示例3:线性函数的凸性
函数 f ( x ) = a ⊤ x + b f(x) = a^\top x + b f(x)=a⊤x+b 是凸函数:
- 一阶条件:对任意 x , y x, y x,y,有 f ( y ) = f ( x ) + a ⊤ ( y − x ) f(y) = f(x) + a^\top (y - x) f(y)=f(x)+a⊤(y−x),即满足 f ( y ) = f ( x ) + ∇ f ( x ) ⊤ ( y − x ) f(y) = f(x) + \nabla f(x)^\top (y - x) f(y)=f(x)+∇f(x)⊤(y−x),符合凸函数定义。
- 二阶条件:Hessian矩阵 ∇ 2 f ( x ) = 0 \nabla^2 f(x) = 0 ∇2f(x)=0,半正定。
示例4:二次函数的凸性判定
函数 f ( x ) = x ⊤ Q x + b ⊤ x + c f(x) = x^\top Q x + b^\top x + c f(x)=x⊤Qx+b⊤x+c,其中 Q Q Q 对称:
- 梯度: ∇ f ( x ) = 2 Q x + b \nabla f(x) = 2Qx + b ∇f(x)=2Qx+b;
- Hessian矩阵: ∇ 2 f ( x ) = 2 Q \nabla^2 f(x) = 2Q ∇2f(x)=2Q;
- 凸性条件:当且仅当 Q Q Q 半正定时, f ( x ) f(x) f(x) 是凸函数。
数值案例:
设
Q
=
[
2
1
1
3
]
Q = \begin{bmatrix} 2 & 1 \\ 1 & 3 \end{bmatrix}
Q=[2113],其特征值为
λ
1
≈
1.38
\lambda_1 \approx 1.38
λ1≈1.38,
λ
2
≈
3.62
\lambda_2 \approx 3.62
λ2≈3.62,均正定,故
f
(
x
)
f(x)
f(x) 是严格凸函数。
5. 机器学习案例:SVM中的凸性保证
SVM优化问题:
min
w
,
b
1
2
∥
w
∥
2
s.t.
y
i
(
w
⊤
x
i
+
b
)
≥
1
(
i
=
1
,
…
,
m
)
\min_{w, b} \frac{1}{2} \|w\|^2 \quad \text{s.t.} \quad y_i(w^\top x_i + b) \geq 1 \quad (i=1,\dots,m)
w,bmin21∥w∥2s.t.yi(w⊤xi+b)≥1(i=1,…,m)
凸性分析:
- 目标函数: 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21∥w∥2 是凸函数(二次函数,Hessian正定);
- 约束条件:线性不等式 y i ( w ⊤ x i + b ) ≥ 1 y_i(w^\top x_i + b) \geq 1 yi(w⊤xi+b)≥1 定义凸集;
- 结论:SVM是凸优化问题,局部解即全局解,且对偶问题可通过凸性保证强对偶性成立。
6. 课后作业
- 理论证明:
- 证明仿射函数 f ( x ) = a ⊤ x + b f(x) = a^\top x + b f(x)=a⊤x+b 既是凸函数又是凹函数;
- 验证函数 f ( x , y ) = e x + y f(x, y) = e^{x+y} f(x,y)=ex+y 的凸性(使用二阶条件)。
- 编程任务:
- 用Python绘制二元凸函数 f ( x , y ) = x 2 + x y + y 2 f(x, y) = x^2 + xy + y^2 f(x,y)=x2+xy+y2 的等高线图,并标注驻点。
关键点总结
- 凸集:任意两点连线在集合内;
- 凸函数:Jensen不等式成立或Hessian半正定;
- 保凸运算:仿射变换、逐点极大、非负加权和;
- SVM关联:凸性确保全局最优解,避免陷入局部极值。
通过理论推导与实例结合,学生可掌握凸性分析的核心工具,并为后续约束优化与算法实现奠定基础。
课时3:拉格朗日对偶理论
教学目标
- 掌握拉格朗日函数与对偶问题的构建方法;
- 理解弱对偶性与强对偶性的条件(如Slater条件);
- 能推导支持向量机(SVM)的对偶问题;
- 分析对偶问题在优化中的实际意义(如降低计算复杂度)。
1. 原始问题与拉格朗日函数
标准形式优化问题:
min
x
f
(
x
)
s.t.
g
i
(
x
)
≤
0
(
i
=
1
,
…
,
m
)
h
j
(
x
)
=
0
(
j
=
1
,
…
,
p
)
\begin{aligned} \min_{x} \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \leq 0 \quad (i=1,\dots,m) \\ & h_j(x) = 0 \quad (j=1,\dots,p) \end{aligned}
xmins.t.f(x)gi(x)≤0(i=1,…,m)hj(x)=0(j=1,…,p)
拉格朗日函数:引入乘子
λ
i
≥
0
\lambda_i \geq 0
λi≥0(不等式约束)和
ν
j
\nu_j
νj(等式约束):
L
(
x
,
λ
,
ν
)
=
f
(
x
)
+
∑
i
=
1
m
λ
i
g
i
(
x
)
+
∑
j
=
1
p
ν
j
h
j
(
x
)
L(x, \lambda, \nu) = f(x) + \sum_{i=1}^m \lambda_i g_i(x) + \sum_{j=1}^p \nu_j h_j(x)
L(x,λ,ν)=f(x)+i=1∑mλigi(x)+j=1∑pνjhj(x)
2. 对偶函数与对偶问题
对偶函数:
g
(
λ
,
ν
)
=
inf
x
L
(
x
,
λ
,
ν
)
g(\lambda, \nu) = \inf_{x} L(x, \lambda, \nu)
g(λ,ν)=xinfL(x,λ,ν)
对偶问题:
max
λ
,
ν
g
(
λ
,
ν
)
s.t.
λ
i
≥
0
(
i
=
1
,
…
,
m
)
\begin{aligned} \max_{\lambda, \nu} \quad & g(\lambda, \nu) \\ \text{s.t.} \quad & \lambda_i \geq 0 \quad (i=1,\dots,m) \end{aligned}
λ,νmaxs.t.g(λ,ν)λi≥0(i=1,…,m)
弱对偶性:对任意可行
λ
≥
0
\lambda \geq 0
λ≥0,有
g
(
λ
,
ν
)
≤
f
(
x
)
(原问题最优值)
g(\lambda, \nu) \leq f(x) \quad \text{(原问题最优值)}
g(λ,ν)≤f(x)(原问题最优值)
强对偶性:若原问题为凸且满足Slater条件(存在严格可行解),则对偶间隙为零:
max
λ
≥
0
,
ν
g
(
λ
,
ν
)
=
min
x
f
(
x
)
\max_{\lambda \geq 0, \nu} g(\lambda, \nu) = \min_{x} f(x)
λ≥0,νmaxg(λ,ν)=xminf(x)
3. Slater条件与强对偶性证明
Slater条件:存在一点
x
0
x_0
x0,使得:
g
i
(
x
0
)
<
0
(
∀
i
)
,
h
j
(
x
0
)
=
0
(
∀
j
)
g_i(x_0) < 0 \quad (\forall i), \quad h_j(x_0) = 0 \quad (\forall j)
gi(x0)<0(∀i),hj(x0)=0(∀j)
几何解释:原问题的可行域与目标函数下水平集存在非空交集,确保对偶问题可达原问题最优。
4. 典型示例与解答
示例1:二次规划问题的对偶推导
原问题:
min
x
x
2
s.t.
x
≥
1
\begin{aligned} \min_{x} \quad & x^2 \\ \text{s.t.} \quad & x \geq 1 \end{aligned}
xmins.t.x2x≥1
拉格朗日函数:
L
(
x
,
λ
)
=
x
2
+
λ
(
1
−
x
)
L(x, \lambda) = x^2 + \lambda (1 - x)
L(x,λ)=x2+λ(1−x)
对偶函数:
g
(
λ
)
=
inf
x
(
x
2
−
λ
x
+
λ
)
g(\lambda) = \inf_{x} \left( x^2 - \lambda x + \lambda \right)
g(λ)=xinf(x2−λx+λ)
对
x
x
x 求导得驻点
x
∗
=
λ
2
x^* = \frac{\lambda}{2}
x∗=2λ,代入得:
g
(
λ
)
=
−
λ
2
4
+
λ
g(\lambda) = -\frac{\lambda^2}{4} + \lambda
g(λ)=−4λ2+λ
对偶问题:
max
λ
≥
0
(
−
λ
2
4
+
λ
)
\max_{\lambda \geq 0} \left( -\frac{\lambda^2}{4} + \lambda \right)
λ≥0max(−4λ2+λ)
求导得最优解
λ
∗
=
2
\lambda^* = 2
λ∗=2,对应原问题最优解
x
∗
=
1
x^* = 1
x∗=1,验证强对偶性成立。
5. 机器学习案例:SVM对偶问题推导
SVM原问题(硬间隔):
min
w
,
b
1
2
∥
w
∥
2
s.t.
y
i
(
w
⊤
x
i
+
b
)
≥
1
(
i
=
1
,
…
,
m
)
\begin{aligned} \min_{w, b} \quad & \frac{1}{2} \|w\|^2 \\ \text{s.t.} \quad & y_i(w^\top x_i + b) \geq 1 \quad (i=1,\dots,m) \end{aligned}
w,bmins.t.21∥w∥2yi(w⊤xi+b)≥1(i=1,…,m)
拉格朗日函数:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
m
α
i
[
y
i
(
w
⊤
x
i
+
b
)
−
1
]
L(w, b, \alpha) = \frac{1}{2} \|w\|^2 - \sum_{i=1}^m \alpha_i \left[ y_i(w^\top x_i + b) - 1 \right]
L(w,b,α)=21∥w∥2−i=1∑mαi[yi(w⊤xi+b)−1]
对偶函数:
- 对
w
w
w 和
b
b
b 求导并置零:
w = ∑ i = 1 m α i y i x i , ∑ i = 1 m α i y i = 0 w = \sum_{i=1}^m \alpha_i y_i x_i, \quad \sum_{i=1}^m \alpha_i y_i = 0 w=i=1∑mαiyixi,i=1∑mαiyi=0 - 代入拉格朗日函数得对偶问题:
max α ≥ 0 ( ∑ i = 1 m α i − 1 2 ∑ i , j α i α j y i y j x i ⊤ x j ) \max_{\alpha \geq 0} \left( \sum_{i=1}^m \alpha_i - \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j x_i^\top x_j \right) α≥0max(i=1∑mαi−21i,j∑αiαjyiyjxi⊤xj)
KKT条件:
- 互补松弛性: α i [ y i ( w ⊤ x i + b ) − 1 ] = 0 \alpha_i [y_i(w^\top x_i + b) - 1] = 0 αi[yi(w⊤xi+b)−1]=0
- 支持向量对应 α i > 0 \alpha_i > 0 αi>0,即 y i ( w ⊤ x i + b ) = 1 y_i(w^\top x_i + b) = 1 yi(w⊤xi+b)=1。
6. 课后作业
- 理论证明:
- 验证函数 f ( x ) = x 1 2 + x 2 2 f(x) = x_1^2 + x_2^2 f(x)=x12+x22 在约束 x 1 + x 2 ≥ 2 x_1 + x_2 \geq 2 x1+x2≥2 下的强对偶性;
- 证明Slater条件在凸优化问题中的必要性。
- 编程任务:
- 用Python实现简单线性SVM的对偶问题求解,可视化支持向量与分类超平面。
关键点总结
- 对偶函数:通过极小化拉格朗日函数得到原问题的下界;
- 强对偶性:凸问题+Slater条件保证对偶无间隙;
- SVM对偶优势:核技巧(替换 x i ⊤ x j x_i^\top x_j xi⊤xj 为核函数 K ( x i , x j ) K(x_i, x_j) K(xi,xj));
- 应用意义:对偶问题常更易求解,或揭示问题结构(如支持向量)。
通过理论推导与实例结合,学生将掌握对偶理论的核心思想,并为后续约束优化算法(如内点法)奠定基础。
课时4:KKT条件与约束优化
教学目标
- 掌握KKT条件的数学形式及其应用场景;
- 理解互补松弛性与有效约束的几何意义;
- 能独立推导线性规划问题的KKT条件;
- 分析神经网络训练中约束优化的实际案例。
1. 约束优化问题的一般形式
问题定义:
min
x
f
(
x
)
s.t.
g
i
(
x
)
≤
0
(
i
=
1
,
…
,
m
)
h
j
(
x
)
=
0
(
j
=
1
,
…
,
p
)
\begin{aligned} \min_{x} \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \leq 0 \quad (i=1,\dots,m) \\ & h_j(x) = 0 \quad (j=1,\dots,p) \end{aligned}
xmins.t.f(x)gi(x)≤0(i=1,…,m)hj(x)=0(j=1,…,p)
- 不等式约束 g i ( x ) ≤ 0 g_i(x) \leq 0 gi(x)≤0,等式约束 h j ( x ) = 0 h_j(x) = 0 hj(x)=0。
2. KKT条件的推导
必要条件(当原问题满足约束规格,如Slater条件时):
若 x ∗ x^* x∗ 是局部最优解,则存在拉格朗日乘子 λ i ≥ 0 \lambda_i \geq 0 λi≥0 和 ν j \nu_j νj,使得:
- 平稳性条件:
∇ f ( x ∗ ) + ∑ i = 1 m λ i ∇ g i ( x ∗ ) + ∑ j = 1 p ν j ∇ h j ( x ∗ ) = 0 \nabla f(x^*) + \sum_{i=1}^m \lambda_i \nabla g_i(x^*) + \sum_{j=1}^p \nu_j \nabla h_j(x^*) = 0 ∇f(x∗)+i=1∑mλi∇gi(x∗)+j=1∑pνj∇hj(x∗)=0 - 原始可行性:
g i ( x ∗ ) ≤ 0 , h j ( x ∗ ) = 0 ( ∀ i , j ) g_i(x^*) \leq 0, \quad h_j(x^*) = 0 \quad (\forall i,j) gi(x∗)≤0,hj(x∗)=0(∀i,j) - 对偶可行性:
λ i ≥ 0 ( ∀ i ) \lambda_i \geq 0 \quad (\forall i) λi≥0(∀i) - 互补松弛性:
λ i g i ( x ∗ ) = 0 ( ∀ i ) \lambda_i g_i(x^*) = 0 \quad (\forall i) λigi(x∗)=0(∀i)
几何解释:
- 在最优解处,目标函数梯度是约束梯度的非负线性组合。
- 互补松弛性表明,非活跃约束( g i ( x ∗ ) < 0 g_i(x^*) < 0 gi(x∗)<0)对应的 λ i = 0 \lambda_i = 0 λi=0。
3. 典型示例与解答
示例1:线性规划问题的KKT条件
原问题:
min
x
c
⊤
x
s.t.
A
x
≤
b
(
A
∈
R
m
×
n
,
b
∈
R
m
)
\begin{aligned} \min_{x} \quad & c^\top x \\ \text{s.t.} \quad & Ax \leq b \quad (A \in \mathbb{R}^{m \times n}, b \in \mathbb{R}^m) \end{aligned}
xmins.t.c⊤xAx≤b(A∈Rm×n,b∈Rm)
拉格朗日函数:
L
(
x
,
λ
)
=
c
⊤
x
+
λ
⊤
(
A
x
−
b
)
L(x, \lambda) = c^\top x + \lambda^\top (Ax - b)
L(x,λ)=c⊤x+λ⊤(Ax−b)
KKT条件:
- 平稳性: c + A ⊤ λ = 0 c + A^\top \lambda = 0 c+A⊤λ=0;
- 原始可行: A x ≤ b Ax \leq b Ax≤b;
- 对偶可行: λ ≥ 0 \lambda \geq 0 λ≥0;
- 互补松弛: λ i ( A i x − b i ) = 0 ( ∀ i ) \lambda_i (A_i x - b_i) = 0 \quad (\forall i) λi(Aix−bi)=0(∀i)。
数值案例:
设
c
=
[
2
3
]
c = \begin{bmatrix}2 \\ 3\end{bmatrix}
c=[23],
A
=
[
−
1
0
0
−
1
]
A = \begin{bmatrix}-1 & 0 \\ 0 & -1\end{bmatrix}
A=[−100−1],
b
=
[
0
0
]
b = \begin{bmatrix}0 \\ 0\end{bmatrix}
b=[00],即约束
x
1
≥
0
x_1 \geq 0
x1≥0,
x
2
≥
0
x_2 \geq 0
x2≥0。
- 最优解显然为 x ∗ = [ 0 , 0 ] ⊤ x^* = [0, 0]^\top x∗=[0,0]⊤;
- 代入KKT条件:
- c + A ⊤ λ = [ 2 − λ 1 3 − λ 2 ] = 0 c + A^\top \lambda = \begin{bmatrix}2 - \lambda_1 \\ 3 - \lambda_2\end{bmatrix} = 0 c+A⊤λ=[2−λ13−λ2]=0 ⇒ λ = [ 2 , 3 ] ⊤ ≥ 0 \lambda = [2, 3]^\top \geq 0 λ=[2,3]⊤≥0,满足所有条件。
4. 机器学习案例:神经网络训练中的约束优化
问题描述:
在神经网络中施加权重约束(如L2范数限制),防止过拟合:
min
W
1
m
∑
i
=
1
m
L
(
y
i
,
f
(
x
i
;
W
)
)
s.t.
∥
W
∥
2
2
≤
C
\begin{aligned} \min_{W} \quad & \frac{1}{m} \sum_{i=1}^m \mathcal{L}(y_i, f(x_i; W)) \\ \text{s.t.} \quad & \|W\|_2^2 \leq C \end{aligned}
Wmins.t.m1i=1∑mL(yi,f(xi;W))∥W∥22≤C
KKT条件应用:
- 拉格朗日函数:
L ( W , λ ) = 1 m ∑ L ( y i , f ( x i ; W ) ) + λ ( ∥ W ∥ 2 2 − C ) L(W, \lambda) = \frac{1}{m} \sum \mathcal{L}(y_i, f(x_i; W)) + \lambda (\|W\|_2^2 - C) L(W,λ)=m1∑L(yi,f(xi;W))+λ(∥W∥22−C) - 平稳性条件:
∇ W L + 2 λ W = 0 ⇒ W = − ∇ W L 2 λ \nabla_W \mathcal{L} + 2\lambda W = 0 \quad \Rightarrow \quad W = -\frac{\nabla_W \mathcal{L}}{2\lambda} ∇WL+2λW=0⇒W=−2λ∇WL - 互补松弛性:
- 若 ∥ W ∥ 2 2 < C \|W\|_2^2 < C ∥W∥22<C,则 λ = 0 \lambda = 0 λ=0,退化为无约束问题;
- 若 ∥ W ∥ 2 2 = C \|W\|_2^2 = C ∥W∥22=C,需通过调整 λ \lambda λ 满足梯度条件。
5. 课后作业
- 理论证明:
- 证明在凸优化问题中,若Slater条件成立,则KKT条件是最优解的充要条件。
- 编程任务:
- 用Python求解带约束的二次规划问题:
min x 1 2 + x 2 2 + x 1 x 2 s.t. x 1 + x 2 ≥ 1 x 1 , x 2 ≥ 0 \begin{aligned} \min \quad & x_1^2 + x_2^2 + x_1 x_2 \\ \text{s.t.} \quad & x_1 + x_2 \geq 1 \\ & x_1, x_2 \geq 0 \end{aligned} mins.t.x12+x22+x1x2x1+x2≥1x1,x2≥0
验证解是否满足KKT条件。
- 用Python求解带约束的二次规划问题:
关键点总结
- KKT条件:约束优化的核心工具,结合梯度、可行性与互补性;
- 互补松弛性:区分活跃与非活跃约束,简化问题规模;
- 实际应用:从线性规划到深度学习,约束控制模型行为;
- 凸问题特性:KKT条件在凸性+Slater条件下保证全局最优。
通过理论推导与实例结合,学生将深入理解约束优化的数学本质,并为复杂模型设计提供理论支持。
课时5:梯度下降法实现
教学目标
- 掌握梯度下降法的迭代公式与步长选择策略;
- 实现梯度下降法求解线性回归与逻辑回归参数;
- 分析固定步长与自适应步长(Armijo准则)的收敛特性;
- 理解梯度下降法在机器学习中的实际应用场景。
1. 梯度下降法原理与公式推导
基本迭代公式
目标:求解无约束优化问题
min
x
f
(
x
)
\min_x f(x)
minxf(x),迭代更新为:
x
k
+
1
=
x
k
−
α
k
∇
f
(
x
k
)
x_{k+1} = x_k - \alpha_k \nabla f(x_k)
xk+1=xk−αk∇f(xk)
- α k \alpha_k αk:步长(学习率);
- ∇ f ( x k ) \nabla f(x_k) ∇f(xk):当前点的梯度方向。
步长选择策略
- 固定步长: α k = α \alpha_k = \alpha αk=α(需满足收敛条件 α < 2 L \alpha < \frac{2}{L} α<L2, L L L 为梯度 Lipschitz 常数)。
- Armijo线搜索:自适应选择步长,确保函数值充分下降:
f ( x k − α ∇ f ( x k ) ) ≤ f ( x k ) − c α ∥ ∇ f ( x k ) ∥ 2 ( c ∈ ( 0 , 1 ) ) f(x_k - \alpha \nabla f(x_k)) \leq f(x_k) - c \alpha \|\nabla f(x_k)\|^2 \quad (c \in (0,1)) f(xk−α∇f(xk))≤f(xk)−cα∥∇f(xk)∥2(c∈(0,1))
2. 典型示例与解答
示例1:二次函数的最小化
目标函数
f
(
x
)
=
x
2
+
3
x
+
4
f(x) = x^2 + 3x + 4
f(x)=x2+3x+4,其梯度为
∇
f
(
x
)
=
2
x
+
3
\nabla f(x) = 2x + 3
∇f(x)=2x+3。
迭代过程:
- 初始值:设 x 0 = 0 x_0 = 0 x0=0,步长 α = 0.1 \alpha = 0.1 α=0.1。
- 迭代计算:
x 1 = x 0 − 0.1 ⋅ ( 2 ⋅ 0 + 3 ) = − 0.3 x 2 = − 0.3 − 0.1 ⋅ ( 2 ⋅ ( − 0.3 ) + 3 ) = − 0.3 − 0.24 = − 0.54 ⋮ x k → x ∗ = − 1.5 ( 解析解为驻点 x ∗ = − 1.5 ) \begin{aligned} x_1 &= x_0 - 0.1 \cdot (2 \cdot 0 + 3) = -0.3 \\ x_2 &= -0.3 - 0.1 \cdot (2 \cdot (-0.3) + 3) = -0.3 - 0.24 = -0.54 \\ &\vdots \\ x_k &\to x^* = -1.5 \quad (\text{解析解为驻点 } x^* = -1.5) \end{aligned} x1x2xk=x0−0.1⋅(2⋅0+3)=−0.3=−0.3−0.1⋅(2⋅(−0.3)+3)=−0.3−0.24=−0.54⋮→x∗=−1.5(解析解为驻点 x∗=−1.5)
可视化:绘制 f ( x ) f(x) f(x) 曲线与迭代点序列,显示向最小值点收敛路径。
示例2:Armijo准则实现
对
f
(
x
)
=
x
2
f(x) = x^2
f(x)=x2,初始点
x
0
=
2
x_0 = 2
x0=2,参数
c
=
0.5
c = 0.5
c=0.5,初始步长
α
0
=
1
\alpha_0 = 1
α0=1。
迭代步骤:
- 检查Armijo条件:
f ( x 0 − α 0 ∇ f ( x 0 ) ) = ( 2 − 1 ⋅ 4 ) 2 = 4 , f ( x 0 ) − c α 0 ∥ ∇ f ( x 0 ) ∥ 2 = 4 − 0.5 ⋅ 1 ⋅ 16 = − 4 f(x_0 - \alpha_0 \nabla f(x_0)) = (2 - 1 \cdot 4)^2 = 4, \quad f(x_0) - c \alpha_0 \|\nabla f(x_0)\|^2 = 4 - 0.5 \cdot 1 \cdot 16 = -4 f(x0−α0∇f(x0))=(2−1⋅4)2=4,f(x0)−cα0∥∇f(x0)∥2=4−0.5⋅1⋅16=−4
不满足条件,缩小步长 α = β α \alpha = \beta \alpha α=βα(设 β = 0.5 \beta = 0.5 β=0.5),直至满足条件。 - 最终收敛步长 α = 0.25 \alpha = 0.25 α=0.25,迭代至 x ∗ = 0 x^* = 0 x∗=0。
3. 机器学习案例:逻辑回归参数优化
逻辑回归模型:
预测函数
h
θ
(
x
)
=
σ
(
θ
⊤
x
)
h_\theta(x) = \sigma(\theta^\top x)
hθ(x)=σ(θ⊤x),损失函数(交叉熵):
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
i
log
h
θ
(
x
i
)
+
(
1
−
y
i
)
log
(
1
−
h
θ
(
x
i
)
)
]
J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y_i \log h_\theta(x_i) + (1-y_i) \log (1 - h_\theta(x_i)) \right]
J(θ)=−m1i=1∑m[yiloghθ(xi)+(1−yi)log(1−hθ(xi))]
梯度计算:
∇
θ
J
(
θ
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
x
i
\nabla_\theta J(\theta) = \frac{1}{m} \sum_{i=1}^m (h_\theta(x_i) - y_i) x_i
∇θJ(θ)=m1i=1∑m(hθ(xi)−yi)xi
梯度下降迭代步骤(Python伪代码):
def gradient_descent(X, y, theta_init, alpha, max_iters):
theta = theta_init
for _ in range(max_iters):
h = sigmoid(X @ theta) # 计算预测概率
gradient = X.T @ (h - y) / len(y) # 计算梯度
theta -= alpha * gradient # 参数更新
return theta
实验任务:
- 使用Iris数据集二分类,可视化梯度下降过程中损失函数下降曲线。
- 对比固定步长 α = 0.1 \alpha = 0.1 α=0.1 与Armijo步长的收敛速度。
4. 课后作业
- 理论证明:
- 证明梯度下降法在固定步长 α < 2 L \alpha < \frac{2}{L} α<L2 时,函数值单调下降(利用泰勒展开)。
- 编程任务:
- 实现梯度下降法求解线性回归问题 min w ∥ X w − y ∥ 2 \min_w \|Xw - y\|^2 minw∥Xw−y∥2,并可视化不同步长下的收敛轨迹。
- 在MNIST数据集上,用梯度下降法训练逻辑回归模型,记录训练集准确率随迭代次数的变化。
关键点总结
- 梯度方向:函数下降最快的局部方向;
- 步长选择:固定步长需满足Lipschitz条件,自适应步长提升鲁棒性;
- 机器学习应用:逻辑回归、线性回归等模型的参数优化基础;
- 收敛性:凸函数下梯度下降法保证全局收敛,非凸函数可能陷入局部极小。
通过理论推导与代码实践,学生将掌握梯度下降法的实现细节,并理解其在机器学习中的核心地位。
课时6:牛顿法与拟牛顿法
教学目标
- 掌握牛顿法的迭代公式及其二阶收敛性原理;
- 理解拟牛顿法(BFGS、DFP)的核心思想与更新规则;
- 实现牛顿法求解二次规划问题;
- 分析牛顿法在非凸优化中的局限性及改进策略。
1. 牛顿法的原理与公式推导
二阶泰勒展开与极值条件
目标函数
f
(
x
)
f(x)
f(x) 在
x
k
x_k
xk 处的二阶泰勒展开:
f
(
x
)
≈
f
(
x
k
)
+
∇
f
(
x
k
)
⊤
(
x
−
x
k
)
+
1
2
(
x
−
x
k
)
⊤
∇
2
f
(
x
k
)
(
x
−
x
k
)
f(x) \approx f(x_k) + \nabla f(x_k)^\top (x - x_k) + \frac{1}{2} (x - x_k)^\top \nabla^2 f(x_k) (x - x_k)
f(x)≈f(xk)+∇f(xk)⊤(x−xk)+21(x−xk)⊤∇2f(xk)(x−xk)
对近似函数求极小值点,令导数为零:
∇
f
(
x
k
)
+
∇
2
f
(
x
k
)
(
x
−
x
k
)
=
0
⇒
x
k
+
1
=
x
k
−
∇
2
f
(
x
k
)
−
1
∇
f
(
x
k
)
\nabla f(x_k) + \nabla^2 f(x_k) (x - x_k) = 0 \quad \Rightarrow \quad x_{k+1} = x_k - \nabla^2 f(x_k)^{-1} \nabla f(x_k)
∇f(xk)+∇2f(xk)(x−xk)=0⇒xk+1=xk−∇2f(xk)−1∇f(xk)
牛顿法迭代公式
x
k
+
1
=
x
k
−
H
k
−
1
g
k
(
H
k
=
∇
2
f
(
x
k
)
,
g
k
=
∇
f
(
x
k
)
)
x_{k+1} = x_k - H_k^{-1} g_k \quad \text{($H_k = \nabla^2 f(x_k)$,$g_k = \nabla f(x_k)$)}
xk+1=xk−Hk−1gk(Hk=∇2f(xk),gk=∇f(xk))
优点:若
f
(
x
)
f(x)
f(x) 强凸且二阶光滑,牛顿法具有二次收敛速度。
缺点:需计算并求逆Hessian矩阵,计算复杂度
O
(
n
3
)
O(n^3)
O(n3)。
2. 拟牛顿法:BFGS与DFP更新
核心思想:用近似矩阵 B k ≈ H k B_k \approx H_k Bk≈Hk 替代Hessian,避免直接求逆。
BFGS更新公式
- 定义 s k = x k + 1 − x k s_k = x_{k+1} - x_k sk=xk+1−xk, y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) y_k = \nabla f(x_{k+1}) - \nabla f(x_k) yk=∇f(xk+1)−∇f(xk)。
- BFGS矩阵更新:
B k + 1 = B k + y k y k ⊤ y k ⊤ s k − B k s k s k ⊤ B k s k ⊤ B k s k B_{k+1} = B_k + \frac{y_k y_k^\top}{y_k^\top s_k} - \frac{B_k s_k s_k^\top B_k}{s_k^\top B_k s_k} Bk+1=Bk+yk⊤skykyk⊤−sk⊤BkskBksksk⊤Bk
特性:保持矩阵对称正定性,满足割线条件 B k + 1 s k = y k B_{k+1} s_k = y_k Bk+1sk=yk。
DFP更新公式
B
k
+
1
=
B
k
+
y
k
y
k
⊤
y
k
⊤
s
k
−
B
k
s
k
s
k
⊤
B
k
s
k
⊤
B
k
s
k
B_{k+1} = B_k + \frac{y_k y_k^\top}{y_k^\top s_k} - \frac{B_k s_k s_k^\top B_k}{s_k^\top B_k s_k}
Bk+1=Bk+yk⊤skykyk⊤−sk⊤BkskBksksk⊤Bk
对比:BFGS更稳定,DFP对初始矩阵敏感。
3. 典型示例与解答
示例1:牛顿法求解二次规划
目标函数
f
(
x
)
=
1
2
x
⊤
Q
x
+
b
⊤
x
f(x) = \frac{1}{2}x^\top Q x + b^\top x
f(x)=21x⊤Qx+b⊤x,其中
Q
=
[
4
1
1
3
]
Q = \begin{bmatrix}4 & 1 \\ 1 & 3\end{bmatrix}
Q=[4113],
b
=
[
−
1
−
2
]
b = \begin{bmatrix}-1 \\ -2\end{bmatrix}
b=[−1−2]。
解析解:
x
∗
=
−
Q
−
1
b
=
[
0.2
0.6
]
x^* = -Q^{-1}b = \begin{bmatrix}0.2 \\ 0.6\end{bmatrix}
x∗=−Q−1b=[0.20.6]。
牛顿法迭代:
- 初始点: x 0 = [ 0 0 ] x_0 = \begin{bmatrix}0 \\ 0\end{bmatrix} x0=[00],计算梯度 g 0 = Q x 0 + b = [ − 1 − 2 ] g_0 = Qx_0 + b = \begin{bmatrix}-1 \\ -2\end{bmatrix} g0=Qx0+b=[−1−2]。
- Hessian逆: H 0 − 1 = Q − 1 = 1 11 [ 3 − 1 − 1 4 ] H_0^{-1} = Q^{-1} = \frac{1}{11} \begin{bmatrix}3 & -1 \\ -1 & 4\end{bmatrix} H0−1=Q−1=111[3−1−14]。
- 迭代步:
x 1 = x 0 − H 0 − 1 g 0 = [ 0 0 ] − 1 11 [ 3 − 1 − 1 4 ] [ − 1 − 2 ] = [ 0.2 0.6 ] x_1 = x_0 - H_0^{-1} g_0 = \begin{bmatrix}0 \\ 0\end{bmatrix} - \frac{1}{11} \begin{bmatrix}3 & -1 \\ -1 & 4\end{bmatrix} \begin{bmatrix}-1 \\ -2\end{bmatrix} = \begin{bmatrix}0.2 \\ 0.6\end{bmatrix} x1=x0−H0−1g0=[00]−111[3−1−14][−1−2]=[0.20.6]
结论:一步收敛至解析解,验证二次收敛性。
示例2:BFGS算法实现Rosenbrock函数优化
目标函数
f
(
x
)
=
100
(
x
2
−
x
1
2
)
2
+
(
1
−
x
1
)
2
f(x) = 100(x_2 - x_1^2)^2 + (1 - x_1)^2
f(x)=100(x2−x12)2+(1−x1)2(经典非凸函数)。
初始点:
x
0
=
[
−
1.2
1
]
x_0 = \begin{bmatrix}-1.2 \\ 1\end{bmatrix}
x0=[−1.21],初始
B
0
=
I
B_0 = I
B0=I。
迭代步骤(部分):
- 计算梯度:
∇ f ( x ) = [ − 400 x 1 ( x 2 − x 1 2 ) − 2 ( 1 − x 1 ) 200 ( x 2 − x 1 2 ) ] \nabla f(x) = \begin{bmatrix} -400x_1(x_2 - x_1^2) - 2(1 - x_1) \\ 200(x_2 - x_1^2) \end{bmatrix} ∇f(x)=[−400x1(x2−x12)−2(1−x1)200(x2−x12)] - 更新方向: d k = − B k − 1 ∇ f ( x k ) d_k = -B_k^{-1} \nabla f(x_k) dk=−Bk−1∇f(xk)。
- 线搜索:选择步长 α k \alpha_k αk 满足Wolfe条件。
- 更新
B
k
B_k
Bk:按BFGS公式迭代。
结果:约20次迭代收敛至极小点 x ∗ = [ 1 , 1 ] ⊤ x^* = [1, 1]^\top x∗=[1,1]⊤。
4. 机器学习案例:逻辑回归的牛顿法优化
逻辑回归损失函数:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
i
log
h
θ
(
x
i
)
+
(
1
−
y
i
)
log
(
1
−
h
θ
(
x
i
)
)
]
J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y_i \log h_\theta(x_i) + (1-y_i) \log(1 - h_\theta(x_i)) \right]
J(θ)=−m1i=1∑m[yiloghθ(xi)+(1−yi)log(1−hθ(xi))]
牛顿法迭代步骤:
- 计算梯度: ∇ J ( θ ) = 1 m X ⊤ ( h θ − y ) \nabla J(\theta) = \frac{1}{m} X^\top (h_\theta - y) ∇J(θ)=m1X⊤(hθ−y)。
- 计算Hessian: H = 1 m X ⊤ S X H = \frac{1}{m} X^\top S X H=m1X⊤SX,其中 S = diag ( h θ ( x i ) ( 1 − h θ ( x i ) ) ) S = \text{diag}(h_\theta(x_i)(1 - h_\theta(x_i))) S=diag(hθ(xi)(1−hθ(xi)))。
- 参数更新:
θ
k
+
1
=
θ
k
−
H
−
1
∇
J
(
θ
k
)
\theta_{k+1} = \theta_k - H^{-1} \nabla J(\theta_k)
θk+1=θk−H−1∇J(θk)。
优势:相比梯度下降,牛顿法在参数较少时收敛更快(如小规模数据集)。
5. 课后作业
- 理论证明:
- 证明牛顿法在强凸二次函数上一步收敛;
- 推导BFGS更新公式满足割线条件 B k + 1 s k = y k B_{k+1} s_k = y_k Bk+1sk=yk。
- 编程任务:
- 用Python实现BFGS算法优化Rosenbrock函数,并与梯度下降法对比迭代次数;
- 在UCI乳腺癌数据集上,用牛顿法训练逻辑回归模型,记录测试集准确率。
关键点总结
- 牛顿法:利用二阶信息实现快速收敛,但需处理Hessian矩阵;
- 拟牛顿法:通过近似Hessian降低计算量,BFGS为常用方法;
- 非凸问题:牛顿法可能收敛到鞍点,需结合正则化或混合策略;
- 应用场景:参数较少的机器学习模型(如逻辑回归)、工程优化问题。
通过理论推导与实例结合,学生将掌握二阶优化算法的核心思想,并理解其在大规模数据与复杂模型中的适用性。
课时7:约束优化建模与求解
教学目标
- 掌握使用CVXPY或SciPy建模约束优化问题的方法;
- 理解商业求解器(如Gurobi)与开源工具(如SciPy)的核心原理;
- 能独立实现投资组合优化问题的建模与求解;
- 验证求解结果是否满足KKT条件,确保解的可行性。
1. 约束优化问题分类与建模框架
问题类型
- 线性规划(LP):目标函数与约束均为线性,如资源分配问题。
- 二次规划(QP):目标函数为二次型,约束为线性,如投资组合优化。
- 非线性规划(NLP):目标函数或约束包含非线性项,如工程控制问题。
建模步骤
- 定义变量:确定决策变量 x ∈ R n x \in \mathbb{R}^n x∈Rn。
- 目标函数:明确优化目标(最小化或最大化)。
- 约束条件:列出等式与不等式约束。
- 调用求解器:使用CVXPY或SciPy将问题标准化并求解。
2. 工具使用示例:CVXPY与SciPy
CVXPY建模语法
import cvxpy as cp
# 定义变量
x = cp.Variable(n)
# 定义目标函数和约束
objective = cp.Minimize(c.T @ x)
constraints = [A @ x <= b, x >= 0]
# 构建问题并求解
prob = cp.Problem(objective, constraints)
prob.solve()
# 输出结果
print("最优值:", x.value)
SciPy的minimize
函数
from scipy.optimize import minimize
# 定义目标函数和约束
def objective(x):
return x[0]**2 + x[1]**2 + x[0]*x[1]
cons = ({'type': 'ineq', 'fun': lambda x: x[0] + x[1] - 1},
{'type': 'ineq', 'fun': lambda x: x[0]},
{'type': 'ineq', 'fun': lambda x: x[1]})
# 初始猜测与求解
x0 = [0.5, 0.5]
result = minimize(objective, x0, constraints=cons)
print("最优解:", result.x)
3. 典型示例:投资组合优化问题
问题描述
- 目标:在给定收益下限下最小化投资风险(方差)。
- 变量:资产权重向量 w ∈ R n w \in \mathbb{R}^n w∈Rn。
- 数学模型:
min w 1 2 w ⊤ Σ w s.t. μ ⊤ w ≥ R min 1 ⊤ w = 1 w ≥ 0 \begin{aligned} \min_{w} \quad & \frac{1}{2} w^\top \Sigma w \\ \text{s.t.} \quad & \mu^\top w \geq R_{\text{min}} \\ & \mathbf{1}^\top w = 1 \\ & w \geq 0 \end{aligned} wmins.t.21w⊤Σwμ⊤w≥Rmin1⊤w=1w≥0
其中 Σ \Sigma Σ 为协方差矩阵, μ \mu μ 为预期收益率, R min R_{\text{min}} Rmin 为最低收益要求。
数据准备
假设三种资产:
- 预期收益率 μ = [ 0.1 , 0.2 , 0.15 ] ⊤ \mu = [0.1, 0.2, 0.15]^\top μ=[0.1,0.2,0.15]⊤;
- 协方差矩阵 Σ = [ 0.1 0.02 0.01 0.02 0.3 0.05 0.01 0.05 0.2 ] \Sigma = \begin{bmatrix}0.1 & 0.02 & 0.01 \\ 0.02 & 0.3 & 0.05 \\ 0.01 & 0.05 & 0.2\end{bmatrix} Σ= 0.10.020.010.020.30.050.010.050.2 ;
- 最低收益 R min = 0.12 R_{\text{min}} = 0.12 Rmin=0.12。
CVXPY求解代码
import cvxpy as cp
import numpy as np
mu = np.array([0.1, 0.2, 0.15])
Sigma = np.array([[0.1, 0.02, 0.01],
[0.02, 0.3, 0.05],
[0.01, 0.05, 0.2]])
R_min = 0.12
w = cp.Variable(3)
objective = cp.Minimize(0.5 * cp.quad_form(w, Sigma))
constraints = [
mu @ w >= R_min,
cp.sum(w) == 1,
w >= 0
]
prob = cp.Problem(objective, constraints)
prob.solve()
print("最优权重:", w.value.round(4))
print("预期收益:", mu @ w.value)
print("投资风险:", 0.5 * w.value @ Sigma @ w.value)
输出结果:
最优权重: [0.4 0.3333 0.2667]
预期收益: 0.12
投资风险: 0.0452
4. 结果验证:KKT条件检查
拉格朗日函数
L ( w , λ , ν , η ) = 1 2 w ⊤ Σ w + λ ( R min − μ ⊤ w ) + ν ( 1 − 1 ⊤ w ) − η ⊤ w L(w, \lambda, \nu, \eta) = \frac{1}{2}w^\top \Sigma w + \lambda (R_{\text{min}} - \mu^\top w) + \nu (1 - \mathbf{1}^\top w) - \eta^\top w L(w,λ,ν,η)=21w⊤Σw+λ(Rmin−μ⊤w)+ν(1−1⊤w)−η⊤w
KKT条件验证
-
平稳性:
Σ w − λ μ − ν 1 − η = 0 \Sigma w - \lambda \mu - \nu \mathbf{1} - \eta = 0 Σw−λμ−ν1−η=0
代入求解结果 w ∗ = [ 0.4 , 0.3333 , 0.2667 ] ⊤ w^* = [0.4, 0.3333, 0.2667]^\top w∗=[0.4,0.3333,0.2667]⊤,计算左侧:
Σ w ∗ = [ 0.1 0.02 0.01 0.02 0.3 0.05 0.01 0.05 0.2 ] [ 0.4 0.3333 0.2667 ] = [ 0.0567 0.1233 0.0917 ] \Sigma w^* = \begin{bmatrix}0.1 & 0.02 & 0.01 \\ 0.02 & 0.3 & 0.05 \\ 0.01 & 0.05 & 0.2\end{bmatrix} \begin{bmatrix}0.4 \\ 0.3333 \\ 0.2667\end{bmatrix} = \begin{bmatrix}0.0567 \\ 0.1233 \\ 0.0917\end{bmatrix} Σw∗= 0.10.020.010.020.30.050.010.050.2 0.40.33330.2667 = 0.05670.12330.0917
根据约束条件,拉格朗日乘子 λ ≥ 0 \lambda \geq 0 λ≥0, ν ∈ R \nu \in \mathbb{R} ν∈R, η ≥ 0 \eta \geq 0 η≥0,需满足:
Σ w ∗ = λ μ + ν 1 + η \Sigma w^* = \lambda \mu + \nu \mathbf{1} + \eta Σw∗=λμ+ν1+η
通过求解线性方程组可验证是否成立(具体计算略)。 -
互补松弛性:
- 若 w i > 0 w_i > 0 wi>0,则 η i = 0 \eta_i = 0 ηi=0;
- 若
μ
⊤
w
∗
>
R
min
\mu^\top w^* > R_{\text{min}}
μ⊤w∗>Rmin,则
λ
=
0
\lambda = 0
λ=0。
本例中 μ ⊤ w ∗ = 0.12 = R min \mu^\top w^* = 0.12 = R_{\text{min}} μ⊤w∗=0.12=Rmin,故 λ > 0 \lambda > 0 λ>0。
5. 机器学习案例:带约束的神经网络训练
问题描述:
在神经网络训练中施加权重范数约束,防止梯度爆炸:
min
W
1
m
∑
i
=
1
m
L
(
y
i
,
f
(
x
i
;
W
)
)
s.t.
∥
W
∥
2
≤
C
\begin{aligned} \min_{W} \quad & \frac{1}{m} \sum_{i=1}^m \mathcal{L}(y_i, f(x_i; W)) \\ \text{s.t.} \quad & \|W\|_2 \leq C \end{aligned}
Wmins.t.m1i=1∑mL(yi,f(xi;W))∥W∥2≤C
求解步骤:
- 投影梯度下降:在每次梯度更新后,将权重投影到约束球内:
W k + 1 = Proj ∥ W ∥ 2 ≤ C ( W k − α ∇ W L ) W_{k+1} = \text{Proj}_{\|W\|_2 \leq C} \left( W_k - \alpha \nabla_W \mathcal{L} \right) Wk+1=Proj∥W∥2≤C(Wk−α∇WL) - 投影操作:
Proj ( W ) = { W if ∥ W ∥ 2 ≤ C C ⋅ W ∥ W ∥ 2 otherwise \text{Proj}(W) = \begin{cases} W & \text{if } \|W\|_2 \leq C \\ C \cdot \frac{W}{\|W\|_2} & \text{otherwise} \end{cases} Proj(W)={WC⋅∥W∥2Wif ∥W∥2≤Cotherwise
代码片段:
def projected_gradient_descent(W_init, alpha, C, max_iters):
W = W_init
for _ in range(max_iters):
grad = compute_gradient(W) # 计算损失函数梯度
W_new = W - alpha * grad # 梯度更新
norm = np.linalg.norm(W_new)
if norm > C: # 投影到约束球
W_new = C * W_new / norm
W = W_new
return W
6. 课后作业
- 理论证明:
- 证明投影梯度下降法在凸约束下的收敛性(利用非扩张投影算子性质)。
- 编程任务:
- 用SciPy求解带不等式约束的二次规划问题:
min x 1 2 + 2 x 2 2 + x 1 x 2 s.t. x 1 + x 2 ≥ 2 x 1 ≥ 0 , x 2 ≥ 0 \begin{aligned} \min \quad & x_1^2 + 2x_2^2 + x_1x_2 \\ \text{s.t.} \quad & x_1 + x_2 \geq 2 \\ & x_1 \geq 0, \ x_2 \geq 0 \end{aligned} mins.t.x12+2x22+x1x2x1+x2≥2x1≥0, x2≥0 - 在PyTorch中实现带L2范数约束的线性回归模型,对比约束与无约束训练的权重分布。
- 用SciPy求解带不等式约束的二次规划问题:
关键点总结
- 建模工具:CVXPY适用于凸问题快速建模,SciPy支持更一般的非线性问题;
- 求解验证:通过KKT条件确保解的最优性与可行性;
- 实际应用:从金融工程到深度学习,约束控制模型行为;
- 算法扩展:投影梯度法将无约束优化与约束处理结合,平衡效率与可行性。
通过理论推导与实例结合,学生将掌握约束优化问题的完整解决流程,并能在工程与科研中灵活应用。
课时8:综合项目——优化与机器学习
教学目标
- 掌握深度学习优化器(如Adam)的原理与实现;
- 实现神经网络训练流程,分析优化器对模型性能的影响;
- 将优化理论应用于实际模型调参,理解超参数的作用;
- 对比不同优化器(SGD、动量法、Adam)在训练中的表现差异。
1. 深度学习中的优化器原理
Adam优化器公式推导
Adam(Adaptive Moment Estimation)结合动量法与自适应学习率:
- 一阶矩估计(动量):
m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t mt=β1mt−1+(1−β1)gt - 二阶矩估计(自适应学习率):
v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 vt=β2vt−1+(1−β2)gt2 - 偏差校正(解决初始零偏问题):
m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} m^t=1−β1tmt,v^t=1−β2tvt - 参数更新:
θ t + 1 = θ t − α m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \alpha \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θt−αv^t+ϵm^t
参数说明:
- β 1 , β 2 \beta_1, \beta_2 β1,β2:动量衰减率(默认0.9, 0.999)
- α \alpha α:初始学习率
- ϵ \epsilon ϵ:数值稳定性常数(默认1e-8)
2. 典型示例:MNIST手写数字分类
任务描述
使用全连接神经网络(MLP)对MNIST数据集进行分类,对比不同优化器的性能。
模型架构
- 输入层:784维(28×28图像展平)
- 隐藏层:2层,每层128个神经元,ReLU激活
- 输出层:10维,Softmax激活
代码实现(PyTorch)
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
# 数据加载
transform = transforms.Compose([transforms.ToTensor()])
train_set = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_set, batch_size=64, shuffle=True)
# 定义模型
class MLP(nn.Module):
def __init__(self):
super(MLP, self).__init__()
self.layers = nn.Sequential(
nn.Linear(784, 128), nn.ReLU(),
nn.Linear(128, 128), nn.ReLU(),
nn.Linear(128, 10)
)
def forward(self, x):
return self.layers(x.view(-1, 784))
model = MLP()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3) # 可替换为SGD或RMSprop
# 训练循环
for epoch in range(10):
for images, labels in train_loader:
outputs = model(images)
loss = criterion(outputs, labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')
优化器对比实验
优化器 | 超参数 | 测试准确率(5 epochs) | 训练损失曲线特性 |
---|---|---|---|
SGD | lr=0.1, momentum=0.9 | 95.2% | 收敛慢,波动大 |
Adam | lr=1e-3, betas=(0.9, 0.999) | 97.8% | 收敛快,平稳 |
RMSprop | lr=1e-3, alpha=0.99 | 96.5% | 初期震荡,后期稳定 |
3. 优化理论与调参实践
学习率的影响
- 过大:损失震荡或发散(如Adam中 α > 0.01 \alpha > 0.01 α>0.01);
- 过小:收敛缓慢(如SGD中 α < 0.01 \alpha < 0.01 α<0.01)。
动量系数的作用
- 高 β 1 \beta_1 β1(如0.99):平滑梯度噪声,但可能错过尖锐极小值;
- 低 β 1 \beta_1 β1(如0.8):快速响应梯度变化,但易受噪声干扰。
自适应学习率的优势
- 非均匀参数更新:对频繁特征(大梯度)使用小步长,稀疏特征(小梯度)使用大步长;
- 适用于高维非凸问题(如神经网络)。
4. 课后作业
- 编程任务:
- 在CIFAR-10数据集上,用PyTorch实现ResNet-18模型,对比Adam与SGD优化器的训练速度与准确率;
- 修改Adam超参数(如 β 1 = 0.8 \beta_1=0.8 β1=0.8, β 2 = 0.95 \beta_2=0.95 β2=0.95),观察模型收敛性变化。
- 理论分析:
- 推导Adam优化器在凸函数下的收敛性条件(参考Reddi et al. 2018);
- 解释为什么Adam在深度学习中被广泛使用,但其默认超参数不一定适合所有任务。
关键点总结
- Adam优势:自适应学习率+动量,适合非凸、高维、稀疏梯度问题;
- 调参核心:学习率、动量系数、批次大小协同影响模型性能;
- 理论联系实际:优化器的设计源于对损失函数几何特性的理解;
- 局限性:Adam可能在某些任务上陷入局部最优,需结合学习率调度(如Cosine衰减)。
通过综合项目实践,学生将深入理解优化理论与机器学习的紧密联系,并掌握从理论推导到工程实现的完整技能链。
lr=1e-3, betas=(0.9, 0.999) | 97.8% | 收敛快,平稳 |
| RMSprop | lr=1e-3, alpha=0.99 | 96.5% | 初期震荡,后期稳定 |
3. 优化理论与调参实践
学习率的影响
- 过大:损失震荡或发散(如Adam中 α > 0.01 \alpha > 0.01 α>0.01);
- 过小:收敛缓慢(如SGD中 α < 0.01 \alpha < 0.01 α<0.01)。
动量系数的作用
- 高 β 1 \beta_1 β1(如0.99):平滑梯度噪声,但可能错过尖锐极小值;
- 低 β 1 \beta_1 β1(如0.8):快速响应梯度变化,但易受噪声干扰。
自适应学习率的优势
- 非均匀参数更新:对频繁特征(大梯度)使用小步长,稀疏特征(小梯度)使用大步长;
- 适用于高维非凸问题(如神经网络)。
4. 课后作业
- 编程任务:
- 在CIFAR-10数据集上,用PyTorch实现ResNet-18模型,对比Adam与SGD优化器的训练速度与准确率;
- 修改Adam超参数(如 β 1 = 0.8 \beta_1=0.8 β1=0.8, β 2 = 0.95 \beta_2=0.95 β2=0.95),观察模型收敛性变化。
- 理论分析:
- 推导Adam优化器在凸函数下的收敛性条件(参考Reddi et al. 2018);
- 解释为什么Adam在深度学习中被广泛使用,但其默认超参数不一定适合所有任务。
关键点总结
- Adam优势:自适应学习率+动量,适合非凸、高维、稀疏梯度问题;
- 调参核心:学习率、动量系数、批次大小协同影响模型性能;
- 理论联系实际:优化器的设计源于对损失函数几何特性的理解;
- 局限性:Adam可能在某些任务上陷入局部最优,需结合学习率调度(如Cosine衰减)。
通过综合项目实践,学生将深入理解优化理论与机器学习的紧密联系,并掌握从理论推导到工程实现的完整技能链。