KKT条件在约束条件下求解非线性规划问题很有用,是确定某点为最优点的一阶必要条件。而对于凸规划问题而言,KKT条件是局部极小点的一阶必要条件,同时也是充分条件,而且局部极小点就是全局极小点。考虑以下数学模型:
min f(x)s. t. hi(x)=0 (i=1,2,...,m)gj(x)≥0 (j=1,2,...,l)(1)
定理:
x∗ 为可行域中的一点,
I(x∗)={i|gi(x∗)=0,1≤i≤l} ,
f(x) 与
gi(x)(i∈I(x∗)) 在点
x∗ 处可微,
gi(x) 在点
x∗ 处连续,
hj(x)(j=1,2,...,m) 在点
x∗ 处连续可微,且向量集
{∇gi(x∗),∇hj(x∗)|i∈I(x∗),j=1,2,...,m}
线性无关。若
x∗ 是上述数学模型的局部最优解,则存在
γ∗=(γ∗1,γ∗2,...,γ∗l)T 和向量
λ∗=(λ∗1,λ∗2,...,λ∗m)T ,是下述条件成立:
⎧⎩⎨⎪⎪⎪⎪∇f(x∗)−∑lj=1γ∗j∇gj(x∗)−∑mi=1λ∗i∇hi(x∗)=0γ∗jgj(x∗)=0(j=1,2,...,l)γ∗j≥0(j=1,2,...,l)(2)
第一种理解思路:
辅助概念:
1. ≥0 不等式约束,如上面的 gj(x) :可行点 x 处的可行下降方向 d 与该点处目标函数的负梯度方向的夹角为锐角,与该点起作用约束函数的梯度方向的夹角也为锐角。
2. ≤0 不等式约束:可行点 x 处的可行下降方向 d 与该点处目标函数的负梯度方向的夹角为锐角,与该点起作用约束函数的梯度方向的夹角也为钝角。
3. 等式约束,如上面的 hi(x) :可行点 x 处的可行下降方向 d 与该点处目标函数的负梯度方向的夹角为锐角,与该点处的约束函数的梯度方向向量的内积为0。
由(2)中第二个向量方程可知,当不等式约束 gj(x)≥0 在 x∗ 处为不起作用约束时, γ∗j 必为0。这样,第一个向量方程其实就是可行点 x∗ 处的目标函数梯度方向,与该点处不等式约束的起作用约束函数的梯度方向,以及等式约束函数的梯度方向的线性组合。
假设存在可行下降方向 d ,第一个向量方程两边同乘以 d ,则可得到
∇f(x∗)T⋅d−∑j=1lγ∗j∇gj(x∗)T⋅d−∑i=1mλ∗i∇hi(x∗)T⋅d=0
由上面的辅助概念1可知,
∇f(x∗)T⋅d<0 ,
gj(x∗)T⋅d>0 。
由上面的辅助概念3可知,
λ∗i∇hi(x∗)T⋅d=0 。
由此可知,等式不成立,即假设不成立,
d 不存在,此时点
x∗ 为局部最优解。
通常称
f(x∗)−∑lj=1γ∗jgj(x∗)−∑mi=1λ∗ihi(x∗) 为问题(1)的广义拉格朗日函数。当该非线性规划问题只包含等式约束时,此KKT条件便具有以下形式:
∇f(x∗)−∑i=1mλ∗i∇hi(x∗)=0(3)
(3)式即为狭义拉格朗日函数关于
x∗ 求导形式。
第二种理解思路:
其实可以从原问题的广义拉格朗日函数的最小最大问题出发。
L(x,γj,λi)=f(x)−∑j=1lγjgj(x)−∑i=1mλihi(x)g(γj,λi)=maxγj>=0,λiL(x,γj,λi)={−∞,其他f(x),x满足原始问题的条件约束minxmaxγj>=0,λiL(x,γj,λi)
于是求极值先对
γj,λi 求导:
⎧⎩⎨⎪⎪gj(x)=0γj>=0hi(x)=0
再对x求导:
∇f(x)−∑j=1lγj∇gj(x)−∑i=1mλi∇hi(x)=0
但是直接求不太好求,会通过求对偶问题:
p(x)=minxL(x,γj,λi)
但是
p(x)<=L(x,γj,λi)<=g(γj,λi) ,什么时候
p(x) 的最优解就是原问题的最优解呢?
g(γj,λi) 的最优解为
γ∗j,λ∗i ,
p(x) 的最优解为
x∗ 。当满足KKT条件时,
x∗ 是原问题的最优解。证明:
g(γ∗j,λ∗i)=minxL(x,γ∗j,λ∗i)=L(x∗,γ∗j,λ∗i)=f(x∗)−∑j=1lγ∗jgj(x∗)−∑i=1mλ∗ihi(x∗)=f(x∗)
最后一步由KKT条件中的第二个和第三个条件得到。
第三种理解思路:
参考网上的资料,整理了一下从几何意义方面理解KKT条件。
- 以下二维决策变量情况的讨论参考自此
- 等式约束情况
考虑这个决策变量是二维平面内点(x,y)的优化问题:
max \ f(x,y)\\ s.\ t.\ g(x,y)=c
max f(x,y)s. t. g(x,y)=c
我们在二维平面内画出两个函数的图像。由于缺少第三维,我们使用等高线来表示目标函数
f(x,y) 的函数值。如下图:
图中画出了两条
f(x,y) 的等高线,蓝色箭头则是等高线上的梯度
∇f(x,y) 。从梯度的方向上来看,显然有
d1<d2 。绿色的线是约束,也就是说,只要正好落在这条绿线上的点才可能是满足要求的点。如果没有这条约束,
f(x,y) 的最大值应该会落在最小那圈等高线内部的某一点上。而现在加上了约束,最大值点应该在哪里呢?显然应该是在
f(x,y) 的等高线正好和约束线相切的位置。如果我们对约束也求梯度
∇g(x,y) ,则其梯度如图中绿色箭头所示。很容易看出来,要想让目标函数f(x,y)的等高线和约束相切,则他们切点的梯度一定在一条直线上,即:
∇f(x,y)=υ∇g(x,y)
其中
υ 可以是任何实数。
因此,我们通过观察可以得到优化取到最大值的条件:
{g(x,y)=c∇f(x,y)−υ∇g(x,y)=0
- 不等约束的情况
上面仅仅考虑了等式约束的情况。那么含有不等式的约束情况下,
λ 乘子又有什么意义呢?
我们还是考虑一个和上面问题类似的问题:
maxf(x,y)s.t.g1(x,y)≤c,g2(x,y)≥d
我们同样在平面内画下这个问题的图像:
这个和之前的图不同之处在于:约束决定的可行区域由一条直线变成了一段带状区域。这个带状区域由两条边界
g1(x,y)=c 和
g2(x,y)=d 来决定。
大家立刻可以从图中发现,这个问题的最优解和之前的等式约束情况下没有任何区别。也就是依然满足条件:
⎧⎩⎨g1(x,y)=c∇f(x,y)−υ∇g1(x,y)=0υ≤0
- 以下三维决策变量情况的讨论参考自此
考虑以下问题模型:
minf(x1,x2,x3)s.t.c1(x1,x2,x3)=0(曲面S1)c2(x1,x2,x3)=0(曲面S2)
如上图,
x∗ 局部最优解,那么其必在S1与S2的交线D(及可行域)上,并且目标函数与约束函数的梯度
∇c1(x∗) ,
∇c2(x∗) 共面。如果不共面,那么
f(x) 梯度向可行域D上的投影不为零。于是沿着这个投影移动,可使得目标函数下降,也就不是最优解。
根据共面的条件,我们可以推出:
∇f(x∗)=∑i=1lλ∗i∇ci(x∗)
也就是三维空间的最优性条件。
三维决策变量的不等式约束情况和高维情况(共体)可以此类推。