数学——KKT condition
实际上,之前的文章中已经多次提到了KKT条件,比如机器学习中SVM,以及信息论中信道容量.但是都是具体问题下的kkt条件。这次来概括说明下,纯数学中的kkt条件。 要说KKT条件,是离不开lagrange multiplier,也就是拉格朗日乘数法。这是在求约束极值下一个非常重要的方法,可以参考:lagrange multiplier。
那么什么是KKT条件呢?
对于目标函数,约束函数,,如果他们在点都是连续可微的,那么是一个局部最优解,那么需要满足下面几个条件:
- stationary
- for maximizing $f(x):\nabla f(x^\*) = \sum_ {i=1}^m\mu_i\nabla g_i(x^\*)+ \sum_ {j=1}^n\lambda_i\nabla h_j(x^\*)$
- for minimizing $f(x):-\nabla f(x^\*) = \sum_ {i=1}^m\mu_i\nabla g_i(x^\*)+ \sum_ {j=1}^n\lambda_i\nabla h_j(x^\*)$
- primal feasibility
- , for
- , for
- Dual feasibility
- , for
- complementary slackness
- , for .
这几个条件就是KKT条件。如果,可以看到的就是高数中的条件极值问题,也就是约束为.
这几个条件是怎么得到的?什么道理?实际上之前的SVM中说明了。假如我们要minimize,那么约束条件可以转化为dual problem:
为了让上面的式子和有约束的情况下一样,我们需要保证,因为我们需要让上式满足这个约束。加入有,那么在这一步会将它放至无限大,导致的时候它一定不会被选到。所以是dual feasibility,而primal feasibility也很好理解,也就是那些约束。
至于complementary slackness, 也是很好理解的。如果解上式,最终会得到,因此得到.
而stationary也就是对对偶问题两侧求导并得0得到的条件。
在凸函数上,满足KKT条件是就是最优解,也就是充要条件,否则只是最优解的必要条件。