关于Karush-Kuhn-Tucker(KKT)条件的分析

KKT条件是约束优化中非常关键的条件,与算法的设计和收敛性分析息息相关。


1. 拉格朗日乘子
我们以一类简单的问题做为讨论KKT条件的序言。一般来说,任何有n个元素的变量x=(x1,,xn)Tm个等式约束的优化问题可以写成

minxRnf(x),s.t.gi(x)=0,i=1,2,,m.

接下来的讨论中,我们将假设问题中所涉及的任何函数都是可微的,并且这些结果的大多数都存在次梯度版本。
这个问题的拉格朗日松弛为:

minxRnf(x)+i=1mλigi(x).

这里的m个新的λi被称为拉格朗日乘子(在线性规划中,这些是对偶变量)。我们可以把这看作是消除了约束,但是给目标增加了惩罚成本。如果任一项gi(x)0,我们就会产生一个单位的惩罚成本λi。如果仔细选择这个惩罚成本,松弛问题的解将与原问题的解完全相同。
1.1 推导
我们推导二维问题的拉格朗日乘子法

minf(x,y),s.t.h=g(x,y)=0.

hg水平集(无数条等值线)上特殊的一条曲线,即可行域。我们可以将二维平面上f(x,y)的水平集以及g(x,y)的水平集想象成参数曲线。我们的目标是在曲线h上找到到达f可能的最低水平集的点(x,y).想象:沿着h走,观察f的值是如何变化的。为了使f到达最小,在这条曲线上必须有某个点,它的值暂时不会改变。这种情况的发生可能有两个原因:要么hf的等式线相切,要么f本身变平了(梯度为0)。为了检查h是否与f的等值线相切(在x处),由于梯度x,y(f)=(fx,fy)Tf的等值线相互正交。如果hf的等值线相切,则意味着h的梯度应该是f的梯度的标量倍,即应该有一个常数λ,使得

x,y(f)=λx,y(g).

这个条件对f是平坦的也成立,因为此时可以用λ=0。现在我们只是找到了某个点(x,y)是原问题的一个最优解的必要条件

x,y(f)=λx,y(g),

h=g(x,y)=0,

这两个条件分别是稳定性和可行性。
我们将这些合并到一个方程中,定义拉格朗日函数

L(x,y,λ)=f(x,y)+λg(x,y),

求解x,y,λL(x,y,λ)=0,
这封装了我们对解的稳定性和可行性的要求。类似地,可以把这个结论推广到一般的情形。
2. KKT条件
KKT条件是拉格朗日乘子法的推广,它给出了包含等式约束和不等式约束系统的最优性的一组必要条件。假设我们有一个涉及m个等式约束,l个不等式约束的优化问题。这样的问题具有一般的形式

minxRnf(x),s.t.gi(x)=0,i=1,2,,m;hj(x)0,j=1,,l.

同样地,我们通过消除约束,并且为每个约束添加惩罚成本来形成一个松弛问题

minxRnf(x)+i=1mλigi(x)+j=1lμjhj(x),

现在,每一个等式约束有一个乘子λi,, 每个不等式约束都有一个乘子μj,这些乘子被称为KKT乘子。
拉格朗日乘子法的许多推理在这里仍然适用。我们可以将上面的目标定义为拉格朗日函数L(x,λ,μ),我们发现最优性的必要条件包括:xL=0(稳定性),λL=0(等式约束的可行性);然而这里我们没有必要让μL=0,因为它为0,这就强迫hj(x)=0,只给了我们部分解。因此,我们不能简单地说x,λ,μL=0,我们需要额外的信息来确定乘子组μ的值。
注意到,在前一节中,没有对λ的符号添加约束。我们将会发现,在不等式约束的情形,μ的符号非常重要,所以要非常小心。
2.1 推导μ
从考虑简化的二维系统开始

minf(x,y)s.t.h(x,y)0.

只涉及不等式约束。同样地,我们可以想象:f在平面上的水平集,约束h(x,y)0定义了平面内的一个区域。最优解有两种可能:要么它完全位于可行域内部,此时h(x,y)<0f处于极值;要么它位于边界上,此时h(x,y)=0,且h(x,y)的边界与f的等值线相切。
如果最优解出现在h(x,y)<0,则不等式约束对问题没有影响,可以忽略;否则,h(x,y)=0。在这两种情况下,对某个μ必须满足约束μh(x,y)=0,即要么h(x,y)=0,在这种情况下,μ的值无关紧要;要么h(x,y)<0,在这种情况下,μ必须等于0,这就是互补松弛条件
然而,我们必须考虑μ的正负号。我们的目标是能够使用这个变量做为松弛问题的目标的一部分

minf(x,y)+μh(x,y),

和前面一样,最优性需要这个表达式在(x,y)处是平稳的,如果我们有

x,yf(x,y)+μx,yh(x,y)=0

则这是正确的。把它重新排列,得到

μ=[f(x,y)]k[h(x,y)]k,k=1,2.

回想一下,函数的梯度是目标函数值上升最快的方向。对于h,由于区域的边界是由h(x,y)=0确定,而内部是由h(x,y)<0定义,这意味着我们沿着f的梯度方向向可行域内部移动时,h必须减小,即h的梯度应该指向区域外。这与f的梯度方向是相反的。所以[f(x,y)]k[h(x,y)]k,k=1,2 必有相反的符号。故μ总是正的。
同时,我们还要注意到,对于maxf(x,y), f的梯度应该指向区域的外部,那么f(x,y)h(x,y)有相同的方向,这将迫使μ<0。我们把这个做为一个替代约束,但是按照惯例,我们仍然要求μ>0,并且简单地改变拉格朗日中惩罚项的符号,得到

x,yf(x,y)μx,yh(x,y)=0.

2.2 一般的结果

minxRnf(x)s.t.gi(x)=0,i=1,,m;hj(x)0,j=1,,l.

它的KKT条件是任何最优解x必须满足的一组必要条件。具体地,必须存在乘子λ=(λ1,,λm)μ=(μ1,,μl)满足下列条件;
(1) 稳定性

如果 minimization

xf(x)+i=1mλixgi(x)+j=1lμjxhj(x)=0,

如果 maximization

xf(x)+i=1mλixgi(x)j=1lμjxhj(x)=0.

(2)原始可行性

gi(x)=0,i=1,,m;hj(x)0,j=1,,l.

(3)对偶可行性

μj0,j=1,,l

(4)互补松弛条件

μjhj(x)=0,j=1,,l.

注意:这并不适用于所有规划,这意味着存在某些优化问题,其中对于给定的最优解x,不存在任何满足KKT条件的乘子λμ。为了使解存在,fgihj必须满足一定的正则性条件。已知有几大类约束总是满足这些条件。
(1)如果所有的gihj都是仿射的,我们就自动有了正则性。
(2)满足Slater条件的函数,它要求是凸规划的。
(3)对于满足连续可微的正则性条件的凸规划,KKT条件是全局最优解的充分必要条件。

posted @   XuStoneXin  阅读(500)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示