0 简介
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)是一种比较最常用的方法。当求解带不等式约束的最优化问题时,通常会将原问题转化为对偶问题进行求解,这时往往会要求函数满足 KKT 条件。
这里提到的最优化问题通常是指凸优化问题,即对某一给定的凸函数,求其在指定作用域上的全局最小值(求最大值问题很容易转化成求最小值问题,然后按求最小值问题进行求解)。
求最优化问题一般会碰到以下三种情况:
- 无约束条件
- 等式约束条件
- 不等式约束条件
1 无约束条件
首先考虑不带任何约束的优化问题:
min x ∈ R n f ( x ) \min _{\boldsymbol{x}\in \mathbb{R}^{n}}f(\boldsymbol{x}) x∈Rnminf(x)
这是最简单的情况,直接令梯度为零 ∇ x f ( x ) = 0 \nabla_{\boldsymbol{x}} f(\boldsymbol{x})=0 ∇xf(x)=0 即可,若没有解析解,可用梯度下降法或者牛顿法进行迭代求解。
2 等式约束条件
当目标函数加上等式约束条件之后,问题变成如下形式:
min x f ( x ) s.t. h i ( x ) = 0 , i = 1 , 2 , … , m \begin{array}{ll}&{\min _{\boldsymbol{x}}}{f(\boldsymbol{x})} \\\\ &{\text {s.t.}} \ \ {h_{i}(\boldsymbol{x})=0,i=1,2, \ldots, m}\end{array} minxf(x)s.t. hi(x)=0,i=1,2,…,m
约束条件将解的范围限定在一个可行域内,此时不一定能找到使 ∇ x f ( x ) = 0 \nabla_{\boldsymbol{x}} f(\boldsymbol{x})=0 ∇xf(x)=0 的点,这时需要在可行域内找到使 f ( x ) f(\boldsymbol{x}) f(x) 取最小值的点,这时常用拉格朗日乘子法,引入拉格朗日乘子 α ∈ R m \boldsymbol{\alpha} \in \mathbb{R}^{m} α∈Rm ,构造拉格朗日函数如下:
L ( x , α ) = f ( x ) + ∑ i = 1 m α i h i ( x ) L(\boldsymbol{x}, \boldsymbol{\alpha})=f(\boldsymbol{x})+\sum_{i=1}^{m} \alpha_{i} h_{i}(\boldsymbol{x}) L(x,α)=f(x)+i=1∑mαihi(x)
分别令 L ( x , α ) L(\boldsymbol{x}, \boldsymbol{\alpha}) L(x,α) 对 x \boldsymbol{x} x 和 α \boldsymbol{\alpha} α 的梯度为 0 0 0
{ ∇ x L ( x , α ) = 0 ∇ α L ( x , α ) = 0 \left\{\begin{array}{l}{\nabla_{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\alpha})=0} \\\\ {\nabla_{\boldsymbol{\alpha}} L(\boldsymbol{x}, \boldsymbol{\alpha})=0}\end{array}\right. ⎩⎨⎧∇xL(x,α)=0∇αL(x,α)=0
将求得 x \boldsymbol{x} x 、 α \boldsymbol{\alpha} α 后将 x \boldsymbol{x} x 带回,即得到 f ( x ) f(\boldsymbol{x}) f(x) 在 h i ( x ) = 0 h_{i}(\boldsymbol{x})=0 hi(x)=0 约束下的最小值。
下图是带一个等式约束条件的优化问题的示例。
L ( x , α ) = f ( x ) + α h ( x ) L(\boldsymbol{x}, \alpha)=f(\boldsymbol{x})+\alpha h(\boldsymbol{x}) L(x,α)=f(x)+αh(x)
从图中我们可以看出,只有在 f ( x ) f(\boldsymbol{x}) f(x) 和 h ( x ) h(\boldsymbol{x}) h(x) 相切的点,才有可能得到满足约束的 f ( x ) f(\boldsymbol{x}) f(x) 的极小值,此时 f ( x ) f(\boldsymbol{x}) f(x) 和 h ( x ) h(\boldsymbol{x}) h(x) 的梯度必定是平行的,即
∇ x f ( x ) = λ ∇ x h ( x ) \nabla_{\boldsymbol{x}} f(\boldsymbol{x}) = \lambda \nabla_{\boldsymbol{x}}h(\boldsymbol{x}) ∇xf(x)=λ∇xh(x)
当我们利用拉格朗日乘子法求
∇ x L ( x , α ) = ∇ x f ( x ) + α ∇ x h ( x ) = 0 \nabla_{\boldsymbol{x}}L(\boldsymbol{x}, \alpha)=\nabla_{\boldsymbol{x}} f(\boldsymbol{x}) + \alpha\nabla_{\boldsymbol{x}}h(\boldsymbol{x})=0 ∇xL(x,α)=∇xf(x)+α∇