🎯 本章导读
优化是数学、工程和机器学习中的核心问题。本章介绍优化的基础理论,包括如何寻找函数的极值点、判断极值类型,以及梯度下降这一重要的数值优化方法。
19.1 极值问题引入
优化问题(Optimization Problem)是指在给定约束条件下,寻找使目标函数达到最大值或最小值的参数取值。
标准形式
公式 (1)
其中 f(x) 是目标函数,gi(x) 是不等式约束,hj(x) 是等式约束。
📌 无约束优化
没有约束条件的优化问题。主要通过求导数为零的点来寻找极值。
🔗 约束优化
有约束条件的优化问题。需要使用拉格朗日乘数法等方法求解。
常见应用场景
19.2 一元函数极值
极值的定义
对于一元函数 f(x),如果存在点 x₀,使得在其邻域内:
公式 (2)
图 1. 函数的极值点示意图
一阶导数判别法
函数 f(x) 在点 x₀ 处取得极值的必要条件是:
(驻点或临界点)
公式 (3)
⚠️ 注意:导数为零是必要条件但不是充分条件。导数为零的点不一定是极值点(如拐点)。
二阶导数判别法
如果 f'(x₀) = 0,则可以用二阶导数判断极值类型:
公式 (4)
📝 例题:求 f(x) = x³ - 3x² - 9x + 5 的极值
19.3 多元函数极值
对于多元函数 f(x₁, x₂, ..., xₙ),极值判定需要使用梯度和Hessian矩阵。
梯度为零的必要条件
函数在点 x₀ 处取得极值的必要条件是梯度为零向量:
公式 (5)
图 2. 二元函数极值点的等高线图
二元函数示例
📝 例题:求 f(x, y) = x² + y² - 4x - 6y + 13 的极值
19.4 Hessian矩阵
Hessian矩阵(Hessian Matrix)是由函数的二阶偏导数组成的方阵,用于判定多元函数的极值类型。
Hessian矩阵定义
对于二元函数 f(x, y),Hessian矩阵定义为:
公式 (6)
💡 注意:对于光滑函数,混合偏导数相等:
∂²f/∂x∂y = ∂²f/∂y∂x
(Schwarz定理)
极值判别法
设 (x₀, y₀) 是驻点(即 ∇f = 0),令:
公式 (7)
判别准则
图 3. 三种驻点类型的等高线对比
📝 例题:判断 f(x, y) = x² + y² - 4x - 6y + 13 的极值
Hessian矩阵判别器
调整二阶偏导数值,实时观察驻点类型变化
二阶偏导数
Hessian矩阵
计算结果
驻点类型:局部最小值
函数在此点达到局部最小值,Hessian矩阵正定
预设示例
等高线可视化
💡 探索建议:尝试调整 A、B、C 的值,观察判别式 Δ 和驻点类型的变化。注意鞍点的等高线呈马鞍形状。
19.5 梯度下降法
梯度下降法(Gradient Descent)是一种迭代优化算法,通过沿着梯度的反方向更新参数,逐步逼近函数的极小值点。
基本思想
梯度 ∇f(x) 指向函数值增长最快的方向,因此负梯度方向就是函数值下降最快的方向。
梯度下降迭代公式
公式 (8)
梯度下降动画演示:f(x) = x²
观察从起点 x₀ = 10 逐步下降到最小值点 x* = 0 的过程
💡 观察要点:学习率过小时收敛慢,过大时可能振荡。观察每步更新如何沿负梯度方向减小函数值。
学习率的影响
α 太小
收敛速度慢,需要很多次迭代
α 合适
快速收敛到最优解
α 太大
可能振荡或发散,无法收敛
梯度下降变体
批量梯度下降(Batch GD)
每次迭代使用全部训练数据计算梯度
准确但计算量大
随机梯度下降(Stochastic GD)
每次迭代随机选择一个样本计算梯度
快速但有噪声
小批量梯度下降(Mini-batch GD)
每次迭代使用一小批样本计算梯度
平衡速度和稳定性,最常用
📝 例题:用梯度下降求 f(x) = x² 的最小值
优化算法的改进
为了提高梯度下降的性能,研究者提出了许多改进算法:
🚀 动量法(Momentum)
利用历史梯度信息,加速收敛并减少振荡
📊 AdaGrad
为每个参数自适应调整学习率
🎯 Adam
结合动量和自适应学习率,深度学习最常用
⚡ RMSprop
自适应调整学习率,适合非平稳目标
优化算法对比:f(x,y) = x² + y²
对比不同优化算法从起点 (8, 6) 收敛到最优点 (0, 0) 的路径
直接沿负梯度方向更新,路径较直但收敛慢
利用历史梯度信息,加速收敛并减少振荡
自适应学习率,收敛最快且最稳定
💡 观察要点:注意不同算法的收敛速度和路径平滑度。Adam 通常收敛最快,动量法路径更平滑,标准梯度下降最直接但可能较慢。
📋章节总结
核心内容回顾
多元函数:∇f = 0(必要条件),Hessian矩阵判断极值类型
Δ > 0:极值点;Δ < 0:鞍点;Δ = 0:不确定
沿负梯度方向更新参数,逐步逼近最小值点