拉格朗日对偶
引言
上一篇,我们说到了拉格朗日乘子法和 KKT条件。这篇中,我们将继续学习拉格朗日对偶。此篇参考:这个链接。
如果目标函数和约束条件都是变量为
x 的线性函数,该问题被称为线性规划;如果目标函数是二次函数,而约束条件是线性函数,该问题被称为二次规划;目标函数和约束函数均为非线性函数,称为非线性规划。每个线性规划问题都有一个与之对应的对偶问题。对偶问题有以下几种很好的性质:
1. 对偶问题的对偶问题是原始问题。
2. 无论原始问题是否是凸的,对偶问题都是凸优化问题。
3. 对偶问题可以给出原始问题的一个下界。
4. 当满足一定条件时,原始问题和对偶问题完全等效。
原始问题
假设
f(x),hi(x),gj(x) 是定义在
Rn 上的连续可微函数,给出不等式约束优化问题:
x∈Rnminf(x)s.t. hi(x)=0, i=1,2,3,…,m gj(x)≤0, j=1,2,3,…,k
如果约束条件满足KKT条件时,可以使用拉格朗日函数求解:
L(x,α,β)=f(x)+i=1∑mαihi(x)+j=1∑kβjgj(x)
我们先给出一个重要结论:
f(x)=α,β;βi≥0maxL(x,α,β)
在上面这条式子中,我们把
x 看做常量,只改变
α 和
β 来最大化
L(x,α,β)。
我们可以定义以下两个方法:
-
x 不满足约束条件。如果
hi(x)≠
0 时,令
αi→+∞,此时
αihi(x)→+∞。如果
gj(x)>0,令
βj→+∞,此时
βjgj(x)→+∞。这种情况下,只要不满足任一条件,都会使
L(x,α,β)→+∞,造成问题无解。
-
x 满足约束条件。
x 满足约束条件需要
x 同时满足
hi(x)=0 且
gj(x)≤0。显然,如果
hi(x)=0,不管
αi 取值如何,都无法改变
αihi(x)=0。接下来有影响的就剩下
βjgj(x) 这一项了。对于这一项,
gj(x)≤0,并且使得
βj≥0,就会有
βjg(x)≤0,而在结论的式子中,我们选择改变
βj 来使
L(x,α,β) 最大,所以这里的
βj 会更倾向于取
0,因此
βjgj(x)=0。在这种情况下,
αihi(x)=0 且
βjgj(x)=0,因此只剩下了
f(x) 一项。
综上所述,我们得到了这么一个结论:
θp(x)={f(x),x满足约束要求+∞,其他
θp(x)=f(x)=α,β;βi≥0maxL(x,α,β)≥L(x,α,β)
因此可得
xminθp(x)=xminα,β;βi≥0maxL(x,α,β)
对偶问题
我们将原始命题的最优解定义为
p∗,现在为对偶问题定义一个对偶函数:
θD(α,β)=xminL(x,α,β)
于是对偶问题如下:
α,β;βi≥0maxθD(α,β)=α,β;βi≥0maxxminL(x,α,β)
对偶问题和原始问题的区别就在于互换了
max 和
min 的位置。
然后我们定义最优问题的解为
d∗.
在引言中说到对偶问题可以给出原始问题的一个下界,而当满足一定条件时,原始问题和对偶问题完全等效。
即
d∗≤p∗
D(α,β)=xminL(x,α,β)≤L(x,α,β)≤α,β;βi≥0maxL(x,α,β)=f(x)
即
D(α,β)≤f(x),显然
d∗=α,β;βi≥0maxD(α,β)≤xminf(x)=p∗
因此我们可以用对偶的性质,为原始问题引入一个下界
d∗,即使原始问题非凸,这种性质叫做弱对偶性。无论原始问题是什么形式,对偶问题总是一个凸优化问题,因此对于难以解决的原始问题,我们都可以将它转化为对偶问题,通过优化对偶问题来得到原始问题的一个下界。
当完全满足
d∗=p∗ 时,称为强对偶性。在强对偶成立时,可以通过求解对偶问题来得到原始问题的解。若满足 Slater 条件 和 KKT 条件
Slater 条件:
假设函数
f(x) 和
gj(x) 是凸函数,
hi(x) 是仿射函数;并且假设不等式约束
gj(x) 是严格可行的,即存在
x 对所有
j 有
gj(x)<0,则存在
x∗,
α∗,
β∗,使
x∗ 是原始问题的解
α∗,
β∗ 是对偶问题的解,并且
p∗=d∗=L(x∗,α∗,β∗)
KKT条件:
假设函数
f(x) 和
gj(x) 是凸函数,
hi(x) 是仿射函数;并且假设不等式约束
gj(x) 是严格可行的,即存在
x 对所有
j 有
gj(x)<0,则
x∗ 和
α∗,
β∗ 分别是原始问题和对偶问题的解的充分必要条件是
x∗,
α∗,
β∗ 满足以下 KKT 条件
∇xL(x∗,α∗,β∗)=0βj∗gj(x∗)=0,i=1,2,3,⋯,kgj(x∗)≤0,i=1,2,3,⋯,kβj∗≥0,i=1,2,3,⋯,mhi(x∗)=0,i=1,2,3,⋯,m
在 SVM 中,原始问题就是一个凸优化问题,Slater条件在 SVM 中表示线性可分,当数据不可分时,强对偶是不成立的,但是只需要加一个 kernel 就可以了。