KKT conditions
Table of Contents
1. KKT 最优化条件简介
拉格朗日乘数法,可以解决带有约束条件的极值问题,但要求约束条件都是“等式”。现实生活中会遇到约束条件为“不等式”的情况。KKT 最优化条件可以解决约束条件含有“不等式”的情况,可以看作是拉格朗日乘数法的推广。
KKT(Karush-Kuhn-Tucker) 名字来源于三个人名的缩写:不等式约束问题的必要和充分条件初见于卡罗需(William Karush)的博士论文,在一份由 W.库恩(Harold W. Kuhn)及塔克(Albert W. Tucker)撰写的研讨生论文出现后才受到重视。
2. KKT 最优化条件(拉格朗日乘数法的推广)
这里讨论的优化问题一般可表述为:求满足条件
其中
KKT 最优化条件(KKT conditions)是指,目标函数可能的极小值点满足:
在上面的方程组中,如果没有“不等式”约束条件,即
所以 KKT 最优化条件是拉格朗日乘数法的推广,拉格朗日乘数法是 KKT 最优化条件的特例。
KKT 条件中的第一个条件和拉格朗日乘数法中的条件是一样的;第二、三个条件是显而易见的,因为它们就是题设的约束条件;第四个条件称为 Dual Feasibility Condition;最后一个条件称为互补松弛条件(Complementary Slackness Condition)。
特别注意: 和拉格朗日乘数法类似,KKT 最优化条件只是必要条件。也就是最优解一定满足 KKT 条件,但满足 KKT 条件的解不一定是最优解。 我们往往根据具体问题的性质来判断找到的是不是最优解。
2.1. 如何理解“互补松弛条件”
KKT 条件中的互补松弛条件为:
“互补松弛”的字面含义是:
对
对
怎么形象地理解它呢?参见图 1 。
Figure 1: KKT 的互补松弛条件(摘自 KKT Wikipedia)
图 1 中闭合的一层层圆环是目标函数
参考:
Karush-Kuhn-Tucker (KKT) conditions
Lagrange multiplier 的 Wikipedia 有目标函数的等高线图的简单例子。
2.2. 用 KKT 最优化条件求极大值
一般在描述最优化问题时,我们习惯于讨论极小值。极大值问题可以方便地转换为极小值问题。
如何求解最大值的最优化问题:
显然,这个问题可以方便地转换为前面介绍过的最小值的最优化问题:
此时,对应的 KKT 最优化条件为:
2.3. 一般仅用 KKT 最优化条件来验证找到的解
The KKT conditions are usually not solved directly in the analysis of practical large nonlinear programming problems by software packages. Iterative successive approximation methods are most often used. The results, however they are obtained, must satisfy these conditions.
3. 实例:求不等式约束条件下函数的最小值
求解下面优化问题:
解:两个“不等式”约束条件为:
情况 1:假设
情况 2:假设
情况 3:假设
情况 4:假设
至此,我们找到一个满足 KKT 所有条件的唯一解:
参考:
Optimization models and applications: http://myweb.clemson.edu/~pbelott/bulk/teaching/lehigh/ie426-f09/lecture20.pdf
4. 从局部最优解到全局最优解(凸优化)
拉格朗日乘数法和 KKT 最优化条件找到的解都只是问题的“可能局部最优解”。
凸优化(Convex optimization)中有一个重要性质——局部最优解就是全局最优解。 当然,凸优化要求函数