利用拉格朗日对偶性求解带约束条件的最优化问题
1 原始问题
设 f ( x ) , c i ( x ) , h j ( x ) 是定义在 R n 的连续可微函数,求解在下面约束条件时, f ( x ) 的极小值。 min x ∈ R n { f ( x ) } s . t . c i ( x ) ≤ 0 , i = 1 , 2 , . . . , k h j ( x ) = 0 , j = 1 , 2 , . . . , l ( 公式一 ) 这就是带有约束条件的原始问题 设f(x),c_i(x),h_j(x)是定义在R^n的连续可微函数,求解在下面约束条件时,f(x)的极小值。\\ \min \limits_{x\in R^n} \{f(x)\} \\ s.t. \quad c_i(x)\leq0,i=1,2,...,k \\ \quad \quad \quad h_j(x)=0,j=1,2,...,l \\ (公式一)\\ 这就是带有约束条件的原始问题 设f(x),ci(x),hj(x)是定义在Rn的连续可微函数,求解在下面约束条件时,f(x)的极小值。x∈Rnmin{f(x)}s.t.ci(x)≤0,i=1,2,...,khj(x)=0,j=1,2,...,l(公式一)这就是带有约束条件的原始问题
需要用到拉格朗日乘子法,将不等式换成等式,那么我们就可以引进广义拉格朗日函数:
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
i
=
1
k
α
i
c
i
(
x
)
+
∑
j
=
1
l
β
j
h
j
(
x
)
(
公式二
)
对于每个约束条件前面都来加一个拉格朗日乘子,对应的
α
i
有
k
维,对应的
β
j
有
l
维,而原始的
f
(
x
)
有
n
维。
L(x,\alpha,\beta)=f(x)+\sum\limits_{i=1}^k\alpha_ic_i(x)+\sum\limits_{j=1}^l\beta_jh_j(x)(公式二)\\ 对于每个约束条件前面都来加一个拉格朗日乘子,对应的\alpha_i有k维,对应的\beta_j有l维,而原始的f(x)有n维。
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)(公式二)对于每个约束条件前面都来加一个拉格朗日乘子,对应的αi有k维,对应的βj有l维,而原始的f(x)有n维。
我们对广义拉格朗日函数先最大化、后最小化。
我们令
θ
P
(
x
)
=
max
α
,
β
;
α
i
≥
0
L
(
x
,
α
,
β
)
因此,
min
x
[
θ
P
(
x
)
]
=
min
x
[
max
α
,
β
;
α
i
≥
0
L
(
x
,
α
,
β
)
]
=
min
x
{
f
(
x
)
+
max
α
,
β
;
α
i
≥
0
[
∑
i
=
1
k
α
i
c
i
(
x
)
+
∑
j
=
1
l
β
j
h
j
(
x
)
]
}
(
公式三
)
其中,
P
是
[
P
r
i
m
a
l
]
,
即原始的含义。
我们令\theta_P(x)=\max \limits_{\alpha,\beta;\alpha_i \geq0}L(x,\alpha,\beta)\\ 因此,\min \limits_{x} [\theta_P(x)] \\ =\min \limits_{x}[ \max \limits_{\alpha,\beta;\alpha_i \geq0}L(x,\alpha,\beta) ]\\ =\min\limits_{x} \{ f(x)+\max \limits_{\alpha,\beta;\alpha_i \geq0}[\sum\limits_{i=1}^k\alpha_ic_i(x)+\sum\limits_{j=1}^l\beta_jh_j(x)] \}(公式三)\\ 其中,P是[Primal],即原始的含义。
我们令θP(x)=α,β;αi≥0maxL(x,α,β)因此,xmin[θP(x)]=xmin[α,β;αi≥0maxL(x,α,β)]=xmin{f(x)+α,β;αi≥0max[i=1∑kαici(x)+j=1∑lβjhj(x)]}(公式三)其中,P是[Primal],即原始的含义。
拉格朗日函数为什么要先最大化呢?
在满足KKT条件的情况下,公式(一)和公式(三)是等价的。
暂且抛开KKT条件的具体细节。很明显,如果 α,β 是非零常数,那么这两个式子是不可能相等的。现在把这两组乘子看成自变量,然后调节之使 L(x,α,β) 最大化。
对于公式(三),我们将 x 分成两部分分析:
-
可行解区域内,此时公式(一)中的约束条件都得到满足。
- 因为 h j ( x ) = 0 h_j(x)=0 hj(x)=0 , 所以不管β如何变化,必然有 β j h j ( x ) = 0 β_jh_j(x)=0 βjhj(x)=0 。
- c i ( x ) ≤ 0 c_i(x)≤0 ci(x)≤0, 且限定了 α i ≥ 0 α_i≥0 αi≥0,则 α i c i ( x ) α_ic_i(x) αici(x) 最大值为0。
- 综上,在可行解区域内 θ P ( x ) = f ( x ) \theta_P(x)=f(x) θP(x)=f(x)
-
可行解区域外,此时公式(一)的约束条件未满足。
- 如果 α i 和 β j α_i和β_j αi和βj取无穷大,那么 θ P ( x ) = + ∞ \theta_P(x)=+\infty θP(x)=+∞
因此,综合上面两个论域, f ( x ) f(x) f(x)在可行解区域内最小化,等于 max α , β ; α i ≥ 0 L ( x , α , β ) \max \limits_{\alpha,\beta;\alpha_i \geq0}L(x,\alpha,\beta) α,β;αi≥0maxL(x,α,β)的最小化,而在可行解区域外, max α , β ; α i ≥ 0 L ( x , α , β ) \max \limits_{\alpha,\beta;\alpha_i \geq0}L(x,\alpha,\beta) α,β;αi≥0maxL(x,α,β)无极值。这样当我们尝试最小化 max α , β ; α i ≥ 0 L ( x , α , β ) \max \limits_{\alpha,\beta;\alpha_i \geq0}L(x,\alpha,\beta) α,β;αi≥0maxL(x,α,β)时也就相当于求解公式(一)了。即通过构造拉格朗日函数,我们将有约束的优化问题转化成了无约束的优化问题。
这个原始问题的最优值就可以写成:
p
∗
=
min
x
θ
P
(
x
)
=
min
x
max
α
,
β
;
α
i
≥
0
L
(
x
,
α
,
β
)
这样就转为了极小极大值的问题,记为
p
∗
。
p^*=\min \limits_{x}\theta_P(x) = \min \limits_{x} \max \limits_{\alpha,\beta;\alpha_i \geq0}L(x,\alpha,\beta) \\ 这样就转为了极小极大值的问题,记为p^*。
p∗=xminθP(x)=xminα,β;αi≥0maxL(x,α,β)这样就转为了极小极大值的问题,记为p∗。
2 对偶问题
在原始问题中,我们是先对(α,β)求最大值,未知的是x函数。
如果这次我们是先对x求最小值,那么未知的是α和β函数。
θ
D
(
α
,
β
)
=
min
x
L
(
x
,
α
,
β
)
这里的
D
代表了「
D
u
a
l
」
,
意味着对偶问题。那么对偶问题的最优值就可以写成:
d
∗
=
max
α
,
β
;
α
i
≥
0
θ
D
(
α
,
β
)
=
max
α
,
β
;
α
i
≥
0
min
x
L
(
x
,
α
,
β
)
这就写成了极大极小值的问题。
\theta_D(\alpha,\beta)=\min \limits_{x}L(x,\alpha,\beta)\\ 这里的D代表了 「Dual」, 意味着对偶问题。那么对偶问题的最优值就可以写成:\\ d^*=\max \limits_{\alpha,\beta;\alpha_i \geq0}\theta_D(\alpha,\beta) = \max \limits_{\alpha,\beta;\alpha_i \geq0}\min \limits_{x}L(x,\alpha,\beta) \\ 这就写成了极大极小值的问题。
θD(α,β)=xminL(x,α,β)这里的D代表了「Dual」,意味着对偶问题。那么对偶问题的最优值就可以写成:d∗=α,β;αi≥0maxθD(α,β)=α,β;αi≥0maxxminL(x,α,β)这就写成了极大极小值的问题。
3 原始问题和对偶问题的关系
我们可以手动推导下原始问题和对偶问题的关系。
利用这个等式,我们就可以用对偶问题来求解有约束的最优化原始问题,实现了极大极小值之间的转换,便于计算出最优解。
KKT条件如下:
-
函数 f ( x ) f(x) f(x)和 c i ( x ) c_i(x) ci(x)是凸函数
-
h j ( x ) h_j(x) hj(x) 是仿射函数
-
并且不等式约束 c i ( x ) c_i(x) ci(x)是严格可行的
这里说明凸函数和仿射函数的意思:
凸函数是指
f
(
x
)
在任意两个向量
x
1
,
x
2
的函数满足:
f
(
x
1
+
x
2
2
)
<
=
f
(
x
1
)
+
f
(
x
2
)
2
特点是「局部最小值即全局最小值」,意味着可以通过偏微分函数为零求出最小值。
仿射函数就是最高次数为
1
的多项式函数,一般形式为
f
(
x
)
=
A
x
+
b
凸函数是指f(x)在任意两个向量x_1,x_2的函数满足:\\ f(\frac{x_1+x_2}{2})<=\frac{f(x_1)+f(x_2)}{2} \\ 特点是「局部最小值即全局最小值」,意味着可以通过偏微分函数为零求出最小值。\\ 仿射函数就是最高次数为1的多项式函数,一般形式为f(x)= Ax+b
凸函数是指f(x)在任意两个向量x1,x2的函数满足:f(2x1+x2)<=2f(x1)+f(x2)特点是「局部最小值即全局最小值」,意味着可以通过偏微分函数为零求出最小值。仿射函数就是最高次数为1的多项式函数,一般形式为f(x)=Ax+b
KKT条件的公式表达:
在最大熵模型以及SVM等模型中,我们就需要将原始问题转换为对偶问题进行求解。