【数学基础】KKT条件

继前面讲的拉格朗日乘子法。拉格朗日乘子法主要用于求解等式约束的问题,当约束加上不等式之后,情况变得更加复杂,首先来看一个简单的情况,给定如下不等式约束问题:

【数学基础】KKT条件_第1张图片

对应的 Lagrangian 与图形分别如下所示:

【数学基础】KKT条件_第2张图片

【数学基础】KKT条件_第3张图片

【数学基础】KKT条件_第4张图片

上面这段话可能描述的不够清楚。我总结一下。上图左表达的是,当我们要找的局部最优解(或者全局最优解)刚好就在约束条件的可行区域内部(这个时候最优解对应的是g(x)<0),此时约束条件就没有任何的作用,故此时我们可以让\lambda=0,因为约束条件没有作用。上图右表达的就是没有约束条件下的局部最优解(或者全局最优解)在加上约束条件之后,就取不到了(不在可行域之中了),这时可行域中的局部最优解(或者全局最优解)一定会在边界g(x)=0处取到。所以无论哪种情况都会得到:

【数学基础】KKT条件_第5张图片

其实就是在这种情况下,我们考虑上图右约束圆圈的边界,而最优点就落在,约束条件的圆心与目标函数的圆心相连直线与边界相交的那个点上。

有一点需要注意的是,在无约束的拉格朗日乘子法中等式约束与目标函数的梯度是平行的,在这里其实也是平行的,但多了一个条件不仅要平行还要相反,故\lambda必须>0,在等式约束中就没有这个限制。

【数学基础】KKT条件_第6张图片

看完这张图你可能会觉得这和我上面讲的不一样,但实际上是一样的。这一段不是在解释为什么\lambda为什么一定要大于0,而是在解释当取到最优解的时候,(用我上面的话来讲就是)最优点就落在,约束条件的圆心与目标函数的圆心相连直线与边界相交的那个点上。它是在解释为什么两者是平行的(线性相关的)。

其实按照我之前的理解来就好了,图中的梯度只画了一个目标函数的,容易搞混了,在红点处其实还有一个反方向的约束条件的梯度。

可见对于不等式约束,只要满足一定的条件,依然可以使用拉格朗日乘子法解决,这里的条件便是 KKT 条件。接下来给出形式化的 KKT 条件 首先给出形式化的不等式约束优化问题:

【数学基础】KKT条件_第7张图片

列出 Lagrangian 得到无约束优化问题:

【数学基础】KKT条件_第8张图片

经过之前的分析(算上拉格朗日乘子法处理等式约束那一篇文章的),便得知加上不等式约束后可行解 x(局部最优解或全局最优解,可能有多个,要代原式中判断) 需要满足的就是以下的 KKT 条件:

【数学基础】KKT条件_第9张图片

注意这边L只对x求偏导。

满足 KKT 条件后极小化 Lagrangian 即可得到在不等式约束条件下的可行解。 KKT 条件看起来很多,其实很好理解:

(1) :拉格朗日取得可行解的必要条件;

(2) :这就是以上分析的一个比较有意思的约束,称作松弛互补条件;

(3) ∼∼ (4) :初始的约束条件;

(5) :不等式约束的 Lagrange Multiplier 需满足的条件。


一个简单的例子

【数学基础】KKT条件_第10张图片

其实这边有个问题,约束函数一般是取到等号的,不然很有可能就无解了。

 

【数学基础】KKT条件_第11张图片

还有两个约束就是原本的不等式约束g_1(x)<=0,g_2(x)<=0

用这6个等式联立方程组解出x,\alpha就好了。在例子原文中作者啰嗦了一大堆。但实际上就是这个道理。不过对于这种求解方程组的工作,会有一些更高效的方法去做。如SMO算法。以后有时间会再详细讲解的。

SVM 中的支持向量便是来自于此,需要注意的是 KKT 条件与对偶问题也有很大的联系,下一篇文章就是拉格朗日对偶。


从拉格朗日乘子法到KKT条件,讲了这么多,对于拉格朗日乘子\alpha或者\lambda在做什么似乎还没有明了的讲过。

拉格朗日乘子加入到目标函数中,有两个作用:

  1. 将约束函数引入到目标函数中,转化为无约束问题,不满足约束条件的解会使得目标函数无穷大,故而无解。
  2. 引入拉格朗日乘子另一个最大的作用就是将约束条件与目标函数混在一起,使得我们可以同时计算目标函数的梯度与约束条件的梯度,根据相关的性质从而找到我们想找到的局部最优解或者全局最优解。

参考文章:

约束优化方法之拉格朗日乘子法与KKT条件

解密SVM系列(一):关于拉格朗日乘子法和KKT条件

 

你可能感兴趣的:(数学,最优化)