拉格朗日乘子法
拉格朗日乘子法是一种求解约束优化问题的经典方法,尤其适用于等式约束问题。它的核心思想是将约束条件融入目标函数中,从而将约束问题转化为无约束问题来求解。下面我们逐步展开讲解。
第一步:理解约束优化问题的基本形式
考虑以下等式约束优化问题:
\[\begin{aligned} \min \quad & f(x) \\ \text{s.t.} \quad & g_i(x) = 0, \quad i = 1, 2, \dots, m \end{aligned} \]
其中,\(f(x)\) 是目标函数,\(g_i(x) = 0\) 是等式约束条件。如果直接求解,需要同时满足约束和优化目标,这通常很困难。
第二步:直观理解拉格朗日乘子法的动机
假设只有一个约束 \(g(x) = 0\)。在最优解 \(x^*\) 处,目标函数 \(f(x)\) 的等高线(contour)必然与约束曲面 \(g(x) = 0\) 相切。否则,我们可以沿约束曲面移动以进一步降低 \(f(x)\)。相切意味着 \(\nabla f(x^*)\) 和 \(\nabla g(x^*)\) 平行,即存在标量 \(\lambda\)(称为拉格朗日乘子)使得:
\[\nabla f(x^*) = \lambda \nabla g(x^*) \]
第三步:构建拉格朗日函数
为了系统化地求解,引入拉格朗日函数:
\[\mathcal{L}(x, \lambda) = f(x) - \sum_{i=1}^m \lambda_i g_i(x) \]
其中,\(\lambda_i\) 是对应于第 \(i\) 个约束的拉格朗日乘子。注意:这里使用减法是为了保持最优性条件的一致性(也可用加法,但需调整符号)。
第四步:推导一阶必要条件(KKT条件)
对拉格朗日函数求偏导并令其为零,得到最优解需满足的条件:
\[\begin{aligned} \nabla_x \mathcal{L} &= \nabla f(x) - \sum_{i=1}^m \lambda_i \nabla g_i(x) = 0 \\ \nabla_\lambda \mathcal{L} &= -g_i(x) = 0 \quad \text{(即约束条件)} \end{aligned} \]
这组方程称为Karush-Kuhn-Tucker(KKT)条件。对于等式约束问题,KKT条件简化为上述方程组。
第五步:几何解释与例子
以二维问题为例:
最小化 \(f(x, y) = x^2 + y^2\),满足约束 \(g(x, y) = x + y - 1 = 0\)。
拉格朗日函数为 \(\mathcal{L} = x^2 + y^2 - \lambda (x + y - 1)\)。
解KKT方程组:
\[\begin{cases} \frac{\partial \mathcal{L}}{\partial x} = 2x - \lambda = 0 \\ \frac{\partial \mathcal{L}}{\partial y} = 2y - \lambda = 0 \\ x + y - 1 = 0 \end{cases} \]
解得 \(x = y = 0.5, \lambda = 1\)。几何上,最优解是圆 \(x^2 + y^2\) 的等高线与直线 \(x + y = 1\) 的切点。
第六步:扩展到不等式约束
拉格朗日乘子法可推广到不等式约束 \(h_j(x) \leq 0\)。此时需引入互补松弛条件:
\[\lambda_j h_j(x) = 0, \quad \lambda_j \geq 0 \]
这要求要么约束紧(\(h_j(x) = 0\)),要么乘子为零。完整的KKT条件成为一般非线性规划的基石。
第七步:方法局限与扩展
- 局限性:拉格朗日乘子法仅提供必要条件(非充分),且需函数可微。
- 扩展应用:通过增强拉格朗日函数(Augmented Lagrangian)可结合罚函数法,提升数值稳定性。
- 与对偶理论关联:拉格朗日对偶问题通过优化乘子 \(\lambda\) 构建,为原问题提供下界。
总结
拉格朗日乘子法通过引入乘子将约束问题转化为无约束优化,其核心是KKT条件。该方法在工程、经济学和机器学习中广泛应用,是理解约束优化理论的关键工具。