拉格朗日乘子法、对偶、KTT
一般情况下,最优化问题分为三类
一、 无约束条件下的最优化问题
这种最优化问题比较简单,直接求导为0就可以得到。
二、 等式约束下的最优化问题
即除了目标函数之外,还有一些约束条件。假设目标函数为,约束条件为,这里的用来表示有个约束条件。
求这样的最优化问题有两种方法:
一种是使用消元法来解,但是这种方法有的时候很难求解,甚至无解。
另一种方法便是使用拉格朗日乘子法,其求解步骤分为三步:
- 构造拉格朗日函数
- 求解变量的偏导方程
- 代入目标函数
具体步骤如下:
- 首先构造一个拉格朗日函数,我们令
其中是第k个约束条件系数,又叫拉格朗日乘子。注意这里的是对
三个变量的函数。
- 于是我们分别对变量求偏导数为0的解,得出来的解代入目标函数便是函数在等式约束条件。
为什么这样求解得到的便是我们想要得到的约束极值呢?我们可以用图来直观的解释一下:
图中的圆圈表示目标函数与
为什么只有相切的地方才可能是极值点,而相交的地方不是呢?假设相交的点是极值点的话,那么沿着的曲线向两边走,一定还有其他的点和他相交,这就意味着的值还能变大和变小(极值点的两侧是同时变大或者同时变小的),明显与我们的假设相悖,所以交点不是极值点。
而对于切点来说,沿着曲线两边走,的值只能同时变大或者同时变小,这就符合了极值点的定义。
既然极值点在切点上,那么这两个函数在这一点的梯度应该在同一条直线上,方向可以相同或者相反(梯度的方向与等高线的切线是垂直,这个定理的相关推导可以自行百度)。
所以,满足条件的极值点一定满足:(其中λ可以取0,取0表示目标函数的极值点刚好也在这一点),于是我们只用和原方程联立,然后只要解出这个方程组,就可以得到最优解,当然,这个方程可能存在解不出来的情况.
于是我们就可以把原来的优化问题写成 的形式,然后分别的对求导,然后令偏导数为0就可以得到上面推来的式子了。这种方法就是拉格朗日乘子法。即:
由于,则
对,分别对求偏导:
对x求偏导:
对y求偏导:
对λ求偏导:
根据这三个式子化简后,可以看到公式,分别对求偏导和等价。
如果有多个等式约束怎么办呢,如下图:
这里的红色的平面和蓝色的球面分别代表了两个约束 和
,那么这个问题的可行域就是它们相交的那个圆。这里蓝色箭头表示平面的梯度,黑色箭头表示球面的梯度,那么相交的圆的梯度就是它们的线性组合(只是直观上的,类似向量的加法),所以在极值点的地方目标函数的梯度和约束的梯度的线性组合在一条直线上。所以就满足:
大于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
<统计学习方法> 李航