来源:https://zhuanlan.zhihu.com/p/26514613
本文从本科高数(微积分)中的有条件极值的Lagrange乘数法入手,一步步推导到KKT条件. 但在讲述推导过程之前,我想先给出KKT条件:
对于具有等式和不等式约束的一般优化问题
KKT条件给出了判断是否为最优解的必要条件,即:
对于这部分内容,其实本科高数课程中已学过,因此本文直接给出结论,并补充一些我的理解与总结,它能帮助理解不等式约束中的一些内容,具体的推导过程在同济7版的高数下册(P.116-118)中已写的较详细。
所谓的等式约束优化问题是指
我们令,函数
称为Lagrange函数,参数
称为Lagrange乘子.
再联立方程组:,
得到的解为可能极值点,由于我们用的是必要条件,具体是否为极值点需根据问题本身的具体情况检验. 这个方程组称为等式约束的极值必要条件.
上式我们对个
和
个
分别求偏导,回想一下在无约束优化问题
中,我们根据极值的必要条件,分别令
,求出可能的极值点. 因此可以联想到:等式约束下的Lagrange乘数法引入了
个Lagrange乘子,或许我们可以把
也看作优化变量(
就叫做优化变量). 相当于将优化变量个数增加到
个,
与
一视同仁,均为优化变量,均对它们求偏导.
以上我们讨论了等式约束的情形,接下来我们来介绍不等式约束的优化问题.我们先给出其主要思想:转化的思想——将不等式约束条件变成等式约束条件.具体做法:引入松弛变量.松弛变量也是优化变量,也需要一视同仁求偏导.
具体而言,我们先看一个一元函数的例子:
(注:优化问题中,我们必须求得一个确定的值,因此不妨令所有的不等式均取到等号,即的情况.)
对于约束和
,我们分别引入两个松弛变量
和
,得到
和
.注意,这里直接加上平方项
、
而非
、
,是因为
和
这两个不等式的左边必须加上一个正数才能使不等式变为等式.若只加上
和
,又会引入新的约束
和
,这不符合我们的意愿.
由此我们将不等式约束转化为了等式约束,并得到Lagrange函数
我们再按照等式约束优化问题(极值必要条件)对其求解,联立方程
(注:这里的,
先承认,我们待会再解释!(先上车再买票,手动斜眼)实际上对于不等式约束前的乘子,我们要求其大于等于0)
得出方程组后,便开始动手解它. 看到第3行的两式和
比较简单,我们就从它们入手吧~
对于,我们有两种情况:
情形1:
此时由于乘子,因此
与其相乘为零,可以理解为约束
不起作用,且有
.
情形2:
此时且
,可以理解为约束
起作用,且有
.
合并情形1和情形2得:,且在约束起作用时
,
;约束不起作用时
,
.
同样地,分析,可得出约束
起作用和不起作用的情形,并分析得到
.
由此,方程组(极值必要条件)转化为
这是一元一次的情形.类似地,对于多元多次不等式约束问题
我们有
上式便称为不等式约束优化问题的KKT(Karush-Kuhn-Tucker)
原文:https://www.cnblogs.com/nlpers/p/14939888.html