最优化方法课程总结四 -- 约束优化问题之KKT条件原因及推导【深刻!】
回顾
前边内容主要总结了无约束优化问题的求解步骤,即如何找一个函数的极大值,其中凸函数具备的良好性质保证局部最优解是全局最优解。一般通过最速下降法、牛顿法、共轭梯度法进行求解(针对这些方法的不足也有很多改进)。接下来主要总结在定义域有约束时,函数的优化问题。
约束优化问题
数学模型
优化目标为:,约束条件为 和 ,定义域为。可将约束条件转化为对定义域的约束,这样该问题可以转化为在指定集合上寻找函数最优解。
以下对可行域进行讨论:
- 集合某点的可行方向:从名字中可以看出其含义,这个方向走得通,也就是在这个方向上可以找到步长使得转移后依然在该集合内。这些方向的集合被称为可行方向锥(集)有以下表示方法
- 函数在某点的下降方向:与之前提到的一样,函数下降方向即用泰勒公式近似左边减右边。其下降方向锥(集)有以下表示方法: 下降最快的方向是负梯度方向、
可以证明集合最优性条件,局部最优解处不存在可行且下降的方向(理解:存在就可以继续走~)【这是最最重要的原则,只要掌握了该思想,利用线性系统择一性,目前涉及的所有问题都会迎刃而解】
不等式优化问题
首先考虑的是不等式约束,以下述图为例:如果选择的可行域的点在内部时,可以取到合适步长保证所有方向均为其可行方向,这时约束并没有起到作用永远可以找到方向。如果选择在边界上,约束条件才会起作用。
这时局部约束方向锥有以下表示方法 。这是因为,其中g(x)=0【因为现在在约束条件成立的情况下讨论即g(x)=0】,要保证新生成的点依然在可行域内就需要,即为的表示方法。
所以不等式优化的最优性条件即为和交集为空集。
请出非常重要的Gordan定理:设A为m×n矩阵,那么有解的充要条件是不存在非零向量,使得。
显而易见,我们只要把上述问题转化为,就可以将其转化为等式方程组来求解。
根据和交集为空和他们本身的表示方法可以得到A有以下表示方法,
根据上述即可得Fritz John条件:设,在处可微,在处连续,若是问题的局部最优解,则存在不全为零的数,使得
实际上就是将上边的那个矩阵展开成表达式的形式,上边只对积极约束做了说明,采用互补松弛条件将非积极约束引入,只要取它们对应的参数为0即可。故由以上的Fritz John条件改良得到下述定理
设,在处可微,在处连续,若是问题的局部最优解,则存在不全为零的数,使得
注意实际转换过程中对符号的描述,只要转化为跟着前边的符号走就可以了!
所以判断一个点是不是 Fritz John点的步骤就是找到对应的函数的梯度,把点带进去看能不能找到不全为零的数使得方程成立。
KKT条件
KKT条件实际上就是对刚刚说的问题进行了一定的限制(也叫作约束规格),加入了{}线性无关,这样保证了它们的系数中一定有一个不为0,就可以对的系数进行归一化,得到以下式子。在这一基础上加上上述Fritz John定理就得到了KKT条件。
在判断一个点是否是KKT点时,先写出求导的那个方程,加上原来的约束,加上互补松弛条件就构成了KKT必要条件,进行验证求解即可。
求解的时候可以利用互补松弛条件逐个分情况计算。
一般约束问题
除了不等式约束外,还可能有等式约束。只要能描述出等式约束的可行移动,就可以结合上述套路再次进行求解。
刻画的是一个平面,一般可能是曲面。曲线存在切线,曲面则存在切平面,套用和之前不等式一样的思路,此时选择的是{}
这时候就要引入新的关于线性系统择一性的定理
引理1:若系统无解,则系统,且或有解。
同样道理,写出自己的A B带进去就可以得到判断条件。同样进行约束规划,又有一个系数可以归一化。这样也就得到了传说中的KKT条件。
拉格朗日函数(lagrange)则可以看做是上边等式约束的原函数的一部分。并无本质缺别。
具体可见下图:
所以KKT条件可简单分为四部分:lagrange函数梯度为0,互补条件,原始可行性,对偶可行性(系数的符号要求)
这样算出来的KKT点是不是一定是局部最优解呢?
答案是不一定。
不一定的原因在于目标函数值在临界方向上非增非减,处于一种临界状态,不一定能对求解做出贡献,归根到底还是信息量的缺失。此时引出了更高维的条件,即二阶必要条件。
计算出一个点是KKT点之后还要看看该点处的二阶Hesse矩阵是否正定,半正定则可推出局部最优解。若为正定,则是严格局部最优解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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