最优化方法课程总结四 -- 约束优化问题之KKT条件原因及推导【深刻!】

回顾

前边内容主要总结了无约束优化问题的求解步骤,即如何找一个函数的极大值,其中凸函数具备的良好性质保证局部最优解是全局最优解。一般通过最速下降法、牛顿法、共轭梯度法进行求解(针对这些方法的不足也有很多改进)。接下来主要总结在定义域有约束时,函数的优化问题。

约束优化问题

数学模型

优化目标为:f(x),约束条件为gi(x)0,i=1,2,...,mhj(x)=0,j=1,2,...,l,定义域为xRn。可将约束条件转化为对定义域的约束,这样该问题可以转化为在指定集合上寻找函数最优解。

以下对可行域进行讨论:

  1. 集合某点的可行方向:从名字中可以看出其含义,这个方向走得通,也就是在这个方向上可以找到步长使得转移后依然在该集合内。这些方向的集合被称为可行方向锥(集)有以下表示方法D=d|d0,xcls,δ>0,λ(0,δ),x+λdS
  2. 函数在某点的下降方向:与之前提到的一样,函数下降方向即用泰勒公式近似左边减右边。其下降方向锥(集)有以下表示方法:F0=d|f(x)Td<0 下降最快的方向是负梯度方向、

可以证明集合最优性条件,局部最优解处不存在可行且下降的方向(理解:存在就可以继续走~)【这是最最重要的原则,只要掌握了该思想,利用线性系统择一性,目前涉及的所有问题都会迎刃而解】

不等式优化问题

首先考虑的是不等式约束,以下述图为例:如果选择的可行域的点在内部时,可以取到合适步长保证所有方向均为其可行方向,这时约束并没有起到作用永远可以找到方向。如果选择在边界上,约束条件才会起作用。
这时局部约束方向锥有以下表示方法 G0=d|gi(x)Td>0。这是因为g(y)=g(x)+g(x)(yx),其中g(x)=0【因为现在在约束条件成立的情况下讨论即g(x)=0】,要保证新生成的点依然在可行域内就需要g(x)(yx)>0,即为G0的表示方法。

所以不等式优化的最优性条件即为F0G0交集为空集。

请出非常重要的Gordan定理:设A为m×n矩阵,那么Ax<0有解的充要条件是不存在非零向量y0,使得ATy=0
显而易见,我们只要把上述问题转化为Ax<0,就可以将其转化为等式方程组来求解。
根据F0G0交集为空和他们本身的表示方法可以得到A有以下表示方法,x=d

(f(x)T)gi1(x)T)...gis(x)T))

根据上述即可得Fritz John条件:设x¯SI=i|gi(x¯),f(x),gi(x)(iI)x¯处可微,gi(x)(iI)x¯处连续,若x¯是问题的局部最优解,则存在不全为零的数w0,wi(iI),使得

{w0f(x¯)iIwigi(x¯)w0,wi0,iI

实际上就是将上边的那个矩阵展开成表达式的形式,上边只对积极约束做了说明,采用互补松弛条件将非积极约束引入,只要取它们对应的参数为0即可。故由以上的Fritz John条件改良得到下述定理
x¯SI=i|gi(x¯),f(x),gi(x)(iI)x¯处可微,gi(x)(iI)x¯处连续,若x¯是问题的局部最优解,则存在不全为零的数w0,wi(iI),使得

{w0f(x¯)iIwigi(x¯)wigi(x¯)=0w0,wi0,iI

注意实际转换过程中对符号的描述,只要转化为Ax0跟着前边的符号走就可以了!

所以判断一个点是不是 Fritz John点的步骤就是找到对应的函数的梯度,把点带进去看能不能找到不全为零的数使得方程成立。

KKT条件

KKT条件实际上就是对刚刚说的问题进行了一定的限制(也叫作约束规格),加入了{gi(x¯|iI)}线性无关,这样保证了它们的系数中一定有一个不为0,就可以对f(x)的系数进行归一化,得到以下式子f(x¯)iIwigi(x¯)=0。在这一基础上加上上述Fritz John定理就得到了KKT条件。
在判断一个点是否是KKT点时,先写出求导的那个方程,加上原来的约束,加上互补松弛条件就构成了KKT必要条件,进行验证求解即可。
求解的时候可以利用互补松弛条件逐个分情况计算。

一般约束问题

除了不等式约束外,还可能有等式约束。只要能描述出等式约束的可行移动,就可以结合上述套路再次进行求解。
g(x)=0刻画的是一个平面,一般可能是曲面。曲线存在切线,曲面则存在切平面,套用和之前不等式一样的思路,此时选择的是{dr3|h(x)Td=0}
这时候就要引入新的关于线性系统择一性的定理
引理1:若系统Ax<0,Bx=0无解,则系统ATy+BTz=0,y0,且y0z0有解。

同样道理,写出自己的A B带进去就可以得到判断条件。同样进行约束规划,又有一个系数可以归一化。这样也就得到了传说中的KKT条件。
拉格朗日函数(lagrange)则可以看做是上边等式约束的原函数的一部分。并无本质缺别。
具体可见下图:

所以KKT条件可简单分为四部分:lagrange函数梯度为0,互补条件,原始可行性,对偶可行性(系数的符号要求)
这样算出来的KKT点是不是一定是局部最优解呢?
答案是不一定。

不一定的原因在于目标函数值在临界方向上非增非减,处于一种临界状态,不一定能对求解做出贡献,归根到底还是信息量的缺失。此时引出了更高维的条件,即二阶必要条件。
计算出一个点是KKT点之后还要看看该点处的二阶Hesse矩阵是否正定,半正定则可推出局部最优解。若为正定,则是严格局部最优解。

posted @   芋圆院长  阅读(2651)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示