考虑优化问题:
min
x
f
(
x
)
s
.
t
.
c
1
(
x
)
=
0
c
2
(
x
)
≥
0
\begin{array}{ll} \min_x & f(x) \\\\ s.t. & c_1(x) = 0 \\\\ & c_2(x) \geq 0 \end{array}
minxs.t.f(x)c1(x)=0c2(x)≥0
构造拉格朗日函数:
L
(
x
,
λ
)
=
f
(
x
)
−
λ
1
c
1
(
x
)
−
λ
2
c
2
(
x
)
L(x,\lambda) = f(x) -\lambda_1 c_1(x) - \lambda_2 c_2(x)
L(x,λ)=f(x)−λ1c1(x)−λ2c2(x)
等式约束的对偶变量
λ
1
\lambda_1
λ1 在拉格朗日函数中取正取负都行,但不等式约束的对偶变量
λ
2
\lambda_2
λ2 在这里取正。
因此在可行域
D
=
{
x
∣
c
1
(
x
)
=
0
,
c
2
(
x
)
≥
0
}
D=\{x| c_1(x) = 0, c_2(x) \geq0\}
D={x∣c1(x)=0,c2(x)≥0} 内,原目标函数
f
(
x
)
f(x)
f(x) 是拉格朗日函数的一个上界,即
max
λ
L
(
x
,
λ
)
=
{
f
(
x
)
,
x
∈
D
,
+
∞
,
o
t
h
e
r
w
i
s
e
.
\max_{\lambda} L(x,\lambda) = \left\{ \begin{array}{lr} f(x), & x \in D, \\ +\infty, & otherwise. \end{array} \right.
λmaxL(x,λ)={f(x),+∞,x∈D,otherwise.
所以原优化问题等价于:
min
x
f
(
x
)
=
min
x
max
λ
L
(
x
,
λ
)
\min_x f(x) = \min_x \max_\lambda L(x,\lambda)
xminf(x)=xminλmaxL(x,λ)
原来的约束优化问题转成了一个 min max \min \max minmax 问题。
对偶问题
要引出对偶问题,就需要用到一个非常重要的不等式:
min
x
max
λ
L
(
x
,
λ
)
≥
max
λ
min
x
L
(
x
,
λ
)
(1)
\min_x \max_\lambda L(x,\lambda) \geq \max_\lambda \min_x L(x,\lambda) \tag{1}
xminλmaxL(x,λ)≥λmaxxminL(x,λ)(1)
证明起来非常容易,因为: max λ L ( x , λ ) ≥ L ( x , λ ) ≥ min x L ( x , λ ) \max_\lambda L(x,\lambda) \geq L(x,\lambda) \geq \min_x L(x,\lambda) λmaxL(x,λ)≥L(x,λ)≥xminL(x,λ)
那么上式左端的最小值也会大于右端的最大值,如(1)所示。
max min \max \min maxmin 问题称为原问题的对偶问题,对偶问题的最优值小于等于原问题的最优值,两者之差(绝对值)称为对偶间隙。当对偶间隙为零时,对偶问题的最优解就是原问题的最优解。所以有时候对偶问题比原问题更容易求解时,可以选择求解对偶问题。
对偶上升法
当凸优化问题满足强对偶条件,对偶间隙为零,即
min
x
max
λ
L
(
x
,
λ
)
=
max
λ
min
x
L
(
x
,
λ
)
\min_x \max_\lambda L(x,\lambda) = \max_\lambda \min_x L(x,\lambda)
xminλmaxL(x,λ)=λmaxxminL(x,λ)
这就意味着先找最优的 x x x 还是先找最优的 λ \lambda λ 没有区别,那么我们自然想到交替优化的方法:
- 随机初始化 x 0 , λ 0 x_0, \lambda_0 x0,λ0
- 更新 x x x,使得 x t + 1 = arg min x L ( x , λ t ) x_{t+1} = \arg \min_x L(x,\lambda_{t}) xt+1=argminxL(x,λt)
- 更新 λ \lambda λ,使得 λ t + 1 = arg max λ L ( x t + 1 , λ ) \lambda_{t+1} = \arg \max_\lambda L(x_{t+1},\lambda) λt+1=argmaxλL(xt+1,λ),甚至为了方便可以直接用梯度上升法: λ t + 1 = λ t + η t ∇ λ L ( x t + 1 , λ ) \lambda_{t+1} = \lambda_{t} + \eta_t \nabla_\lambda L(x_{t+1},\lambda) λt+1=λt+ηt∇λL(xt+1,λ)
是不是非常简单!!!最重要的是,拉格朗日函数对对偶变量的梯度实在是太简单了!!!!
∇
λ
1
L
(
x
∗
,
λ
)
=
−
c
1
(
x
∗
)
∇
λ
2
L
(
x
∗
,
λ
)
=
−
c
2
(
x
∗
)
\begin{array}{ll} \nabla_{\lambda_1} L(x^*, \lambda) &=& -c_1(x^*) \\ \nabla_{\lambda_2} L(x^*, \lambda) &= &-c_2(x^*) \end{array}
∇λ1L(x∗,λ)∇λ2L(x∗,λ)==−c1(x∗)−c2(x∗)
对偶上升法中迭代的停止条件:
- 对偶间隙足够小
- 原问题的约束条件满足