半正定规划(SDP)及半正定松弛(SDR)
通常求解一个优化问题的方法不是唯一的,常见的优化问题LP,QP,QCQP,SOCP可以转化为半正定规划SDP问题。
半正定松弛(SDR)方法通过放宽非凸约束,将问题变为SDP,然后在从变形后的凸问题的最优解中找到原问题的近似解。
SDP
半正定规划的不等式形式为:
min
c
T
x
s.t.
F
(
x
)
⪯
0
\begin{equation} \begin{align*} \min\quad &\mathbf{c^Tx} \\ \text{s.t.}\quad &\mathbf{F}(\mathbf{x})\preceq\mathbf{0}\\ \end{align*} \end{equation}
mins.t.cTxF(x)⪯0
其中
c
∈
R
n
,
x
∈
R
n
,
F
(
x
)
=
F
0
+
x
1
F
1
+
.
.
.
+
x
n
F
n
,
F
i
∈
S
n
\mathbf{c}\in\mathbb{R}^{n},\mathbf{x}\in\mathbb{R}^n,\mathbf{F}(\mathbf{x})=\mathbf{F}_0+x_1\mathbf{F}_1+...+x_n\mathbf{F}_n,\mathbf{F}_i\in\mathbb{S}^n
c∈Rn,x∈Rn,F(x)=F0+x1F1+...+xnFn,Fi∈Sn。
S
n
\mathbb{S}^{n}
Sn表示n阶实对称矩阵。
半正定规划的标准形式为:
min
Tr(
C
X
)
s.t.
X
⪰
0
Tr(
A
i
X
)=
b
i
,
i
=
1
,
.
.
.
,
m
\begin{equation} \begin{align*} \min\quad &\text{Tr(}\mathbf{CX}\text{)} \\ \text{s.t.}\quad&\mathbf{X}\succeq \mathbf{0} \\ &\text{Tr(}{{\mathbf{A}}_{i}}\mathbf{X}\text{)=}{{\text{b}}_{i}},i=1,...,m \\ \end{align*} \end{equation}
mins.t.Tr(CX)X⪰0Tr(AiX)=bi,i=1,...,m
其中
A
i
,
C
,
X
∈
S
n
,
b
i
∈
R
n
{{\mathbf{A}}_{i}},\mathbf{C},\mathbf{X}\in {{\mathbb{S}}^{n}},{{b}_{i}}\in \mathbb{R}^{n}
Ai,C,X∈Sn,bi∈Rn。
结合SDR构造SDP并求解
Boolean 二次规划
考虑如下的Boolean二次规划(Boolean Quadratic Program,BQP):
max
x
T
C
x
s.t.
x
i
∈
{
−
1
,
+
1
}
,
i
=
1
,
.
.
.
,
n
\begin{equation} \begin{align*} \max\quad &\mathbf{x}^T\mathbf{Cx} \\ \text{s.t.}\quad&x_i\in\{-1,+1\},i=1,...,n \\ \end{align*} \end{equation}
maxs.t.xTCxxi∈{−1,+1},i=1,...,n
其中
C
∈
S
n
\mathbf{C}\in\mathbb{S}^n
C∈Sn。
当且仅当
C
⪰
0
\mathbf{C}\succeq\mathbf{0}
C⪰0时,二次目标函数为凸。但是可行集等价于由非仿射等式约束
x
i
2
=
1
,
i
=
1
,
.
.
,
n
x_i^2=1,i=1,..,n
xi2=1,i=1,..,n形成的集合,因此即使
C
\mathbf{C}
C是半正定矩阵,BQP仍然不是凸问题。用穷举法求解BQP问题的复杂度是
2
n
2^n
2n。
下面介绍如何通过BQP的变形和松弛来获得一个多项式时间可解的凸问题,并且可以有效地得到高精度的近似解。
基于SDR的BQP近似
由于
x
T
C
x
=
T
r
(
C
x
x
T
)
\mathbf{x}^T\mathbf{C}\mathbf{x}=Tr(\mathbf{Cxx}^T)
xTCx=Tr(CxxT),故定义辅助变量
X
=
x
x
T
\mathbf{X}=\mathbf{xx}^T
X=xxT。
则式(3)可以变换为
max
x
,
X
Tr(
C
X
)
s.t.
X
=
x
x
T
[
X
]
i
i
=
1
,
i
=
1
,
.
.
.
,
n
\begin{equation} \begin{align*} \max_{\mathbf{x,X}}\quad &\text{Tr(}\mathbf{CX}\text{)} \\ \text{s.t.}\quad&\mathbf{X}= \mathbf{xx}^T \\ &[\mathbf{X}]_{ii}=1,i=1,...,n\\ \end{align*} \end{equation}
x,Xmaxs.t.Tr(CX)X=xxT[X]ii=1,i=1,...,n
对于任意的
C
\mathbf{C}
C,目标函数是关于
X
\mathbf{X}
X的线性函数(因此是凸的),原始问题中关于
x
x
x的非凸约束转化为关于
X
\mathbf{X}
X的凸约束(即对角线上所有元素为1),但是等式约束
X
=
x
x
T
\mathbf{X}=\mathbf{xx}^T
X=xxT(即
X
\mathbf{X}
X一定是秩为1的PSD矩阵)是非凸的。
由于
X
=
x
x
T
⇔
X
⪰
0
,
r
a
n
k
(
X
)
=
1
\mathbf{X}=\mathbf{xx}^T\Leftrightarrow \mathbf{X}\succeq\mathbf{0},rank(\mathbf{X})=1
X=xxT⇔X⪰0,rank(X)=1,因此将(4)中的非凸约束
X
=
x
x
T
\mathbf{X}=\mathbf{xx}^T
X=xxT放松为
X
⪰
0
\mathbf{X}\succeq\mathbf{0}
X⪰0(即去掉秩为1的约束),可以将原问题转化为如下SDP问题:
max
x
,
X
Tr(
C
X
)
s.t.
X
⪰
0
[
X
]
i
i
=
1
,
i
=
1
,
.
.
.
,
n
\begin{equation} \begin{align*} \max_{\mathbf{x,X}}\quad &\text{Tr(}\mathbf{CX}\text{)} \\ \text{s.t.}\quad& \mathbf{X}\succeq\mathbf{0}\\ &[\mathbf{X}]_{ii}=1,i=1,...,n\\ \end{align*} \end{equation}
x,Xmaxs.t.Tr(CX)X⪰0[X]ii=1,i=1,...,n
这种松弛方法被称作半正定松弛(SemiDefinite Relaxation, SDR)
一旦问题(5)得到解决,其最优解可以用于寻找原问题(3)的近似解。
1
r
a
n
k
(
X
∗
)
=
1
rank(\mathbf{X}^*)=1
rank(X∗)=1时
由于转化过程中抛弃了秩为1的约束,因此如果问题(5)的最优解
X
∗
\mathbf{X^*}
X∗的秩为1,那么可以通过特征值分解
X
∗
=
x
∗
x
∗
T
\mathbf{X^*}=\mathbf{x}^*{\mathbf{x}^*}^T
X∗=x∗x∗T,从而直接得到(3)的最优解
x
∗
\mathbf{x^*}
x∗。
2
r
a
n
k
(
X
∗
)
≠
1
rank(\mathbf{X}^*)\ne1
rank(X∗)=1时
(1)秩-1近似
通过简单地选取
X
∗
\mathbf{X^*}
X∗的主特征值向量
x
~
\mathbf{\tilde{x}}
x~,对于任意
i
i
i,再利用
x
~
i
=
s
g
n
(
x
~
i
)
\tilde{x}_i=sgn(\tilde{x}_i)
x~i=sgn(x~i),将其量化为
x
~
∈
{
±
1
}
n
\mathbf{\tilde{x}}\in\{\pm1\}^n
x~∈{±1}n,所得解即为(3)的近似解。
(2)高斯随机化
产生
L
L
L个服从均值为
0
\mathbf{0}
0、协方差矩阵为
X
∗
\mathbf{X}^*
X∗的高斯随机向量
{
ξ
l
,
l
=
1
,
.
.
.
,
L
}
\{\mathbf{\xi}^{l},l=1,...,L\}
{ξl,l=1,...,L},再将
ξ
l
\mathbf{\xi}^{l}
ξl量化为集合
{
±
1
}
n
\{\pm1\}^n
{±1}n中的一个向量,记作
x
^
(
l
)
\hat{\mathbf{x}}^{(l)}
x^(l),量化的方法如下:
[
x
^
(
l
)
]
i
=
s
g
n
(
[
ξ
^
(
l
)
]
i
)
,
∀
i
[\hat{\mathbf{x}}^{(l)}]_i=sgn([\hat{\mathbf{\xi}}^{(l)}]_i),\forall{i}
[x^(l)]i=sgn([ξ^(l)]i),∀i
最终得到
x
^
=
x
^
(
l
∗
)
\hat{\mathbf{x}}^=\hat{\mathbf{x}}^{(l^*)}
x^=x^(l∗),即为(3)的近似解,其中
l
∗
=
arg
max
l
=
1
,
.
.
.
,
L
x
^
(
l
)
T
C
x
^
(
l
)
l^*=\arg \max_{l=1,...,L}{\hat{\mathbf{x}}^{(l)}}^T\mathbf{C}\hat{\mathbf{x}}^{(l)}
l∗=argl=1,...,Lmaxx^(l)TCx^(l)