Processing math: 100%

KKT条件


[TOC]

无约束优化问题——求导

首先我们复习下:

给定一个目标函数f=RnRn,求出目标函数的最小值,记为:

minf(x)s.t xX

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

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

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

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

min f(x)s.t g(x)=0

假如P点是f(x)在约束条件g(x)下的极值点,假设一个参数方程r(t)=(x1(t),x2(t)xn(t))是一个曲线,它在约束条件的表面,切r(0)=P点,假设h(t)=f(x1(t),x2(t).,xn(t))=f(r(t))

则有h(t)=f(x)|r(t)r(t)

又因为P点为极值点,所以h(t)=f|Pr(t)=0

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

所以f|P=λgP

所以f(x)=λg(x)f(x)λg(x)=0

所以令L(x,λ)=f(x)λg(x)。对它求导,令导数=0得到的点就是极值点.即

{f(x)=λg(x)g(x)=0

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

对于不等式约束的优化

min f(x)s.tg(x)0

等价于

minx maxλ f(x)+λg(x)s.tλ0

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

对于g(x)0,我们引入一个松弛变量a2,使得g(x)+a2=0,这样我们把不等式约束转化为等式约束问题了

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

L(x,λ,a)=f(x)+λ(g(x)+a2),则有

{Lx=f(x)+miλigi(x)=0(i=1,2,...,m)(1)Lλ=migi(x)+a2=0(i=1,2,...,m)(2)La=2aλi=0(i=1,2,...,m)(3)

对(3)式

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

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

综上,可以发现

  1. λ0(4)。乘子大于等于0从目标函数就可以看出,不等式约束小于0,目标函数又是最小化,乘子肯定大于等于0。

  2. λg(x)=0,因为g(x)λ总有一个为0

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

min f(x)s.tg(x)0

我们有

{f(x)+miλigi(x)=0(i=1,2...m)λigi(x)=0(i=1,2...m)λi>0(i=1,2...m)

更一般的,有约束问题

minf(x)s.t. gj(x)0(j=1,2,...,m)hj (x)=0(j=1,2,...,m)

KKT条件为:

{f(x)+mj=1μjgj(x)+lk=1λkhk(x)=0,(i=1,2,...,n)hk(x)=0(k=1,2,...,l)μjgj(x)=0(j=1,2,...,m)gj(x)<0(j=1,2,...,m)μj0(j=1,2,...,m)