Boyd的书中给出了凸优化最基本的标准定义如下:
minimize
f
0
(
x
)
subject to
f
i
(
x
)
⩽
0
,
i
=
1
,
⋯
,
m
h
i
(
x
)
=
0
,
i
=
1
,
⋯
,
p
\begin{array}{ll} \operatorname{minimize} & f_{0}(x) \\ \text { subject to } & f_{i}(x) \leqslant 0, \quad i=1, \cdots, m \\ & h_{i}(x)=0, \quad i=1, \cdots, p \end{array}
minimize subject to f0(x)fi(x)⩽0,i=1,⋯,mhi(x)=0,i=1,⋯,p
其中
f
f
f为凸函数,
h
h
h为仿射函数。而同时我们知道SDP的最简单形式如下:
minimize
f
0
(
x
)
subject to
X
⪰
0
\begin{array}{ll} \operatorname{minimize} & f_{0}(x) \\ \text { subject to } & X \succeq 0 \end{array}
minimize subject to f0(x)X⪰0
并且知道这也是一个凸问题。为什么呢?根据半正定的定义,
X
⪰
0
X \succeq 0
X⪰0表示,
∀
y
\forall y
∀y,有
y
H
X
y
≥
0
y^HXy\ge 0
yHXy≥0。对于每一个给定的
y
y
y,
y
H
X
y
≥
0
→
∑
i
∑
j
y
i
∗
y
j
x
i
j
≥
0
y^HXy\ge 0\rightarrow\sum_i\sum_jy_i^*y_jx_{ij}\ge0
yHXy≥0→∑i∑jyi∗yjxij≥0无疑是一个关于
X
X
X的仿射约束,那么无疑是一个凸函数。因此
X
⪰
0
X \succeq 0
X⪰0 实质上是无数个凸函数约束 (因为要对所有
y
y
y均成立)。尽管是无穷多的约束,但每个约束都是凸的不等式约束,故而符合凸优化的基本定义。
同时我们知道,拉格朗日函数定义如下:
L
(
x
,
λ
,
ν
)
=
f
0
(
x
)
+
∑
i
=
1
m
λ
i
f
i
(
x
)
+
∑
i
=
1
p
ν
i
h
i
(
x
)
L(x, \lambda, \nu)=f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{p} \nu_{i} h_{i}(x)
L(x,λ,ν)=f0(x)+i=1∑mλifi(x)+i=1∑pνihi(x)
一言以蔽之即通过拉格朗日乘子将限制条件写入到目标函数之中。那么如何对SDP问题写出其拉格朗日函数呢?
正如上面的分析,对于给定的
y
y
y,限制条件为
y
H
X
y
≥
0
y^HXy\ge 0
yHXy≥0,那么对其可以引入拉格朗日乘子
λ
≥
0
\lambda\ge 0
λ≥0,在目标函数中加入
λ
y
H
X
y
\lambda y^HXy
λyHXy这一项。那么对所有的
y
y
y都这么操作的话,拉格朗日函数就可以写为:
L
(
x
,
λ
1
,
⋯
,
)
=
f
0
(
x
)
+
∑
n
λ
n
y
n
H
X
y
n
L(x, \lambda_1, \cdots, )=f_{0}(x) + \sum_n \lambda_n y_n^HXy_n
L(x,λ1,⋯,)=f0(x)+n∑λnynHXyn
由于有无数个
y
n
y_n
yn,也就有无数个
λ
n
\lambda_n
λn,后面这一项是写不完的。但我们显然可以有:
∑
n
λ
n
y
n
H
X
y
n
=
∑
n
t
r
(
λ
n
y
n
H
X
y
n
)
=
∑
n
t
r
(
λ
n
Y
n
X
)
=
t
r
(
∑
n
λ
n
Y
n
X
)
=
t
r
(
Z
X
)
\sum_n \lambda_n y_n^HXy_n = \sum_n \mathrm{tr}(\lambda_ny_n^HXy_n )= \sum_n \mathrm{tr}(\lambda_nY_nX)=\mathrm{tr}( \sum_n \lambda_nY_nX)=\mathrm{tr}( ZX)
n∑λnynHXyn=n∑tr(λnynHXyn)=n∑tr(λnYnX)=tr(n∑λnYnX)=tr(ZX)
其中,
Y
n
=
y
n
y
n
H
Y_n = y_ny_n^H
Yn=ynynH,
Z
=
∑
n
λ
n
Y
n
Z = \sum_n \lambda_nY_n
Z=∑nλnYn。因此,
L
(
x
,
λ
1
,
⋯
,
)
=
f
0
(
x
)
+
t
r
(
Z
X
)
L(x, \lambda_1, \cdots, )=f_{0}(x) + \mathrm{tr}( ZX)
L(x,λ1,⋯,)=f0(x)+tr(ZX),
注意到,
Z
Z
Z是一个半正定矩阵。
那么,关于KKT条件中的互补松弛条件,我们还有一个小结论。本来互补松弛条件应当写为:
t
r
(
Z
X
)
=
0
\mathrm{tr}( ZX)=0
tr(ZX)=0
但由于
Z
Z
Z和
X
X
X均为半正定矩阵,那么我们可以有
Z
=
S
H
S
Z = S^HS
Z=SHS,
X
=
A
H
A
X=A^HA
X=AHA:
t
r
(
Z
X
)
=
0
→
t
r
(
S
H
S
A
H
A
)
=
0
→
∥
S
A
H
∥
F
=
0
→
S
A
H
=
0
\mathrm{tr}( ZX) = 0\rightarrow \mathrm{tr}(S^HSA^HA)=0\rightarrow \|SA^H\|_F=0\rightarrow SA^H=0
tr(ZX)=0→tr(SHSAHA)=0→∥SAH∥F=0→SAH=0
因此
Z
X
=
0
ZX=0
ZX=0.
故而
t
r
(
Z
X
)
=
0
\mathrm{tr}( ZX)=0
tr(ZX)=0与
Z
X
=
0
ZX=0
ZX=0等价。
注:按最基本的定义里,互补松弛条件应该是针对每个约束而言,也即应写为:
t
r
(
λ
n
Y
n
X
)
=
0
,
∀
n
\mathrm{tr}( \lambda_nY_nX) = 0 , \forall n
tr(λnYnX)=0,∀n
但事实上这与 t r ( Z X ) = 0 \mathrm{tr}( ZX)=0 tr(ZX)=0是等价的。因为 X X X为半正定,因此 t r ( Z X ) = 0 \mathrm{tr}( ZX)=0 tr(ZX)=0时,说明所有 t r ( λ n Y n X ) \mathrm{tr}( \lambda_nY_nX) tr(λnYnX)必均等于 0 0 0,这是因为易证 t r ( λ n Y n X ) ≥ 0 \mathrm{tr}( \lambda_nY_nX)\ge 0 tr(λnYnX)≥0。
