(一)拉格朗日乘法(Lagrange multiplier)
拉格朗日乘法是最优化问题中,当多元函数的变量受到一个或多个等式约束时,求局部极值的方法。通过将由n个变量和k个约束条件的最优化问题,转化成一个解有 n+k 个变量的方程组的解的问题。
1.1带有单个等式的约束
对于一个2变量1等式约束的优化问题:
x,yminf(x,y)s.t.g(x,y)=c
如何求该问题的最优解呢,我们引入拉格朗日乘法,引入β作为拉格朗日乘数,再引入朗格朗日函数的极值:
L(x,y,λ)=f(x,y)+λ∗(g(x,y)−c)(1)
我们通过对式子(1)中的三个变量求导,并令其等于0,来计算的鞍点:
∇xL(x,y,λ)=0∇yL(x,y,λ)=0∇λL(x,y,λ)=0(2)
这样,我们就能解出一些可能的点,然后在筛选出最优点。 因为,导数为0是某点是极值点的必要条件而不是充分条件。
这样做的解释性如下:

如上图所示,函数f(x)的等高线如图所示,梯度方向朝外,也就是越往外边大,约束条件g(x,y)−c=0的等高线为红线,梯度方向向左。我们要找到满足等式约束条件的最小值,也就是f(x,y),的等高线向外扩张的时候,第一次与红线相切的地方,就是我们要求的最小值,因为相切时候是f(x,y)由小变大的时候第一次满足等式约束条件,而越往外函数值越大,所以当前就是我们要求的最小值。
此时因为相切,原函数和条件函数在切点的法线是共线的,并且切点在约束函数上有满足约束条件,我们有:
f′(x)=λg′(x)f′(y)=λg′(y)g(x,y)−c=0
这不就是式子(2)中的结果么 ,从而解释了拉格朗日乘法求极值的可解释性。
1.2 带有多个等式约束
如图所示,现在又两个等式约束g1(x,y)−c1=0和g2(x,y)−c2=0:

这是就要引入两个拉格朗日乘子λ1,λ2,求解的方法,求三次导,我们可以得到:
f′(x)=λ1g1′(x)+λ2g2′(x)f′(y)=λ1g2′(y)+λ2g2′(y)g1(x,y)−c1=0g2(x,y)−c2=0
第三四行的等式就是等式约束项,第一二行的等式在几何意义上,原函数在切点处切线的法向量要由g1,g2
在该点的法向量线性表出,由图上看a要能被bc线性表出。
1.3 带单个不等式约束
假设现在有不等式约束g(x,y)−c≤0,五角星区域是我们满足不等式约束的区域。

此时我们仍然用拉格朗日乘法将对不等式约束引入拉格朗日乘法。习惯上对等式约束使用β乘子,对不等式约束使用 α乘子。
L(x,y,λ)=f(x,y)+λ∗(g(x,y)−c)
我们仍然按照三步求导的战略,仍旧可以得到:
f′(x)=λg′(x)f′(y)=λg′(y)g(x,y)−c=0
但是这和等式约束有什么区别吗,难道完全一样吗?肯定不是的,看上图,要想最小值点落在约束不等式所在的曲线上,那么原函数的梯度和约束曲线的梯度一定要是反方向的。也就是:
f′(x)+λg′(x)=0f′(y)+λg′(y)=0s.t.λ≥0
这就引出KKT条件之大部分(除了条件d):
∇xL(x∗,α∗,β∗)=0∇αL(x∗,α∗,β∗)=0∇βL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,i=1,2,⋯,kci(x∗)≤0,i=1,2,⋯,kai∗≥0,i=1,2,⋯,khi(x∗),j=1,2,⋯,l(a)(b)(c)(d)(e)(f)(g)
(a)为原函数在切点的法向量被约束曲线在该点的法向量线性表出
(b)(c) 表示最优解落在约束条件所在的曲线上
(e)为约束条件的表达形式,都是小于等于的形式
(f)使得原函数的法向量与约束曲线的法向量在切点处异号
(g)为等式约束的形式
1.4 多个不等式约束的特殊情况

由上图可知,g3函数的约束时没有起任何作用的,并且最优解不会落在g3上,但是在上面的KKT条件中g3和其对应λ的系数都参与了运算,如何消除其作用呢,这就引出了KKT的最后一个条件d:
αi∗=0,i=1,2,⋯,k(d)
最优解在约束曲线上时,其表达式为0,若不在某条约束曲线上,为了使最后的结果为0,其系数必须为0,从而使不产生作用的曲线在计算时不产生作用。该条件也称为KKT的对偶互补条件。
到此为止我们推出了KKT的所有条件。
(二)拉格朗日对偶性
原始问题,求在等式和不等式约束条件下的函数最小值:
x∈Rnminf(x)s.t.ci(x)≤0,hj(x)=0,i=1,2,⋯,kj=1,2,⋯,l
为了求解原始问题,我们首先引入广义拉格朗日函数(generalized Lagrange function):
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)(3)
其中:
f(x)是可微的
αi,βj成为拉格朗日乘子且αi≥0
ci()x≤0
hi=0
通过拉格朗日乘法,把约束条件加上新的变量构成了一个新的函数,虽然新的函数中变量变多了,但是没有了限制条件。
考虑x的函数(下标P表示原始问题)
θP(x)=α,β:αi≥0maxL(x,α,β)
这个max的意义是在于,我们将所有的x样本根据取值的不同分成了满足条件和不满足条件的两部分,用函数的取值代替了原来的约束条件。现在这个θP(x)是x的函数,给定某一个x,我们让θP(x)取最大,只要根据x的取值情况来调整其系数α,β即可,x的取值情况有两种:
满足原始问题的约束,这种情况下ci(x)≤0,hj(x)=0,并且αi≥0那我们只要让ci的拉格朗日系数α为0,就能得到最大的结果f(x)
不满足原始问题的约束,这种情况下要么ci(x)≥0,或者hj(x)̸=0,那我们就能通过改变α,β使得θP(x)取到正无穷。
所以我们就有如下的式子,
θP(x)={f(x)+∞x满足原始问题的约束x其它
再考虑极小化问题:
xminθP(x)=xminα,β,αi≥0maxL(x,α,β)
这个问题的解和原问题是等价的,即它和原始问题(带有约束条件的f(x)最小化问题)有着相同的解。因为对θP(x)取最小值,就是对f(x)取最小值。如果我们定义原始的最优解为p∗,那么我们也有
p∗=xminθP(x)
到这里,我们就将原来带有约束条件的极小化问题,变成了不带约束条件的极小极大问题。到这一步我们还是无法求解,所以我们引入对偶问题,将极小极大问题转化为极大极小问题。
(三)对偶问题
定义:
θD(α,β)=xminL(x,α,β)
然后极大化θD
α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)s.t.αi≥0i=1,2,⋯k(4)
之前我们是先求极大值,再求极小值,先求极大值的好处是可以根据结果将数据分为满足条件和不满足条件的两部分,然后再对结果求最小,即变成了对满足条件的x求最小值还原了原始问题。现在我们反过来,先求极小值再求极大值,将该问题成为原始问题的对偶问题,定义对偶问题的最优值:
d∗=α,βmaxθD(α,β)
原始问题先固定x,求最优化(极大化)的α,β的解,再确定x(通过极小化),而对偶问题是先固定α,β,求最优化(极小化)的x的解,再确定α,β。
关于将最小化问题转化为极大极小问题的另一种解释
我们最开始要解决的问题是等式和不等式约束小的极小值问题,即:
min{f(x):gi(x)≤0,i=1,2,…,m}(2.0)
把等式约束合并到了不等式约束中)
假设一个下界为u(比真实最优解小),则对于方程组(2.1)无解:
{f(x)<vgi(x)≤,i=1,2,⋯,m(2.1)
如果方程组(2.1)有解,那么可以推出对于任意的λ≥0,如下方程(2.3)有解:
f(x)+i=1∑mλigi(x)<v(2.3)
根据逆否命题,方程组(2.1)无解的充分条件是存在λ≥0,让方程(3)无解(即2.3中左变的值大于等于v。将存在xx大于等于xx的条件转化为 min问题,则方程(3)无解的充要条件是:
xmin=f(x)+i=1∑mλigi(x)≥v(2.4)
因为我们要找最好的下界,所以这个时候的v和$ \bm{\lambda}$ 应该取
v=λ≥0maxxminf(x)+i=1∑mλigi(x)
即在满足各种条件下的v的最大值,可理解为v本来非常小但是不满足条件,满满增大到满足条件为止,此时的v为min值
原始问题与对偶问题的关系
我们要求原始问题的最优解,现在转化成了对偶问题的最优解,这两个解有什么关系呢,我们最想看到的就是这两个解是等价的,这样直接解对偶问题就行。
若原始问题和对偶问题都有最优值,则:
d∗=α,βmaxxminL(x,α,β)≤xminα,β:αi≥0maxL(x,α,β)=p∗
证明:
对于任意的x, α,β 有:
xminL(x,α,β)≤L(x,α,β)≤α,β:αimaxL(x,α,β)
所以有:
xminL(x,α,β)≤α,β:αimaxL(x,α,β)
因为上述式子是在任意条件下的x, α , β,最大最小是任意条件中的特殊情况,所以我们有:
d∗=α,βmaxxminL(x,α,β)≤xminα,β:αi≥0maxL(x,α,β)=p∗
即对偶问题的解小于等于原始问题的解 d∗≤p∗。只有当等号成立的时候我们才能通过对偶问题来解决原始问题,那什么时候等式成立呢,那就是我们上述所说的KKT条件满足的时候。
转载自:https://blog.csdn.net/dpengwang/article/details/88355744