利用拉格朗日乘子法从最优化问题中推导出KKT条件
-
优化问题的一般形式
-
在优化问题中,我们将其一般形式定义为有约束(不等式约束、等式约束)的最小化优化问题,其具体定义如下:
-
当然,在求解优化问题中,还有其他形式的优化问题,但一般可以通过简单的变形操作,将问题转换为我们所定义的一般形式,下面为其他形式
-
这里可以将 变形为 ,令 ,将问题转换。
-
这里可以将 变形为 ,即将最大化原函数改为最小化其函数值的相反数。
-
-
-
拉格朗日函数与原始优化问题的联系——如何将利用拉格朗日乘子将有约束原始优化问题转换为等价的无约束优化问题(形式上)
-
拉格朗日乘子法其思想就是把有约束优化问题转变为等价的无约束优化问题(形式上)。具体怎么操作呢?
-
其实,用法很简单,针对一般优化的原始问题,定义如下
我们可以利用拉格朗日乘子法
我们目标便是转换为最小化上述的公式,但是在上式中我们又引入了额外的参数,因此也需要对该参数做优化,因此我们有
这样,我们将问题做了转换。
-
这里,我们证明一下原始优化问题(即 )与我们转换问题(即 )是等价的。
-
我们记
-
则有
-
验证上述性质
- 若存在 使得某个 则我们可令 , 进而有
- 若存在 使得某个 则我们可令 , 进而有
- 若 , 则有
-
我们得出,当 在条件满足时,其形式就等同于 ,即等同于在约束条件下,对 求解,同等于原问题。
-
思考:从这里出发,我觉得 这个条件也是为了满足在约束条件 ,有 ,感觉是一种解决该问题必然需要满足的隐含条件。
-
-
-
-
拉格朗日函数与拉格朗日对偶函数——从最优解的下界出发,兜底最优解
-
定义拉格朗日对偶函数(Lagrange dual function): 为 对 取最小值:
其中, 表示下确界(infimum),这里可近似理解为 min,以下用 表示。对偶函数为凹函数(concave function),不管原问题是否为凸。——这里可以通过添加负号,将问题转换为凸优化问题。
通俗理解就是每确定一组 ,就要找到一个 使得 最小,不同的 对应不同的 函数值。
-
记问题 的最优值为 。假设 为一可行解,则其满足约束条件: 。所以对任意 ,由 式有 ,进而
因为上式,表示原问题的最优值下界,所以该式对任意可行解都成立,则有:
-
这说明,对偶函数 给出了问题 最优值 的下界。那么 能给出的最好的下界是多少呢?(如果等于 就太完美了)这就形成了如下的优化问题,即最大化原问题的最优值的下界,使其尽量等于原问题的最优解:
-
问题 称为问题 的拉格朗日对偶问题(Lagrange dual problem),相应地,问题 称为原问题(primal problem)。 的变量为原问题的拉格朗日乘子,其最优解 称为(对偶)最优拉格朗日乘子。不管原问题是否是凸优化问题,对偶问题都是凸优化问题(max 一个凹函数)。
-
理解:所以对偶函数是原问题的最优值下界,虽然不等式成立,但是如果 ,并且让 趋近于负无穷,这个时候 ,虽然也满足不等式,但是此时没有任何意义。所以只有当 ,这个时候 时,对偶函数才能给出原目标函数一个非平凡有意义的下界,称此条件下的 是对偶可行的。
-
弱对偶性 weak duality 与强对偶性 strong duality——记对偶问题的最优值为 ,原问题的最优值为 ,则 是对偶函数 能给出的 的最好的下界.
- 若有 称为弱对偶性。即使原问题非凸,弱对偶性也成立。
- 如果 等式成立,则称强对偶性成立。
-
问题:为什么对偶函数一定是凹函数呢?
因为 而为 。在已知一个可行解 ,有 为常数,是一个定值,即函数变成为以 为变量的线性函数,即 .
-
-
KKT 条件与对偶问题——支持向量机:Duality
-
假设 和 分别是 primal problem(原问题) 和 dual problem(对偶问题) 的极值点,相对应的极值为 与 。当 strong duality 成立时,我们有 ,则
- 因为强对偶性成立,对偶间隙为 0;
- 拉格朗日对偶函数在 处的取值;拉格朗日对偶函数为拉格朗日函数对 取最小值(严格来说是下确界 );
- 因为函数的最小值不会超过其定义域内任意一点的函数值,所以也就不超过 处的函数值;
- 因为在原问题 中,我们有 。所以第三步中,后面两个求和项都不会超过 。
-
由于两头是相等的,所以这一系列的式子里的不等号全部都可以换成等号。根据第一个不等号
我们可以得到 是 的一个极值点,由此可以知道 在 处的梯度应该等于 0 ,亦即:
-
此外,由第二个不等式,我们可得
因为 ,所以有
又因为 ,所以 ,即(4)中求和的每一项都小于等于 ,所以每一项都应该等于 ,即有
这个条件叫做 complementary slackness (互补松弛性)。显然,如果 ,那么必定有 ;反过来,如果 那么可以得到 。这个条件正是我们在介绍支持向量的文章末尾时用来证明那些非支持向量(对应于 )所对应的系数 (在本文里对应 )是为零的。
-
再将其他一些显而易见的条件写到一起,就是传说中的 KKT (Karush-Kuhn-Tucker) 条件:
-
任何满足 strong duality (不一定要求是通过 Slater 条件得到,也不一定要求是凸优化问题)的问题都满足 KKT 条件,换句话说,这是 strong duality 的一个必要条件。
-
当原始问题是凸优化问题的时候(当然还要求目标函数和约束函数可微是可微的,否则 KKT 条件的最后一个式子就没有意义了),KKT 就可以升级为充要条件。换句话说,如果 primal problem 是一个凸优化问题,且存在 和 满足 KKT 条件,那么它们分别是 primal problem 和 dual problem 的极值点并且 strong duality 成立。 其证明也比较简单.
- 针对第一和第二个条件是原问题的不等式约束和等式约束,保证解可行;
- 第三个条件为对偶可行条件;因为目标函数和不等式约束为凸函数,而等式约束为仿射函数(既凸又凹),所以拉格朗日函数 可看作一组凸函数的非负加权和,因此也是凸函数;
- 第四个条件为互补松弛条件;
- 第五个条件为梯度为零: 在 处的梯度为 ,因为 是 可微凸函数 ,所以 是其最小值点('Convex Optimization' 4.2.3 节)。
- 接着,primal problem 是凸优化问题的话, 的求解对每一组固定的 来说也是一个凸优化问题。所以有(这里是最重要的):
- 最后,最后一步根据 KKT 条件的第二(等式约束)和第四个条件(互补松弛条件)得到。由于 是 的下界,这样一来,就证明了 duality gap(对偶间隔) 为零,也就是说,strong duality 成立。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!