拉格朗日乘子法、对偶、KTT
一般情况下,最优化问题分为三类
一、 无约束条件下的最优化问题
这种最优化问题比较简单,直接求导为0就可以得到。
二、 等式约束下的最优化问题
即除了目标函数之外,还有一些约束条件。假设目标函数为,约束条件为
,这里的
用来表示有
个约束条件。
求这样的最优化问题有两种方法:
一种是使用消元法来解,但是这种方法有的时候很难求解,甚至无解。
另一种方法便是使用拉格朗日乘子法,其求解步骤分为三步:
- 构造拉格朗日函数
- 求解变量的偏导方程
- 代入目标函数
具体步骤如下:
- 首先构造一个拉格朗日函数,我们令
其中是第k个约束条件系数,又叫拉格朗日乘子。注意这里的
是对
三个变量的函数。
- 于是我们分别对
变量求偏导数为0的解,得出来的解代入目标函数便是函数在等式约束条件。
为什么这样求解得到的便是我们想要得到的约束极值呢?我们可以用图来直观的解释一下:

图中的圆圈表示目标函数与

这里的红色的平面和蓝色的球面分别代表了两个约束 和
,那么这个问题的可行域就是它们相交的那个圆。这里蓝色箭头表示平面的梯度,黑色箭头表示球面的梯度,那么相交的圆的梯度就是它们的线性组合(只是直观上的,类似向量的加法),所以在极值点的地方目标函数的梯度和约束的梯度的线性组合在一条直线上。所以就满足:
大于2个约束的情况也一样。为了好记,将原来的约束的问题写成:
然后对 x、λ 求偏导,然后让它们为0,得到的就是上式。
三、 既有等式约束,又有不等式约束的情况
要求在定义域上是连续可微函数
注: 这里的等式和不等式约束公式只是一种表述的方式,现实中遇的可能与其略有不同,但是稍加转换便可以转换成上述的形式。
引入广义拉格朗日(generalized Lagrange function):
这个式子和上面的公式一不同的是,这里特别要求,为什么这么要求我们后面再讲,先解释一下这个式子。这里
是拉格朗日乘子(其实就是函数的系数),
。
现在把看做关于
的函数,现在求其最大值,即求:
这里是
的函数,目标就是确定
的值,使得
能取到最大值,确定了
的值之后,上式就是一个之和
有关的函数(多元函数求极值,对每个参数的偏导都为0的道理),定义这个函数为:
下面我们讨论一下取值和
之间的关系.
当某个不满足
的约束 ,即
或者
时,
.
原因:首先这里的是我们刚才在求解函数最大值时已经确定的,若
,考虑下求偏导的情况,我们求出来的
很容易可以取值使得原函数取到正无穷(既然求能使函数取最大值的
,如果可以,肯定取可以使其函数能得最大值得
),同理,.当
时,
可以取
,使得
,于是,我们可以证明,当某个
不满足
的约束 ,即
或者
时,
.
当满足约束时,显然
.
综上我们可得:
在满足约束的条件下,我们求的最小值,即:
而在不满足约束的情况下,显然不可能是最小值,于是,我们的目标,求解约束条件下
最优解的问题就可以转化成求解
的无约束问题(这个式子被称为广义拉格朗日函数的极小极大问题),这样,就成功的把约束条件给去掉了.使用
来表示原始问题,于是原始问题的最优解
就可以表示如下:
对偶问题
定义一个关于的函数:
考虑极大化,即:
这个式子被称为广义拉格朗日函数的极大极小问题,也被称为原始问题的对偶问题.对偶问题的最优值用表示:
对比原始问题,对偶问题是先求关于函数关于的最小化问题,之后再求函数关于
最大化问题.而原始问题恰恰相反,是求函数关于
的最大化问题,之后再求关于
的最小化问题.总是是求函数关于α,β最大化和关于
的最小化的问题,只是求解的顺序有所不同.
那么对偶问题和原始问题有什么关系呢?
定理1:若对偶问题和原始问题都有最优值,则:
即:对偶问题的最优值不大于原始问题的最优值(弱对偶(weak duality)).
证明:
即:
因为对偶问题和原始问题都有最优值,所以:
所以:
原问题得证.
这些有什么用呢?
推论1:如果分别是原始问题和对偶问题的可行解,并且
(即原始问题和对偶问题在可行解
上的取的最优值相同,这被称为强对偶(strong duality)),则
分别是原始问题和对偶的最优解.
于是,当原始问题不好求解而对偶问题相对好求解的时候,这时我们就可以用求解对偶问题替代求解原始问题.并且更重要的是,对偶问题是一个凸优化问题,他的极值是唯一的(因为).这样无论一个问题是不是凸优化的问题,我们都能将其转化成凸优化的问题
新的问题又来了,什么情况下才能使得呢?这就是KTT条件.
定理2:假设函数f(x)和都是凸函数,
是仿射函数(由一阶多项式构成的函数),并且不等式约束
是严格可行的,即存在
,对所有的
,都使得
(注意这里是严格要求小于0,而不是小于等于0),则存在
使得
是原始问题的解,
是对偶问题的解,并且
定理3:在满足定理2的条件下,则分别是原始问题和对偶问题的最优解的充要条件是
满足下面的KTT条件:
其中条件(1)是指函数对于偏导为0,(3~5)是约束条件.
并且注意条件(4),当(注意只是大于而不是大于等于,原条件中是大于等于),则由条件(2)(3)可知
.
参考
https://www.cnblogs.com/xinchen1111/p/8804858.html
https://www.cnblogs.com/90zeng/p/Lagrange_duality.html
http://blog.pluskid.org/?p=702
<统计学习方法> 李航
网友评论