KKT条件


[TOC]

无约束优化问题——求导

首先我们复习下:

给定一个目标函数$f=R^n\rightarrow R^n$,求出目标函数的最小值,记为:

找出最小值的办法很简单,就是单纯的对$f(x)$求导,令导数等于0,得到的解$x^*$就是目标函数的极小值点了

等式约束优化问题——拉格朗日乘子法

首先,梯度方向是函数值增长最快的方向。

给定一个目标函数$f = R^n \rightarrow R^n$,在满足约束条件$g(x) = 0$的前提下,使得$f(x)$有最小值。这个约束问题记为:

假如P点是f(x)在约束条件g(x)下的极值点,假设一个参数方程$\large{r(t)=(x_1(t),x_2(t)…x_n(t))}$是一个曲线,它在约束条件的表面,切$\large{r(0)=P}$点,假设$\large{h(t)=f(x_1(t),x_2(t)….,x_n(t))} = f(r(t))$

则有$\large{h’(t)=\nabla f(x)|_{r(t)}\cdot r’(t)}$

又因为P点为极值点,所以$\large{h’(t)=\nabla{f}|_{P}\cdot{r’(t)}=0}$

所以$\large{f|_{P}}$在点P处垂直于$\large{r(t)}$。而$\large{r(t)}$是约束面上的任意曲线,所以$\large{f|_{p}}$在P处垂直于$\large{g(x)=0}$

所以$\large{\nabla{f|_{P}=\lambda{\nabla{g_P}}}}$

所以$\large{\nabla{f(x)=\lambda{\nabla g(x)}}} \rightarrow \nabla f(x)-\lambda\nabla g(x) =0$

所以令$\large{L(x,\lambda)=f(x)-\lambda g(x)}$。对它求导,令导数=0得到的点就是极值点.即

不等式约束优化问题——KKT条件

对于不等式约束的优化

等价于

对于等式约束,由于$\large \lambda{g(x)}=0$恒成立,所以对因子没有约束,但是不等式约束中,我们必须对因子进行约束

对于$\large{g(x)\leq0}$,我们引入一个松弛变量$\large{a^2}$,使得$\large{g(x)+a^2}=0$,这样我们把不等式约束转化为等式约束问题了

对等式约束使用拉格朗日乘子法,有拉格朗日函数

$\large{L(x,\lambda, a)=f(x) + \lambda(g(x)+a^2)}$,则有

对(3)式

$\lambda$等于0,a不等于0时,得到g(x)<0,$\lambda g(x)$=0,可认为g(x)不起约束

a等于0,$\lambda$不等于0,得到g(x)=0,所以$\lambda>0$。g(x)起到了约束作用

综上,可以发现

  1. $\large{\lambda\geq0}\quad(4)$。乘子大于等于0从目标函数就可以看出,不等式约束小于0,目标函数又是最小化,乘子肯定大于等于0。

  2. $\large{\lambda g(x) = 0}$,因为$\large g(x)和\lambda$总有一个为0

所以我们的得到,对不等式约束

$\large{min\ f(x) \\ s.t\quad g(x)\leq 0}$

我们有

更一般的,有约束问题

KKT条件为: