文章
优化问题
本文目录 5
Intro
优化问题是数学/算法中的一个重要的工具
梯度和梯度下降法
设多元函数 在点 的某邻域内可微,则称由该函数在点 处的所有一阶偏导数组成的列向量
为函数 在点 处的梯度
它指向函数值增加最快的方向,其长度表示沿该方向单位距离上函数值增加的最大速率
那么这个定义是怎么来的呢?这里就要引入一个新的概念,即函数在一个点附近的变化率方向导数,记作
这里是一个单位向量,这个导数表示的就是我朝一个单位方向走一步的瞬时变化值
由多元函数链式法则(推导见附录): [ \frac{d}{dt} f(x(t)) = \sum_{i=1}^n \frac{\partial f}{\partial x_i} \cdot \frac{d x_i}{dt} ]
因为 ,代入得: [ \frac{d}{dt} f(x_0 + t u) = \sum_{i=1}^n \frac{\partial f}{\partial x_i}(x_0 + t u) \cdot u_i ]
在 处取极限: [ D_u f(x_0) = \left. \frac{d}{dt} f(x_0 + t u) \right|{t=0} = \sum{i=1}^n \frac{\partial f}{\partial x_i}(x_0) \cdot u_i ]
拉格朗日乘子法
一、解决目标
在给定一个或多个等式约束的条件下,求解多元函数(目标函数)的局部极值(最大值或最小值)。
- 如果没有约束,我们直接令所有偏导数为 0 即可,然后解方程即可
- 但有了约束,变量的取值被限制在一条曲线、一个曲面或更高维的“流形”上,不能自由移动。
- 拉格朗日乘子法的目标就是:把“带约束的极值问题”转化为“无约束的极值问题”来求解。
二、应用条件
| 条件类别 | 具体要求 | 说明 |
|---|---|---|
| 问题形式 | 目标函数 在等式约束 ()下求极值 | 只适用于等式约束;若是不等式约束,需改用 KKT 条件 |
| 可微性 | 和所有 在定义域内连续且一阶偏导数存在 | 因为方法的核心是求梯度,不可导则无法使用 |
| 约束正则性(LICQ) | 在极值点处,所有约束的梯度 必须线性无关(且均不为零向量) | 保证拉格朗日乘子 存在且唯一;否则方法可能失效或给出错误点 |
| 结果性质 | 求出的只是候选极值点(必要条件),是否为真正极值需额外验证 | 需用二阶条件(在约束切空间上检查海森矩阵的正定/负定性)或直接比较数值 |
补充:如果问题恰好是凸优化( 为凸函数,等式约束为线性仿射函数),则满足上述条件后,求出的点自动是全局最优解,无需二阶验证。
三、应用方法(具体怎么操作?步骤是什么?)
标准步骤(单约束情况,多约束同理推广):
Step 1:构造拉格朗日函数
引入一个或多个新变量(称为拉格朗日乘子 ),构造辅助函数:
[
\mathcal{L}(x_1,\dots,x_n,\lambda) = f(x_1,\dots,x_n) + \lambda , g(x_1,\dots,x_n)
]
(有些教材用减号,符号不影响本质,只影响 的正负号)
Step 2:对所有变量及 求一阶偏导数,并令其等于 0
得到方程组:
[
\begin{cases}
\dfrac{\partial \mathcal{L}}{\partial x_i} = \dfrac{\partial f}{\partial x_i} + \lambda \dfrac{\partial g}{\partial x_i} = 0, & i=1,\dots,n \[10pt]
\dfrac{\partial \mathcal{L}}{\partial \lambda} = g(x_1,\dots,x_n) = 0
\end{cases}
]
Step 3:解这个方程组
得到所有可能的候选点 及对应的 。
Step 4:验证是否为真正的极值点
- 若问题为凸优化,直接确认是全局最优。
- 否则,使用二阶充分条件(即检查拉格朗日函数在约束切空间上的海森矩阵是否正定/负定),或通过实际数值比较。
多约束的推广
若有 个等式约束 ,则构造: [ \mathcal{L} = f + \sum_{k=1}^m \lambda_k g_k ] 然后对所有 和所有 求偏导为零,得到 个方程,解出 个未知数。
四、原理
几何直观解释
- 在无约束时,极值点处目标函数的梯度 (各个方向都不能再下降/上升)。
- 在有约束时,变量只能在约束曲面()上移动。在极值点处,沿着约束曲面任何切线方向移动,目标函数 都不能再变化。
- 这意味着: 必须与约束曲面垂直(即与所有切向量点积为 0)。
- 而约束曲面的法线方向恰好是 的方向。
因此, 必须与 平行,即存在实数 使得: [ \nabla f + \lambda \nabla g = 0 ] 这正是拉格朗日函数对 求偏导为零的向量形式。
代数推导(简版)
在极值点 处,对约束 作微小扰动 (须满足 ),由于 取极值,也有 。
因此, 和 都正交于同一个切空间(由所有 张成),所以二者必须共线。引入比例系数 即得上述方程。
乘子 的额外含义(敏感性)
本身也有实际意义:它表示约束右端项(即常数项)发生微小变化时,目标函数最优值的变化率。
在经济学中, 被称为“影子价格”,反映约束资源的稀缺程度。
五、总结(一张图概括)
| 维度 | 核心内容 |
|---|---|
| 解决目标 | 等式约束下求多元函数的极值 |
| 应用条件 | 等式约束、可微、约束梯度线性无关(LICQ);求出的为候选点 |
| 应用方法 | 构造 ,对各变量和 求偏导为零,解方程组,再验证 |
| 原理 | 极值点处 与约束梯度 平行(几何:梯度与约束曲面法线共线) |