KKT条件
-
等式约束的优化问题:使用拉格朗日乘数法构建拉格朗日函数,利用求取极值的必要性,转换为无约束优化问题,可以使用梯度下降法、牛顿法,共轭梯度法等方法进行迭代求解。
-
带有不等式约束的优化问题:构建广义拉格朗日函数,然后使用KKT条件进行求解。
1. 基本原理
对于带约束的优化问题(不一定是凸问题)测试:
$$ \begin{array}{ll} \min & f_0(\boldsymbol{x}), \boldsymbol{x} \in \mathbb{R}^n \\ & f_i(\boldsymbol{x}) \leq 0 \text {, 其中 } \mathrm{i}=1,2,3 \ldots \mathrm{m} \\ \text { s.t. } & h_i(\boldsymbol{x})=0 \text {, 其中 } \mathrm{i}=1,2,3 \ldots q \end{array} $$1.1 首先构建拉格朗日函数,将原问题进行等价转换:
问题:为什么拉格朗日乘子$\lambda \geq 0$? 答:为了使得原函数 $f_{0}(x)$ 等价为 极大的拉格朗日函数。也就是上面的当 x 在可行域和不在可行域时需要满足的条件,从而将原问题等价为极小极大拉格朗日问题。
1.2 将原问题转换为对偶问题,就是最大最小过程进行交换:
这里,对偶问题进行进一步转化:
$$ \begin{array}{ll} 对偶问题: &\max _{\lambda, v} L(x,\lambda, v) \\ \text { s.t. } & \nabla_{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v})=\mathbf{0} \\ & \boldsymbol{\lambda} \geq \mathbf{0} \end{array} $$注意对偶函数 $g(\lambda,v)$的变量为 $\lambda,v$ ,然后分析对偶函数:
- $g(\lambda,v)$ 是关于变量的线性函数,因此既是凸函数也是凹函数;
- 对偶问题可行域为 $\lambda \geq 0$ ,是半空间,因此为凸空间。
所以无论原问题是不是凸问题,对偶问题一定是凸问题。
1.3 对偶问题于原问题之间解的关系
- 对偶问题的解是原问题解的下界,这是弱对偶关系,即 $P* \geq D*$。
- 对偶问题的解是原问题的解,这是强对偶关系,即 $P* = D*$
1.4 原始问题要是一个强对偶问题
需要满足:
- 原始问题为凸问题;
- 满足 Slack 条件;
1.5 最终,如何求解一个带约束的凸优化问题
使用 KKT 条件求解,KKT 条件是原始问题为强对偶问题的必要条件,也就是说原始问题如果是强对偶,那么一定满足KKT条件,但满足KKT条件,不一定是强对偶。
互补松弛是构建拉格朗日函数时需要满足的,就是松弛条件和紧致条件的特性的统一表示。
2. 补充
- 松弛条件和紧致条件