拉格朗日对偶性
在约束最优化的问题中,常常需要利用拉格朗日对偶性(Language duality)将原始问题转为对偶问题,通过解决对偶问题来得到原始问题的解。
拉格朗日乘数法
拉格朗日乘数法是用来求条件极值的,极值问题可以分为两类:
- 求函数在给定区间上的极值,对自变量没有其他的要求,这种极值称为无条件极值。
- 对自变量有一些附加的约束条件限制下的极值,称为条件极值
比如给定椭球a2x2+b2y2+c2z2=1,求这个椭球内接长方体的最大体积,这个问题实际上就是条件极值问题,即在条件:
a2x2+b2y2+c2z2=1
下,求f(x,y,z)=8xyz的最大值
这个问题实际上可以先根据条件消去z,然后代入转化为无条件极值问题来处理。但有时候这样做很困难,甚至是做不到的,这时候就需要用到拉格朗日乘数法了。如下描述:
求函数z=f(x,y)在满足φ(x,y)=0下的条件极值,可以转化为函数F(x,y,λ)=f(x,y)+λφ(x,y)的无条件极值问题,如果(x0,y0,λ0)是函数F(x,yλ)的驻点,则(x0,y0)就是条件极值的嫌疑点
条件极值问题可以转换为无条件极值问题求解,但有些条件关系比较复杂,代换和运算很复杂,而相对来说,拉格朗日乘数法不需要代换,运算简单,这就是优势!
广义拉格朗日乘数法
为了求如下约束的最优问题:
xminf(x),s.t.g(x)≤0,h(x)=0
引入广义拉格朗日函数:
L(x,λ,η)=f(x)+λg(x)+ηh(x),λ≥0
这里的L(x,λ,η)叫做拉格朗日函数,λ,η叫做拉格朗日乘子。有时也可以把λ叫做KKT乘子
首先需要证明:
xminf(x),s.t.g(x)≤0,h(x)=0⇔xminλ,η:λ≥0maxL(x,λ,η)
证明过程如下:
-
首先将λ,η:λ≥0maxL(x,λ,η)记住函数P(x)
-
假定设定某个违反原始问题约束条件的x,即存在某个x使得g(x)>0或h(x)=0
- 若g(x)>0,可以令λ→+∞,使得P(x)=+∞;
- 若h(x)=0,可以令η使得ηh(x)→+∞,使得P(x)=+∞;
- 上述两种情况最后都会使:P(x)=λ,η:λ≥0maxL(x,λ,η)=+∞
-
假设给定某个符合原始问题约束条件的x,即g(x)≤0且h(x)=0,则:
- P(x)=λ,η:λ≥0maxL(x,λ,η)=f(x)
- 此时h(x)=0,同时为了最大化L(x,λ,η),而g(x)≤0,λ≥0,此时g(x)=0,λ=0
-
由以上两种情况可得:
P(x)={f(x),+∞,x满足原始问题约束否则
-
来证明 λ,η:λ≥0maxxminL(x,λ,η)≤xminλ,η:λ≥0maxL(x,λ,η)
其中xminλ,η:λ≥0maxL(x,λ,η)叫做原始问题,而λ,η:λ≥0maxxminL(x,λ,η)叫做对偶问题
- 由于原始问题和最优问题都有最优解,所以可以分别假设
xminλ,η:λ≥0maxL(x,λ,η)=L(x1,λ1,η1)
λ,η:λ≥0maxxminL(x,λ,η)=L(x0,λ0,η0)
而由于x0,x1都满足约束条件,即h(x0)=0,h(x1)=0,所以:
L(x0,λ0,η0)=L(x0,λ0)
L(x1,λ1,η1)=L(x1,λ1)
由原始问题最优解的定义可以知道–对于任意的x都有下式成立:
L(x0,λ0)≤L(x,λ0)
由对偶问题的最优解的定义可以知道–对于任意的λ有下式成立:
L(x1,λ1)≥L(x1,λ)
所以,可推得:
L(x1,λ1)≥L(x1,λ0)≥L(x0,λ0)
也就证明了:
λ,η:λ≥0maxxminL(x,λ,η)≤xminλ,η:λ≥0maxL(x,λ,η)
这个公式的理解,可以另辟蹊径,minmax相当于从胖子里面找最瘦的,而maxmin相当于从瘦子里面找最胖的,显然胖子里最瘦的要胖与瘦子里最胖的
原始问题与对偶问题的关系
首先,我们把原始问题的范围在扩大,在上面介绍广义拉格朗日函数乘数法时,引入的约束条件只有两个,即g(x)≤0,h(x)=0。
现在我们把范围扩大,假设f(x),gi(x),hj(x)是定义在Rn上的连续可微函数,那么就可以称下面的约束最优化问题为原始问题或原始最优化问题:
s.t.x∈Rnminf(x)gi(x)≤0,i=1,2...k;hj(x)=0,j=1,2...l;
在引入拉格朗日函数后:
L(x,λ,η)=f(x)+i=1∑kλigi(x)+j=1∑lηjhj(x)
其中x=(x1,x2,x3...xn)T∈Rn,λi 和ηj是拉格朗日乘子,其中λi≥0
所以我们可以构建它的原始问题和对偶问题:
- 原始问题[也叫广义拉格朗日极小极大问题]: xminλi,ηj:λi≥0maxL(x,λ,η)
- 对偶问题[也叫拉格朗日极大极小问题]:λi,ηj:λi≥0maxxminL(x,λ,η)
在上面的广义拉格朗日乘数法中,我们已经介绍了原始问题和对偶问题,并且证明了当原始问题和对偶问题都有最优解时,必定满足:
λ,η:λ≥0maxxminL(x,λ,η)≤xminλ,η:λ≥0maxL(x,λ,η)
这个性质就叫做弱对偶性,对于所有的优化问题都是成立的,即时原始问题非凸。显然对于这个在实数空间里,并有多个约束条件的拉格朗日函数,也是成立的。
与弱对偶性相对应的,还有一个强对偶性,强对偶性满足:
λ,η:λ≥0maxxminL(x,λ,η)==xminλ,η:λ≥0maxL(x,λ,η)
强对偶性是一个非常好的性质,是因为在强对偶性成立的情况下,可以通过求解对偶问题来得到原始问题的解,在SVM里就是这么做的。当然并不是所有的对偶问题都满足强对偶性,在SVM里是直接假定强对偶性的成立,但其实只要满足一些条件,强对偶性就是成立的,比如Slater条件和KKT条件
Slater条件
如果对于原始问题和其对偶问题,其中的函数f(x)和g_i(x)是凸函数,h_j(x)是仿射函数,或者说原始问题是一个凸优化问题【这两者能不能等价,目前还没看到相关证明】,如果存在x使得gi(x)<0,对任意的i=1,...,m,那么原始问题和对偶问题就是强对偶的。
也就是说原始问题是凸优化问题,并且满足Slater条件的话,那么强对偶就是成立的,注意:这里只是指出了强对偶的一种情况,并不是唯一的情况。
证明网址在:https://www.cnblogs.com/szqfreiburger/p/11573939.html#slater%E6%9D%A1%E4%BB%B6
PS:证明我没看懂,嗯
上面的说法,还可以换种说法:
对于原始问题和对偶问题,假设函数f(x)和g_i(x)是凸函数,h_j(x)是仿射函数,且不等式约束g_i(x)是严格可行的,即存在x,对于所有的i,都有g_i(x)<0,那么就存在x∗,λ∗,η∗,使得x∗是原始问题的解,λ∗,η∗是对偶问题的解,并且满足强对偶,即:
λ,η:λ≥0maxxminL(x,λ,η)==xminλ,η:λ≥0maxL(x,λ,η)
什么是仿射函数,主要通过介绍仿射函数和线性函数的区别来了解
- 仿射函数是由一阶多项式构成的函数,一般形式为f(x)=Ax+b,这里A是一个m×k的矩阵,x是一个k向量,b是一个m向量,**实际上反映了一种从k维到m维的空间映射关系。**设f是一个矢性函数,若他可以表示成f(x1,x2,...,xn)=A1x1+A2x2+...+Anxn+b,其中Ai可以是标量,也可以是矩阵,则称f是仿射函数。
- 其中的特例是,当b=0时,仿射函数就可以叫线性函数(正比例关系)
KKT条件
对于原始问题及其对偶问题,假设函数f(x)和g_i(x)是凸函数,h_j(x)是仿射函数,且不等式约束g_i(x)是严格可执行的,即存在x,对于所有i都有g_i(x)<0,则存在x∗,λ∗,η∗,使得x∗是原始问题的解,λ∗,η∗是对偶问题的充分必要条件是x∗,λ∗,η∗满足下面的KKT条件:
∇L(x∗,λ∗,η∗)=0λi∗gi(x)=0,i=1,2,...,kgi(x)≤0,i=1,2,...kλi∗≥0,i=1,2,...khj(x)=0,j=1,2,...,l
总的来说,任何满足强对偶性的优化问题,只要其目标函数与约束函数可微,任一对原始问题和对偶问题的解都是满足KKT条件的
参考网址:https://zhuanlan.zhihu.com/p/38182879
参考网址:https://blog.csdn.net/acdreamers/article/details/41413445