拉格朗日乘子法
字数 1894 2025-10-27 19:14:30

拉格朗日乘子法

拉格朗日乘子法是一种求解约束优化问题的经典方法,尤其适用于等式约束问题。它的核心思想是将约束条件融入目标函数中,从而将约束问题转化为无约束问题来求解。下面我们逐步展开讲解。


第一步:理解约束优化问题的基本形式

考虑以下等式约束优化问题:

\[\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条件。该方法在工程、经济学和机器学习中广泛应用,是理解约束优化理论的关键工具。

拉格朗日乘子法 拉格朗日乘子法是一种求解约束优化问题的经典方法,尤其适用于等式约束问题。它的核心思想是将约束条件融入目标函数中,从而将约束问题转化为无约束问题来求解。下面我们逐步展开讲解。 第一步:理解约束优化问题的基本形式 考虑以下等式约束优化问题: \[ \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条件。该方法在工程、经济学和机器学习中广泛应用,是理解约束优化理论的关键工具。