最优化问题 KKT 条件的直观解释
1带约束的优化
在最优化问题中,经常需要添加一些约束条件,此时问题表示为:
或者写成向量形式,
其中,
注意,这一问题中的目标函数和约束函数是允许一般情况的,不一定是指凸函数。如果限制在凸函数,那后面处理起来会方便一些。但本文的主角 KKT 条件并不局限于凸函数。
对于一个不等式约束
按惯例,把等式约束
这个问题怎么解呢?我们知道,无约束的优化问题以及带等式约束的优化问题也不是很好求的,更何况现在还多了一些不等式约束。
对于带等式约束的优化问题,我们知道有著名的拉格朗日乘子法。
2只带等式约束
为了逐步进入状态,我们先来看一下这种只带等式约束的情况。
首先,构造拉格朗日函数,
为了求其驻点(stationary point),取各变元偏导数并置为
现将
于是就得到一个方程组(线性和非线性都有可能)。然后想办法解之,得解
需要注意的是,上面给出的只是最优值的必要条件。但这样子至少可以拿来判定有没有可能是我们要的带约束问题的极值点。
另外,如果函数
我们来总结一下上述做法的基本思路,
将一个带等式约束的优化问题转换为一个无约束的优化问题;进而得到带约束优化问题的极值点的必要条件。
为了跟后面的 KKT 条件在形式上一致,我们将上述拉格朗日乘子法的极值点必要条件罗列如下,
.几何解释 .
上述两个条件中的第
主要看第
第
第
如果有多个约束条件,这相当于说函数在该点处的梯度与所有约束条件在该点处的梯度方向构成的子空间的正交补正交。或者说函数在该点处的梯度与该点处的可行方向都正交。
3KKT 条件
现在,我们来看带不等式约束的最优化问题,
多了一些不等式约束,我们还能不能使用同样的招术,将之转化为无约束优化问题呢?
先不管那么多,先撸起来再说。我们仿照拉格朗日函数,将上述问题中的函数和约束条件写成如下形式,
同样的,为了便于描述,我们也简化一下,只考虑带一个不等式约束的情况。
此时,该问题的广义拉格朗日函数为,
然后像上面一样,试着计算驻点,得到
然后再求一下
咦!等等!这不是跟上面只带等式约束时的情况一样了吗?
其实这样做是不对的。因为此时函数
虽然形式上类似,但现在这种情况与等式约束时的情况还是有所不同的。
因为此时
那问题是,接下来到底怎么整?
此时想起一句俗语,用在此处或许比较恰当。正所谓,
解铃还须系铃人。
答案就在约束条件
当
时,什么情况下 才可能成为目标函数在带约束下的极值点,即边界解; 当
时,什么情况下 才可能成为目标函数在带约束下的极值点,即内部解。
对照下图,分两种情况来解读:
.边界解 .
先看左图,当
像等式约束时一样,两者要共线才行,要不然还有局部移动的余地使得目标函数值变得更小。但与等式约束不同的是,不光共线就行,还要反向,如果共线但同向,是成不了极小点的。例如,上左图里的红色箭头(即
那怎么做到要求它满足共线反向呢?
我们将等式约束中
只要
因此,第一种情况的条件为,
.内部解 .
现在我们考虑第二种情况,上面图片中右边的情况,当
此时约束条件不起作用,约束优化问题退化为无约束优化问题。我们直接从拉格朗日函数中把它除去就行了,即令
因此,第二种情况的条件为,
.小 结 .
极值点处函数关于
其实它包括了两种情况,
1、当
2、当
通过一个式子,完美地将它们整合在一起了。
.KKT 条件 .
有了上述简易情况下的图示,我们可以发挥想象,把它们整合起来得到完整的形式。
最后,对于最小化
Stationarity
Primal feasibility
Dual feasibility
Complementary slackness
最后一个条件翻译过来就是互补松弛
,它将我们上面讨论的两种情况囊括在一个式子里,而不需要 if else
之类的方式。另外,这一条有时也写成等价形式:
严格来说,我们考虑的优化问题还需要满足一些正则条件,那么原始约束优化问题的极值点
例如,LICQ(Linear independence constraint qualification
),即起作用约束(包括等式约束和不等式约束)的梯度在
至于 KKT 条件的应用,留给后文中再来展开吧。
相关阅读