人工智能中的最优化方法

暑期课程 · 8 模块 · 6 小时

模块 1 · 人工智能中的最优化——核心问题与框架

1.1 AI 为什么离不开最优化?

三类核心 AI 场景

AI 的每一次"学习",本质上都在求解一个优化问题。以三个前沿场景为例:

① 大模型参数训练:GPT-4 级别的模型拥有数千亿参数,训练过程就是 $\min_\theta \frac{1}{N}\sum_{i=1}^N L(f_\theta(x_i), y_i)$ —— 在高维连续空间中找到使损失最小的参数。

② 智能推荐排序:抖音、淘宝的推荐系统将用户点击率预估建模为 $\max$ 排序函数的优化——属于组合优化。

③ 强化学习策略搜索:AlphaGo 的落子决策 = 在巨大的策略空间中优化累积回报 $\max_\pi \mathbb{E}[\sum_t \gamma^t r_t]$

机器学习四关键组件:数据(data)→ 模型(model)→ 目标函数(objective function)→ 优化算法(optimization algorithm)。

教材第 1 章 §1.2 · 附件讲义(Lecture13-14)ML 关键组件

1.2 优化三要素:统一建模语言

所有 AI 优化问题的共同结构

任何一个最优化问题都可以用三个要素描述,这是本书的统一建模语言(教材第 1 章):

决策变量 $x$(想控制的东西)· 目标函数 $f(x)$(想优化什么)· 约束条件 $g_i(x) \ge 0, h_j(x)=0$(不能违反的规则)
$$\min_{x} f(x) \quad \text{s.t.} \quad g_i(x) \ge 0\;(i=1,\dots,m),\; h_j(x) = 0\;(j=m+1,\dots,p)$$

建模演示——线性回归:

输入样本 $(x_i, y_i), i=1,\dots,N$,要找一个线性模型 $y \approx \mathbf{w}^\top\mathbf{x} + b$

· 决策变量:$\mathbf{w}, b$(权重和偏置)

· 目标函数:均方误差 $\min \frac{1}{N}\sum_{i=1}^N \|y_i - \mathbf{w}^\top\mathbf{x}_i - b\|^2$

· 约束条件:无约束(普通线性回归没有显式约束)

该有限和形式 $\min \frac{1}{N}\sum f_i(x)$ 正是机器学习经验风险最小化(ERM)的数学表达,它引出了随机优化算法(见模块 5)。

教材第 1 章 §1.2「优化问题的定义」(定义 1.1)、一般模型(式 1.1)· 附件讲义 ERM

1.3 优化问题分类:AI 问题的五维坐标

一眼看懂你的问题属于哪种类型

教材第 1 章按五个维度给优化问题分类。对 AI 工程师最重要的是下面两项:

按函数形式:

· 线性规划(LP):$\min \mathbf{c}^\top\mathbf{x}$ s.t. $\mathbf{Ax}=\mathbf{b}, \mathbf{x}\ge 0$

· 二次规划(QP):$\min \frac12\mathbf{x}^\top\mathbf{Q}\mathbf{x} + \mathbf{c}^\top\mathbf{x}$(SVM 属于此类)

· 非线性规划(NLP):函数非线性的最一般情形(深度学习就是大规模 NLP)

按参数确定性:

· 确定型:所有参数精确已知

· 随机型:$\min_{\mathbf{x}} f(\mathbf{x}) = \frac{1}{N}\sum_{i=1}^N f_i(\mathbf{x})$ —— 机器学习中的经验风险最小化!

连续 vs 离散:这是教材上、下两篇的分界线——第 2-8 章讲连续优化(梯度类方法),第 10 章起讲组合/离散优化。

教材第 1 章 §1.2「优化问题的分类」(五维分类)· 有限和随机优化

1.4 局部最优与全局最优——以及如何"走出去"

迭代格式 x^{k+1} = x^k + t_k d^k

定义(教材第 1 章 §1.3):

· 全局最优解 $x^*$:所有可行点中目标值最小者。

· 局部最优解 $\bar{x}$:在邻域 $N(\bar{x})$ 内目标值最小(出邻域可能更差)。

全局最优必是局部最优,反之不然。连续优化用欧氏球邻域,离散优化用扰动规则(如 TSP 的 2-交换邻域)。

基本迭代格式:几乎所有优化算法都可写为

$$\mathbf{x}^{k+1} = \mathbf{x}^k + t_k \mathbf{d}^k$$

其中 $\mathbf{d}^k$ 是搜索方向(如负梯度)、$t_k$ 是步长。这个统一的格式贯穿全书。

收敛性指标:收敛速度分为线性收敛、超线性收敛、二次收敛(教材 §1.3)。牛顿法达到二次收敛,梯度下降通常线性收敛。

课后思考:找个你接触过的 AI 应用,拆解其优化三要素(变量、目标、约束),并判断属于哪种分类。

教材第 1 章 §1.3「迭代格式」「收敛性」「收敛速度」· 邻域定义 1.4-1.5

🧪 模块 1 随堂检测

Q1:以下哪一项不属于优化问题的三个要素?
A. 决策变量
B. 目标函数
C. 数据预处理
D. 约束条件
Q2:机器学习中 $\min \frac{1}{N}\sum f_i(x)$ 属于教材哪类优化?
A. 确定型单目标
B. 随机型(有限和)
C. 多目标规划
D. 离散优化

模块 2 · 线性规划——AI 中线性决策模型的基础

2.1 AI 中的线性决策场景

从推荐系统到算力调度

线性规划(LP)在 AI 工程中无处不在:

· 广告预算分配:给定总预算与各渠道 ROI,求最优分配使总转化最大 → $\max \sum r_i x_i$ s.t. $\sum x_i \le B$

· 云平台算力调度:多个 AI 任务竞争 GPU/CPU 资源,在满足 SLA 约束下最大化资源利用率

· 线性分类器:SVM 的可行域分析、感知机的分隔超平面搜索都可以抽象为 LP 结构

教材第 2 章 §2.1 · 教材第 1 章 §1.2 节食问题

2.2 经典引例:斯蒂格勒节食问题(Diet Problem)

6 种食物 × 11 种营养约束 → LP 模型

给定 6 种食物(鸡肉、牛肉、生菜、土豆、牛奶、番茄)和 11 种营养成分的最低日需求量,求总花费最小的饮食方案。

建模:

· 决策变量 $x_j$ = 食物 j 的购买量(克)

· 目标:$\min \sum_{j=1}^6 c_j x_j = 0.34x_1 + 0.27x_2 + 0.15x_3 + 0.22x_4 + 0.20x_5 + 0.25x_6$

· 约束:$\sum_j a_{ij}x_j \ge b_i$(第 i 种营养达标),$x_j \ge 0$

$$\min \mathbf{c}^\top\mathbf{x} \quad \text{s.t.} \quad \mathbf{Ax} \ge \mathbf{b},\; \mathbf{x} \ge 0$$

这就是规范形线性规划:目标极小化、约束为不等式、变量非负。

教材第 1 章 §1.2 节食问题(例 1.1)· scipy.linprog 示例代码

2.3 LP 三种形式与标准形转化

一般形 → 规范形 → 标准形
形式数学表达
一般形$\min$$\max$,约束可 $\le,=,\ge$,变量可 $\ge 0, \le 0$ 或自由
规范形$\min \mathbf{c}^\top\mathbf{x}$ s.t. $\mathbf{Ax}\ge\mathbf{b}, \mathbf{x}\ge 0$
标准形$\min \mathbf{c}^\top\mathbf{x}$ s.t. $\mathbf{Ax}=\mathbf{b}, \mathbf{x}\ge 0$
标准形三大特征:目标极小化、约束全为等式、变量全非负。单纯形法全部理论建立在标准形之上。

一般形 → 标准形 三招:

$\max \rightarrow \min$ 取负:$\max z = \min (-z)$

② 不等式补平:$\le b_i$ 加松弛变量 $+x_{n+i}$$\ge b_i$ 减剩余变量 $-x_{n+i}$

③ 自由变量拆分:$x_i$ 无限制 → $x_i = x_i^+ - x_i^-$(两非负变量之差)

练习(教材第 2 章):为"电商商品定价满足库存约束最大化利润"建立完整 LP 模型,画出 2 变量情况下可行域与等高线。

教材第 2 章 §2.1「标准形」(定义 2.1)、「一般形化标准形」

2.4 几何直观:可行域是凸多面体

多面体、极点、最优解必在顶点

线性约束 $\mathbf{Ax}=\mathbf{b}, \mathbf{x}\ge 0$ 定义的可行域 $F$ 是一个凸多面体(凸集——任意两点连线仍在集内)。等高线 $\mathbf{c}^\top\mathbf{x}=k$ 是一族平行超平面。

$k$ 不断减小(极小化),等高线平行移动,最先"碰到"可行域的某个顶点——这就是最优解。

线性规划的最优解必在可行域的某个极点(顶点)处达到。这是单纯形法的理论基础。

教材第 2 章 §2.3「线性规划问题的几何性质」· §2.4「极点与基本可行解的对应」

🧪 模块 2 随堂检测

Q3:线性规划标准形要求约束为?
A. 不等式
B. 等式
C. 等式与不等式混合
D. 无约束
Q4:$\mathbf{Ax} \ge \mathbf{b}$ 型约束如何转化为等式?
A. 加松弛变量
B. 减剩余变量
C. 两边同时取负
D. 不需要转换

模块 3 · 顶点最优性质与单纯形法

3.1 基本可行解:可行域的"骨架"

基矩阵 → 基本解 → 基本可行解

基矩阵(Basis):从约束矩阵 $\mathbf{A}$(m×n)中取 m 个线性无关的列组成 m×m 满秩方阵 $\mathbf{B}$。其余列构成 $\mathbf{N}$

基本解:令非基变量 $\mathbf{x}_N = \mathbf{0}$,由 $\mathbf{Bx}_B = \mathbf{b}$ 解得 $\mathbf{x}_B = \mathbf{B}^{-1}\mathbf{b}$,得 $\mathbf{x} = (\mathbf{B}^{-1}\mathbf{b}, \mathbf{0})$

基本可行解(BFS):$\mathbf{B}^{-1}\mathbf{b} \ge 0$,即基本解落在可行域内。

基本可行解恰好对应可行多面体的极点(顶点)。至多有 $\binom{n}{m}$ 个,有限多个。线性规划基本定理:若有最优解,则一定有最优基本可行解。

教材第 2 章 §2.2「基本可行解的定义」· §2.4「极点与基本可行解的对应」

3.2 单纯形法思想:沿棱跳着下山

不枚举 C(n,m),只沿下降方向走

既然最优解必在极点,而极点只有有限个,为什么不全枚举出来比较?因为 $\binom{n}{m}$ 随规模指数增长!

单纯形法的聪明之处:从初始极点开始,每次考察相邻极点,如果目标值更低就跳过去;通过检验数规则判断"所有相邻极点都不更低"→ 停止(因为凸性保证此时已是全局最优)。

类比:蒙眼下多面体山。每一步你只看相邻顶点是否更低,是就跳过去。凸性的重要性在于——一旦你走到"四周都不比我低"的顶点,你就站在最低点了(局部最优 = 全局最优)。

教材第 2 章 §2.5「单纯形方法的迭代思想」

3.3 检验数与最小比值法则

核心代数工具

检验数(Reduced Cost):

$$\bar{c}_j = c_j - \mathbf{c}_B^\top\mathbf{B}^{-1}\mathbf{A}_j = c_j - z_j$$

$\bar{c}_j$ 的含义:让非基变量 $x_j$ 增加 1 个单位,目标值净减小多少。

· $\bar{c}_j < 0$ → 引进 $x_j$ 可降低目标值(继续迭代)

· 所有 $\bar{c}_j \ge 0$ → 已到最优(停止)

最小比值法则(定出基变量):

$$\theta_0 = \min_{i: \bar{a}_{ik}>0} \frac{\bar{b}_i}{\bar{a}_{ik}} = \frac{\bar{b}_r}{\bar{a}_{rk}}$$

$\theta = \theta_0$ 时恰有一个基变量降为 0 → 离基;$x_k$ 从 0 升至 $\theta_0$ → 进基。几何上就是从当前极点沿一条棱走到相邻极点。

两种情况:退化($\theta_0=0$,基变换但极点不变);无界(所有 $\bar{a}_{ik}\le 0$,问题无有限最优解)。

教材第 2 章 §2.5.4「检验数」· §2.5.2「最小比值」

3.4 🔬 单纯形法分步演示

点击按钮分步观察迭代过程

例题:$\min z = -x_2 + 2x_3$ s.t. $x_1 - 2x_2 + x_3 = 2,\; x_2 - 3x_3 + x_4 = 1,\; x_2 - x_3 + x_5 = 2,\; \mathbf{x}\ge 0$

初始基:$B = \{x_1, x_4, x_5\}$(已是单位矩阵);$x_2$ 检验数 $\bar{c}_2 = -1 < 0$ → 选入基。

x₁x₂x₃x₄x₅RHS
x₁1-21002
x₄01-3101
x₅01-1012
z0-12000

最小比值:$\min\{1/1, 2/1\} = 1$$x_4$ 出基。标记红色为旋转元 1。

第一次换基后:$B = \{x_1, x_2, x_5\}$$x_3$ 检验数 $\bar{c}_3 = -1 < 0$ → 选入基。

x₁x₂x₃x₄x₅RHS
x₁10-5204
x₂01-3101
x₅002-111
z00-1101

最小比值:$\min\{1/2\} = 0.5$$x_5$ 出基。红色旋转元 2。

第二次换基后:所有检验数 $\ge 0$达到最优!

x₁x₂x₃x₄x₅RHS
x₁100-0.52.56.5
x₂010-0.51.52.5
x₃001-0.50.50.5
z0000.50.51.5
最优解:$\mathbf{x}^* = (6.5, 2.5, 0.5, 0, 0)$,最优值 $z^* = -1.5$。全程只需 2 次换基,无需枚举全部基点。

教材第 2 章 §2.6「单纯形法实例」

3.5 🐍 scipy.optimize.linprog 实操

用 Python 在 5 行代码内求解 LP
from scipy.optimize import linprog
c = [0.34, 0.27, 0.15, 0.22, 0.20, 0.25]  # 6 foods
A_ub = -a_matrix  # scipy uses A_ub x <= b_ub
b_ub = -b_vector  # flip >= to <=
res = linprog(c, A_ub=A_ub, b_ub=b_ub, bounds=(0,None), method='highs')
print(f'Min cost: ¥{res.fun:.2f}')  # ¥17.54
print(f'Solution: {res.x}')  # 6 foods in grams

参数说明:`c` 目标系数(最小化)、`A_ub, b_ub` 不等式约束、`A_eq, b_eq` 等式约束、`bounds` 变量范围、`method='highs'` 大规模 LP 推荐。

结果解读:`res.x` 最优解、`res.fun` 最优值、`res.status`(0=最优/1=达到迭代上限/2=不可行/3=无界)、`res.success`

注意:scipy 的 `A_ub x <= b_ub` 形式与教材 `Ax >= b` 相反——使用时取负号翻转!

课后练习:手动推导 2 变量 3 约束线性规划的单纯形全过程,再用 scipy.linprog 验证结果。

教材第 1 章 §1.2 节食问题 Python 代码 · 教材第 2 章 §2.7-2.8

🧪 模块 3 随堂检测

Q5:假设 LP 有 30 个变量、10 个约束,至多有多少个基本可行解?
A. 30
B. 10
C. C(30,10)
D. 无限多个
Q6:单纯形法中"检验数全 ≥ 0"意味着什么?
A. 问题不可行
B. 问题无界
C. 需换基迭代
D. 已达最优解

模块 4 · 对偶理论——AI 模型复杂度简化的核心工具

4.1 对偶的直觉:一个问题,两个立场

节食问题的对偶——营养制剂厂商定价

SVM 为什么几乎总用对偶形式求解?因为对偶可以将"万维特征空间"的计算复杂度从与特征维度相关转变为与样本数量相关——这是 AI 中"问题翻转"思想最漂亮的应用。

教材引例(第 3 章):

原始问题(消费者)对偶问题(营养厂商)
$\min \mathbf{c}^\top\mathbf{x}$ 花最少钱买够营养$\max \boldsymbol{\pi}^\top\mathbf{b}$ 营养卖出最高总价
$\mathbf{Ax} \ge \mathbf{b},\; \mathbf{x} \ge 0$$\boldsymbol{\pi}^\top\mathbf{A} \le \mathbf{c}^\top,\; \boldsymbol{\pi} \ge 0$

影子价格:对偶变量 $\pi_i$ 是第 i 种约束的"影子价格"——该资源每增加一个单位,最优值会改善多少。

构造规则口诀:min 对 max、b 与 c 互换、行约束变列约束、约束方向与变量符号同步翻转。

教材第 3 章 §3.1「对偶问题的实际背景」· 节食问题对偶(例 3.1)

4.2 弱对偶与强对偶定理

从不等式到等式的跳跃

弱对偶性(定理 3.3):

$$\boldsymbol{\pi}^\top\mathbf{b} \le \mathbf{c}^\top\mathbf{x} \quad (\text{任意原始可行 }x\text{ 与对偶可行 }\pi)$$

对偶问题的任意可行值都是原始最优值的下界。"弱"在只要求可行、不要求最优——结论只是一个不等式。

强对偶性(定理 3.4):

原始有最优解 \;\Longrightarrow\; 对偶也有最优解,且 \;\mathbf{c}^\top\mathbf{x}^* = \boldsymbol{\pi}^{*\top}\mathbf{b}

"最低花费 = 最高定价"——这是整个对偶理论最核心的结论。不等式升级成了等式!

教材第 3 章 §3.2「弱对偶性」(定理 3.3)、「强对偶性」(定理 3.4)

4.3 互补松紧性——判断最优的充要条件

"跷跷板两端必须有一头落地"

定理 3.5(互补松紧性):一对可行解 $(\mathbf{x}, \boldsymbol{\pi})$ 同为最优的充要条件:

$$\pi_i \cdot (a_i^\top\mathbf{x} - b_i) = 0\;\; \forall i \quad\text{且}\quad (c_j - \boldsymbol{\pi}^\top\mathbf{A}_j) \cdot x_j = 0\;\; \forall j$$

通俗含义:某资源有富余(约束不紧)→ 影子价格必为零(该资源不值钱);某变量被启用($x_j>0$)→ 对应对偶约束必须绷紧。

LP 的 KKT 条件:原始可行 + 对偶可行 + 互补松紧 ⟺ 同时最优。这是全书最优雅的充要条件。

验证例题:$x = (0, 0.5, 0, 2.5, 1.5)$ 是原问题最优解吗?由 $x_2,x_4,x_5>0$ → 对应对偶约束取等号 → 解出 $\boldsymbol{\pi}=(-2.5,1,1)$ → 验证对偶可行 → 原始/对偶值均为 4.5 → 是最优解!

教材第 3 章 §3.2「互补松紧性」(定理 3.5)、验证例题(例 3.5)

4.4 🎯 对偶在 AI 中的两大应用

SVM 对偶 + 正则化对偶

① SVM 的对偶化:

硬边际 SVM 原问题:

$$\min_{\mathbf{w},b} \frac12\|\mathbf{w}\|^2 \quad \text{s.t.}\quad y_i(\mathbf{w}^\top\mathbf{x}_i + b) \ge 1\;\;(i=1,\dots,N)$$

变量维度 = 特征维度 d(可至万维)。通过对偶得到:

$$\max_{\boldsymbol{\alpha}} \sum_i \alpha_i - \frac12\sum_{i,j}\alpha_i\alpha_j y_i y_j \mathbf{x}_i^\top\mathbf{x}_j \quad \text{s.t.}\quad \alpha_i\ge 0,\; \sum_i\alpha_i y_i=0$$

变量维度 = 样本数 N!且只需支持向量($\alpha_i>0$ 的样本)参与计算。当 $d \gg N$(高维特征场景)时对偶大幅简化!

软边际 SVM(松弛变量 $\xi_i$、惩罚 C、Hinge Loss)的对偶只需加约束 $0 \le \alpha_i \le C$

② L1/L2 正则化的对偶解释:

正则化 $\min f + \lambda\|\mathbf{w}\|$ 等价于约束优化 $\min f$ s.t. $\|\mathbf{w}\| \le t$(约束与惩罚一一对应)。对偶理论解释:正则化项对应于对偶问题中对约束的"容忍度"——λ 越大 = t 越小 = 约束越紧 = 模型越简单 = 过拟合越轻。

课后任务:推导 L2 正则化线性回归(岭回归)的对偶问题形式。

教材第 3 章 §3.1-3.2 · 附件讲义 SVM 原问题/对偶/软边际部分

🧪 模块 4 随堂检测

Q7:强对偶性断言什么?
A. 对偶目标 ≤ 原始目标
B. 对偶无可行解
C. 原始最优值 = 对偶最优值
D. 对偶问题一定是 LP
Q8:SVM 对偶化最主要的好处是?
A. 加快梯度计算
B. 不需要核函数
C. 变量从 N 降到 d
D. 计算只涉及样本内积与支持向量

模块 5 · 无约束优化——AI 参数训练的核心梯度类方法

5.1 最优性条件:从"梯度为零"到深度学习

为什么深度学习的损失函数梯度几乎不可能是零?

一阶必要条件:$\bar{\mathbf{x}}$ 是局部极小点且 $f$ 可微,则 $\nabla f(\bar{\mathbf{x}}) = 0$

二阶必要条件:$\nabla f = 0$ 且 Hesse 矩阵 $\nabla^2 f$ 半正定。

二阶充分条件:$\nabla f = 0$ 且 Hesse 矩阵正定 → 严格局部极小。

对可微凸函数,$\nabla f(\bar{x}) = 0$ 是全局极小的充要条件!这就是凸优化优越性的根源。

驻点 ≠ 极小点:驻点可能是极小点、极大点或鞍点。高维深度网络中鞍点数量远多于差的局部极小——这是模块 8 要讨论的核心问题。

教材第 7 章 §7.1「一阶必要条件」(定理 6.3)、「二阶条件」(定理 6.4-6.5)、「凸函数充要条件」

5.2 最速下降法(Gradient Descent)

Cauchy 1847 — 最古老但仍在用

核心公式:$\mathbf{x}^{k+1} = \mathbf{x}^k - t_k \nabla f(\mathbf{x}^k)$

负梯度方向是当前点局部下降最快的方向(Taylor 一阶展开可证),但全局收敛可能很慢。

算法:① 初点 $\mathbf{x}^0$$\varepsilon > 0$,k=0;② 算梯度 → 若 $\|\nabla f\| \le \varepsilon$ 则停;③ $\mathbf{d}^k = -\nabla f$;④ 精确一维搜索定步长 $t_k$;⑤ 更新 $\mathbf{x}^{k+1}$

例题(教材 §7.3):$\min f(x) = 2x_1^2 + x_2^2$,从 (1,1) 出发。梯度 ∇f = (4x₁, 2x₂),$\mathbf{d}^{(1)} = (-4, -2)$,步长 $t_1 = 5/18$$\mathbf{x}^{(2)} \approx (0.11, 0.44)$注意相邻搜索方向正交——这就是拉锯(之字形)现象!

步长策略:精确一维搜索(黄金分割 0.618)、Armijo 非精确搜索、固定学习率(深度学习常用)。

教材第 7 章 §7.3「最速下降法」· 例题 6.8

5.3 牛顿法与拟牛顿法

二阶信息的威力与代价

牛顿法迭代公式:

$$\mathbf{x}^{k+1} = \mathbf{x}^k - [\nabla^2 f(\mathbf{x}^k)]^{-1} \nabla f(\mathbf{x}^k)$$

从二阶 Taylor 展开推导:$\phi(\mathbf{x}) = f(\mathbf{x}^k) + \nabla f^\top(\mathbf{x}-\mathbf{x}^k) + \frac12(\mathbf{x}-\mathbf{x}^k)^\top\nabla^2 f(\mathbf{x}^k)(\mathbf{x}-\mathbf{x}^k)$,令 $\nabla\phi=0$ 即得。

优点:正定二次函数 1 步到达极小、极小点附近二次收敛(每步精确数字位数翻倍)。

缺点:① Hesse 矩阵不正定时牛顿方向可能不下降(需阻尼/信赖域);② 每步 O(p²) 存储 + O(p³) 求逆,深度学习中 p 可达亿级 → 完全不可行。

拟牛顿法(BFGS / L-BFGS):用梯度差构造 Hesse 逆的近似,满足割线方程 $\mathbf{H}_{k+1}\mathbf{y}_k = \mathbf{s}_k$ 而不显式计算二阶导。L-BFGS 只存最近 m 对向量,内存 O(mp)。

教材第 7 章 §7.4「牛顿法」· §7.6「拟牛顿法」· 阻尼牛顿法

5.4 🚀 SGD → Momentum → Adam → AdamW 演进

大模型训练引擎的进化路线

Mini-batch SGD:全量梯度 O(N) 代价难以承受 → 每次只算一个小批次的梯度估计。

$$\theta_{t+1} = \theta_t - \eta \cdot \frac{1}{|B|}\sum_{i\in B} \nabla f_i(\theta_t)$$

动量(Momentum):指数加权移动平均平滑梯度,抑制震荡。

$$v_t = \beta v_{t-1} + (1-\beta)g_t,\quad \theta_{t+1} = \theta_t - \eta v_t$$

Adam(2015):动量 + 自适应学习率 + 偏差修正。当前大模型训练的事实标准。

$$m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t,\quad v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2$$$$\hat{m}_t = \frac{m_t}{1-\beta_1^t},\quad \hat{v}_t = \frac{v_t}{1-\beta_2^t},\quad \theta_t = \theta_{t-1} - \eta\frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\varepsilon}$$

AdamW(2017):将权重衰减(L2 正则)与梯度更新解耦,解决了 Adam 中正则化效果被自适应学习率稀释的问题。 $\theta_t = \theta_{t-1} - \eta(\hat{m}_t/(\sqrt{\hat{v}_t}+\varepsilon) + \lambda\theta_{t-1})$

演进逻辑:SGD(噪音大但泛化好)→ Momentum(平滑震荡)→ AdaGrad(逐坐标自适应)→ RMSProp(衰减累积)→ Adam(动量+自适应+偏修)→ AdamW(解耦权重衰减)。AdamW 是大模型训练的默认选择。
课后任务:分别用 SGD 和牛顿法训练二分类逻辑回归,对比收敛速度与准确率。

教材第 7 章 §7.3-7.6 · AI 社区 Adam/AdamW 论文 (Kingma & Ba 2015, Loshchilov & Hutter 2017)

🧪 模块 5 随堂检测

Q9:最速下降法相邻搜索方向的关系是什么?
A. 共轭
B. 平行
C. 正交(精确搜索下)
D. 共线
Q10:为什么深度学习中较少使用牛顿法?
A. 收敛太慢
B. 梯度不准确
C. Hesse 矩阵存储与求逆代价 O(p³) 过高
D. 牛顿法不适用于凸函数

模块 6 · 凸优化基础——AI 模型全局最优的保障

6.1 凸集与凸函数

凸性——为什么有些模型训练从来不怕"卡住"

凸集:任意两点连线仍在集内。超平面、半空间、范数球、多面体都是凸集;凸集交集仍凸。

凸函数定义:

$$f(\lambda\mathbf{x} + (1-\lambda)\mathbf{y}) \le \lambda f(\mathbf{x}) + (1-\lambda)f(\mathbf{y})\quad(\forall\lambda\in[0,1])$$

一阶判别:$f(\mathbf{y}) \ge f(\mathbf{x}) + \nabla f(\mathbf{x})^\top(\mathbf{y}-\mathbf{x})$ —— 函数图形永远在所有切线的上方。

二阶判别:Hesse 矩阵 $\nabla^2 f(\mathbf{x})$ 处处半正定 ⟺ f 是凸函数。

常见凸函数:二次型(A 半正定)、指数 $e^x$、负对数 $-\log x$、范数、max 函数、log-sum-exp。

教材第 1 章 §1.5「凸集」、「凸函数」定义与判别

6.2 凸规划:局部最优即全局最优

最优化理论中最令人安心的定理

凸规划标准形式:

$$\min f_0(\mathbf{x})\quad \text{s.t.}\quad f_i(\mathbf{x}) \le 0\;(i=1,\dots,m),\; \mathbf{a}_j^\top\mathbf{x} = b_j\;(j=1,\dots,p)$$

其中 $f_0,\dots,f_m$ 是凸函数,等式约束为仿射(线性)函数。

凸规划的可行域必为凸集。核心定理(教材 §1.5):凸规划的任意局部最优解就是全局最优解。

证明思路:$\mathbf{x}^*$ 是局部最优,任取另一可行解 $\mathbf{y}$。构造凸组合 $\mathbf{z}=\lambda\mathbf{x}^*+(1-\lambda)\mathbf{y}$,λ 充分大时 $\mathbf{z}$ 落入 $\mathbf{x}^*$ 的邻域 → $f(\mathbf{z})\ge f(\mathbf{x}^*)$;再由凸性 $f(\mathbf{z})\le \lambda f(\mathbf{x}^*)+(1-\lambda)f(\mathbf{y})$ → 代入得 $f(\mathbf{y})\ge f(\mathbf{x}^*)$

教材第 1 章 §1.5「凸规划」(定理 1.11)

6.3 AI 模型的凸性判定

哪些模型可以放心训练?哪些要小心?

一旦确定问题是凸的,就可以使用任意局部搜索算法并保证收敛到全局最优。以下 AI 模型都是凸问题:

· Lasso 回归 $\min \frac12\|\mathbf{y}-\mathbf{Xw}\|^2 + \lambda\|\mathbf{w}\|_1$(凸但非光滑,须用次梯度或近端方法)

· 岭回归 $\min \frac12\|\mathbf{y}-\mathbf{Xw}\|^2 + \lambda\|\mathbf{w}\|^2$(严格凸,有唯一最优解)

· SVM $\min \frac12\|\mathbf{w}\|^2 + C\sum\xi_i$ s.t. $y_i(\mathbf{w}^\top\mathbf{x}_i+b)\ge 1-\xi_i,\;\xi_i\ge0$(凸 QP)

· 逻辑回归(交叉熵损失是凸函数——不用担心局部最优)

· 最小二乘(无正则时是凸二次函数)

⛔ 非凸对照:深度神经网络——多层非线性激活的复合导致损失面极度非凸,鞍点远多于差的局部极小,需要 SGD 的随机性与动量来逃离。

教材第 1 章 §1.5 凸规划 · 第 7 章 §7.1 凸函数充要条件

🧪 模块 6 随堂检测

Q11:可微函数 f 是凸函数的二阶判别条件是什么?
A. ∇²f 正定
B. ∇²f 半正定
C. ∇²f = 0
D. ∇²f 负定

模块 7 · 约束非线性优化——KKT 条件与方法设计

AI 场景切入:有约束才真实

自动驾驶路径规划:车辆要在最短时间内从起点到终点,同时必须避开障碍物、遵守限速、保持在车道内——每条规则都是一个约束。总耗时最小是目标函数,避障、限速、终点到达是约束条件,这就是典型的约束非线性规划。

联邦学习隐私约束:各客户端本地训练模型时,梯度必须加噪声以满足差分隐私要求。优化的目标是最小化全局损失函数,约束是"隐私预算 ≤ ε"——这同样是一个约束优化问题。

此外,广告投放的预算限制、电网调度的容量约束、推荐系统的公平性约束——真实的 AI 问题几乎总是带约束的。而 KKT 条件,就是约束最优化问题最优解的"通行证"。

教材第 8 章 §8.1-8.2 · AI 社区应用实例

7.1 KKT 条件:无约束"梯度为零"的推广

为什么最优点不必梯度为零

有约束时最优点常被"顶"在边界上——负梯度被约束法向量的非负组合平衡。

一般约束问题的 KKT 条件:存在乘子 $\lambda_i \ge 0$$\mu_j$ 使:

$$\nabla f(\mathbf{x}^*) + \sum_{i=1}^m \lambda_i \nabla g_i(\mathbf{x}^*) + \sum_{j=1}^l \mu_j \nabla h_j(\mathbf{x}^*) = \mathbf{0}$$$$\lambda_i g_i(\mathbf{x}^*) = 0 \quad(i=1,\dots,m),\qquad \lambda_i \ge 0$$

四条含义:① 稳定性条件(上式);② 原始可行性;③ 对偶可行性($\lambda_i \ge 0$);④ 互补松紧($\lambda_i g_i = 0$)——松约束乘子为 0,紧约束乘子可正。

FJ 条件 vs KKT:FJ 不需要正则点假设,但 $\lambda_0$ 可能为 0 导致信息丢失。KKT 要求约束梯度线性无关,固定 $\lambda_0=1$ 给出真实的平衡关系。

对凸规划,KKT 条件还是充分必要的——找到满足 KKT 的点就等于找到了全局最优。
例题:$\min x_1 + x_2$ s.t. $-x_1\le 0,\ -x_2\le 0$。KKT:$\nabla f=(1,1),\ \nabla g_1=(-1,0),\ \nabla g_2=(0,-1)$$(1,1)+\lambda_1(-1,0)+\lambda_2(0,-1)=(0,0)$$\lambda_1=\lambda_2=1$$\mathbf{x}^*=(0,0)$ 是全局最优。

教材第 8 章 §8.2「KKT 条件」(定理 8.3-8.6)· 凸规划 KKT 充分性

7.2 罚函数法——把约束"装进"目标函数

外罚从外部逼近、内罚从内部逼近

核心思想:$\min f$ s.t. 约束 → 一系列无约束 $\min f + \sigma P(x)$$\sigma\to\infty$ 时逼近原问题。

外罚函数法:

$$\min F(\mathbf{x},\sigma) = f(\mathbf{x}) + \sigma_k \left(\sum_i[\max(0,-g_i)]^2 + \sum_j h_j^2\right)$$

$\sigma_k \to \infty$(外罚因子逐次放大),每次求解无约束子问题,解从可行域外部逐渐逼近。

教材例题:$\min x_1^2 + x_2^2$ s.t. $x_1+1 \le 0$。外罚 $F = x_1^2+x_2^2+\sigma[\max(0,x_1+1)]^2$;令 $\partial F/\partial x_i=0$$x_1(\sigma)=-\sigma/(\sigma+1) \to -1,\ x_2(\sigma)=0$

内罚(障碍)函数法:在可行域内部筑墙,$r_k\to 0$ 时墙撤去。要求初始点在内部。

罚因子过大的问题:问题变得"病态"(条件数爆炸),数值不稳定。解决:增广拉格朗日法(罚 + 显式乘子)。

其他方法:Zoutendijk 可行方向法(线路上逐步下降保持可行)、投影梯度法、SQP(序列二次规划)。

教材第 8 章 §8.4「外罚函数法」·「内罚函数法」· §8.3「可行方向法」· §8.5「SQP」

7.3 AI 约束优化案例

自动驾驶与联邦学习

自动驾驶路径规划:总耗时最小 $\min T_{\text{total}}$ s.t. 避障($d(\mathbf{p}_t, O_k) \ge d_{\min}$ 不等式约束)、限速($v_{\min} \le v_t \le v_{\max}$ 盒约束)、终点到达($\mathbf{p}_T = \mathbf{p}_{\text{goal}}$ 等式约束)→ 这是典型约束非线性规划。

联邦学习隐私约束:各客户端本地训练时,梯度加噪声(差分隐私),需要在"隐私预算 ≤ ϵ"的约束下最大化模型精度 → 约束优化。常用罚函数或投影梯度处理。

教材第 8 章 · AI 社区应用实例

🧪 模块 7 随堂检测

Q12:KKT 条件中 $\lambda_i g_i(x^*) = 0$ 的含义是什么?
A. 所有约束必须取等号
B. 所有 λ 必须为零
C. λ 等于 g 的梯度
D. 松约束的乘子为零,紧约束乘子可正

模块 8 · 前沿总结——大模型时代的 AI 优化与算法选型

8.1 大模型优化前沿

AdamW + 并行 + 混合精度 + 学习率调度

· AdamW 解耦权重衰减:大模型训练默认优化器。梯度更新与正则化独立,避免了 Adam 中权重衰减与自适应学习率相互削弱的问题。

· 数据并行 + 模型并行:梯度聚合(All-Reduce)、ZeRO 状态分片(DeepSpeed)、流水线并行(GPipe)——核心是在集群中高效分布式执行 $\nabla f(\theta) = \frac{1}{N}\sum_i \nabla f_i$

· 混合精度训练:FP16 前向 + FP16 梯度 + FP32 主参数副本。梯度缩放避免下溢。

· 学习率调度:Warmup(从 0 缓慢升到 η_max)→ Cosine 衰减(余弦平滑降至极小)→ 稳定期。

· 二阶复兴尝试:Shampoo(块对角预条件)、K-FAC(自然梯度近似)、Muon——旨在不存储完整 Hesse 的情况下利用曲率信息。

AdamW 论文 / ZeRO 论文 / 教材第 7 章拟牛顿法与共轭梯度

8.2 非凸优化与 AI 的鞍点问题

为什么 SGD 在非凸任务上仍能找到好解?

深度网络的损失面高度非凸,但实践中 SGD+动量+合适的学习率总能找到不错的解。原因:

· 鞍点远多于局部极小:高维空间中鞍点(Hesse 有正有负特征值)数量指数级多于严格局部极小点。随机梯度噪声帮助逃离鞍点。

· 过参数化现象:当网络宽度 >> 样本量时,所有局部极小点倾向于具有相同(接近全局最优的)损失值。

· SGD 噪声的泛化益处:平坦极小(flat minima)泛化好、尖锐极小(sharp minima)泛化差——SGD 噪声天然偏好平坦极小。

教材第 7 章最优性条件 · AI 社区研究

8.3 🗺️ 算法选型决策树 —— 拿到 AI 问题该怎么选?

三维决策:线性/非线性 × 有无约束 × 数据规模

点击以下分支逐步导航:

问题是不是线性的?(目标+约束均为线性函数吗?)

✅ 线性 → 线性规划 LP:

· 小规模:单纯形法(scipy.linprog, method='simplex')

· 大规模:HiGHS(scipy.linprog, method='highs')、内点法、Gurobi/CPLEX

· 用 scipy: `res = linprog(c, A_ub=A, b_ub=b, method='highs')`

· 对偶信息需求 → 同时分析影子价格与松弛量

有约束条件吗?(等式/不等式约束 ≠ 变量界限)

❌ 无约束(或只有变量界限):

· 目标凸 + 小规模 → 牛顿法(教材 §7.4)/ BFGS(教材 §7.6)/ CVXPY

· 目标凸 + 大规模 → L-BFGS(教材 §7.6 扩展)/ 共轭梯度 FR(教材 §7.5)

· 目标非凸 + 小规模 → 多起点梯度下降 + 重启

· 目标非凸 + 大规模 → SGD / AdamW(模块 5)· 学习率 warmup + cosine

数据规模多大?

📊 三维对照表:

问题类型推荐算法工具库
LP 标准形单纯形/HiGHSscipy.linprog
凸 QP有效集/内点CVXPY / OSQP
无约束凸小规模牛顿/BFGSscipy.optimize.minimize
无约束凸大规模L-BFGS / CGscipy.optimize.minimize(method='L-BFGS-B')
非凸大规模(AI训练)AdamW / SGDPyTorch / TensorFlow
有约束非线性SQP / 罚函数scipy.optimize.minimize(method='SLSQP')
凸约束 (中规模)内点法CVXPY

全课程综合 · 教材第 1-8 章总览

8.4 课程总结与进阶资源

8 模块回顾 + 推荐书目

课程知识地图回顾(8 模块):

三要素框架(模 1)→ LP 建模与标准形(模 2)→ 顶点最优 + 单纯形 + linprog(模 3)→ 对偶理论 + SVM(模 4)→ GD/SGD/AdamW(模 5)→ 凸优化全局最优(模 6)→ KKT + 罚函数 + 应用(模 7)→ 大模型前沿 + 选型(模 8)

进阶推荐:

· Boyd & Vandenberghe《Convex Optimization》(凸优化圣经)

· Nocedal & Wright《Numerical Optimization》(数值优化权威教材)

· 本教材第 10-26 章(组合优化、图论算法、整数规划、NP 完全性 → 离散优化的完整世界)

分组实战:基于鸢尾花(Iris)数据集,分别用梯度下降、牛顿法训练逻辑回归,对比收敛速度、准确率与调参体验。

全课程综合 · 教材后续章节指引

🧪 模块 8 随堂检测

Q13:AdamW 与 Adam 的关键区别是什么?
A. 使用 Nesterov 动量
B. 权重衰减与梯度更新解耦
C. 增加二阶动量项
D. 去除偏差修正
📊 已访问