数学——KKT condition

实际上,之前的文章中已经多次提到了KKT条件,比如机器学习中SVM,以及信息论中信道容量.但是都是具体问题下的kkt条件。这次来概括说明下,纯数学中的kkt条件。 要说KKT条件,是离不开lagrange multiplier,也就是拉格朗日乘数法。这是在求约束极值下一个非常重要的方法,可以参考:lagrange multiplier

那么什么是KKT条件呢?

对于目标函数f:nf:\mathbb{R}^n \rightarrow \mathbb{R},约束函数gi:ng_i: \mathbb{R}^n \rightarrow \mathbb{R},hj:nh_j: \mathbb{R}^n \rightarrow \mathbb{R},如果他们在点x*x^ *都是连续可微的,那么x*x^ *是一个局部最优解,那么需要满足下面几个条件:

  • 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
    • gi(x*)0g_i(x^ *) \leq 0, for i=1,...,mi=1,...,m
    • hj(x*)=0h_j(x^ *) = 0, for j=1,...,nj=1,...,n
  • Dual feasibility
    • μi>0\mu_i > 0, for i=1,...,mi=1,...,m
  • complementary slackness
    • μigi(x*)=0\mu_ig_i(x^*)=0, for i=1,...,mi=1,...,m.

这几个条件就是KKT条件。如果m=0m=0,可以看到的就是高数中的条件极值问题,也就是约束为hi(x)=0h_i(x)=0.

这几个条件是怎么得到的?什么道理?实际上之前的SVM中说明了。假如我们要minimize,那么约束条件可以转化为dual problem: minμi,μi0(max(f(x)+i=1mμigi(x)+j=1nλjhj(x))) \min_ {\mu_i,\mu_i \ge 0} (\max (f(x)+\sum_ {i=1}^m \mu_i g_i(x) + \sum_ {j=1}^n \lambda_j h_j(x) ))

为了让上面的式子和有约束的情况下一样,我们需要保证μi0\mu_i \ge 0,因为我们需要让上式满足这个约束gi(x)0g_i(x) \ge 0。加入有xθ,gi(xθ)>0x_ {\theta},g_i(x_ {\theta})>0,那么在max\max这一步会将它放至无限大,导致minmin的时候它一定不会被选到。所以μi0\mu_i \ge 0是dual feasibility,而primal feasibility也很好理解,也就是那些约束。

至于complementary slackness, 也是很好理解的。如果解上式,gi(x)<0g_i(x)<0最终会得到ui=0u_i=0,因此得到μigi(x*)=0\mu_ig_i(x^*)=0.

而stationary也就是对对偶问题两侧求导并得0得到的条件。

在凸函数上,满足KKT条件是就是最优解,也就是充要条件,否则只是最优解的必要条件。