一、引言
对于无约束最优化问题,其搜索空间是无界的,只要确定了搜索方向和步长因子,便可以在一轮或几轮迭代之后找到最优解或近似最有解。这里举个不太恰当的例子,无约束最优化如同在浩瀚的宇宙中寻找体积最大的星球,你按照一定的策略去找,不用担心越界。
而约束的优化问题就不同了,在寻找最优解的过程中始终要在某一个约束范围空间内进行。还是以上述例子说明,约束最优化如同在浩瀚的宇宙中寻找体积最大的星球,你按照一定的策略去找,但是不能离开银河系。KKT条件正是这类最优化问题的最优解必须要满足的条件,言外之意便是只要是最优解,必然满足这个条件,反之则不然;但对于凸问题,确是充分必要条件,这一点很重要,很多问题是凸的,这就为问题求解带来很大的便利性。
为了方便后续说明,本文以最小化下列同时含有等式约束和不等式约束的函数为例。
二、起作用约束和不起作用约束
在约束问题最优化中,约束分为起作用约束和不起作用约束两种。
设红色圆点表示 ,三条曲线表示约束条件,共同构成可行域的边界。其中,与相交的约束条件便是该点的起作用约束,而不相交的曲线称为该点的不起作用约束。其中,箭头表示约束边界在处的梯度。
为什么要这样说那? 这是因为它处在可行域的边界之上,与相交的约束曲线限制了从 开始的下一步的搜索方向,,沿着某些方向稍微一动,必然后离开可行域; 而不与相交的约束曲线对次没有限制,只要步伐不是太大,可以向四面八方随意游走,总不会越过约束曲线。由此,可得两点结论
- 约束起作用与否是相对于某一点而言的
- 所谓的起作用约束即点位于该约束曲线上
后续,将与起作用的约束下标集合记为 。
三、可行方向
设 为可行域内以为起点的向量。在上图的基础上,利用下图说明与约束条件满足何种关系时是可行方向。
其中,红色圆点表示,黑色箭头表示两个起作用约束在处的梯度向量。分别以红色和蓝色箭头表示并进行讨论。
- 与其中一个起作用约束在点处的梯度夹角大于90度,稍微离开一点便于离开可行域。
- 与两个梯度向量的夹角均小于90度,稍微离开一点不会离开可行域。
因此,若为可行方向,与所有在点处起作用约束的梯度向量所形成的的夹角都必须小于90度。更加严格的证明是通过在处的泰勒展开式进行证明,此处为了便于理解仅做一个直观的说明。
四、KKT条件
介绍完了上面的一些概念 后,来看一下KKT条件的定义。
OK,看上去很复杂的样子,其实我初次看到这个公式也有点被吓到, 不过理清了上述的概念后,便很容易的理解了这一大坨公式的意义,那我就以图文并茂的方式逐条解释一下。
1、第一条。最左边是目标函数在处的梯度向量,其余各项是在处各约束的梯度向量的线性组合,自然也是向量,要求这两个向量方向必须相同,等价的说目标函数在处的的负梯度向量的方向和它要相反!这是数学描述上的解释,直观一点可以参考下面两幅图
红色圆点表示 ,如果点 是最优解,则必然满足KKT条件,假定就是局部最小值点,择不会是右图所示的红色圆点。为什么? 如果是右图的红色圆点,那么目标函数在处的梯度向量以及所在的等值线的切线向量之间存在一块狭长的区域中,沿着点继续在此狭长区域中搜索,一定能找到一个比当前最小值还要小的值,这与我们的假设相悖!
2、第二条。对于起作用约束,约束函数值等于0,乘上一个常数因子依然等于0;对于不起作用约束,约束函数值大于零,相应的常数因子必然等于0;常数因子是否取0需要根据当前点出的函数值确定。
3、第三条。显然可由第一条推出。
四、总结
最后,根据上述讨论和从书本上看到的,总结一下:本质上,KKT条件是为了证明处已无可行下降方向,那么自然是最小值点了。顺便的推荐一下《最优化方法》这本书,何建勇著,写的非常好。