谱范数中与对称矩阵最近的半正定矩阵

计算科学 优化 凸优化 半定规划
2021-12-21 13:52:19

所以我有一个对称矩阵我想解决优化问题 \hspace{-5mm}\text{服从}\;\; S\geq0. A是给定的,S是变量。A

MinimizeAS2
Subject toS0.
AS

我可以将它直接放入我的求解器(Convex.jl 中的 SCSSolver),但它对于我的矩阵大小(n = 500)来说太慢了。我很确定它是处理器而不是缺少 RAM,因为它将我的处理器征税到 100%,但是在进程运行时我的磁盘上没有发生读/写。

我尝试将其设置为 Schur 补码问题,但这并没有帮助。由于AS是对称的,我实际上只是在查看最大量级特征值,我知道幂迭代算法非常有效,我可以以某种方式合并它吗?加快速度的标准程序是什么?有没有办法通过限制到正半定锥的一个子集来使它更快?如有必要,我愿意对准确性进行打击。

3个回答

这里不需要使用 Schur 补码,因为AS已经是对称的。这个问题作为 SDP 的传统表述是

mint subject toAS+tI0AStI0

产生形式的 SDP(我在这里特别说明,因为 SDP 有很多不同的“标准形式”)

mincTxF0+x1F1+...+xmFm0

在哪里

x=[tS1,1S1,2S1,3Sn,n]T

元素,矩阵的大小1+n(n1)/2Fi2n×2n

对于的问题,这意味着您有大约 125,000 个变量和大小为 x的矩阵。原始对偶内点方法(在 SDPA、SDPT3、SeDuMi、CSDP 等中实现)需要在每次迭代中求解一个包含 125,000 个变量的 125,000 个方程的系统,并且该系统通常是完全密集的。 n=500xj10001000

这不是您可以在典型的台式机上执行的操作,但在具有足够 RAM(超过 128 GB)的更强大的服务器上可以实现。解决方案时间会相当长(10 多个小时)

Julia 实现的“分裂锥求解器”在我看来是一阶 ADMM 方法的实现,例如在

B. O'Donoghue、E. Chu、N. Parikh 和 S. Boyd。通过同质自对偶嵌入进行圆锥优化的算子分裂

用于 SDP 的 ADMM 的问题在于它不能产生非常准确的解决方案(您通常最多只能获得两位或三位数的准确度),并且该方法需要大量调整才能获得良好的结果。它不像原始对偶内点方法那么健壮(从某种意义上说,它可以始终如一地解决您提出的所有问题)。

我不能保证这种方法在 Julia 中的具体实现,因为我从未使用过它。SDP 的其他一阶代码可能比 SCSSolver 做得更好。

凸优化文献中可能有一些关于这种谱范数最小化的工作,它甚至可以避免制定 SDP,但我不是该主题的专家。

您确定您真的需要矩阵 2 范数意义上的最佳近似值,而不是 Frobenius 范数吗?

稍后添加的注释:事实证明,在 Frobenius 范数中计算此投影的方法同样适用于计算谱范数中的投影。的正交对角化A

A=i=1nλiu(i)u(i)T

然后

S=i=1nλi+u(i)u(i)T

当我写这个答案时,我知道这适用于 Frobenius 范数投影,但并不知道它也适用于 2 范数投影。对于非对称,或者如果有额外的约束,这个简单的公式不适用,SDP 公式可能仍然有用。A

根据论文

Nicholas J. Higham,MR 943997计算最近对称半正定矩阵线性代数应用。 103 (1988), 103--118,

解决方案之一是以下形式, 其中是单位矩阵,

Aopt=S+|λ|I
IλS

由于是对称的,你可以用对角化它,得到等价的公式 因此,对于 的任何正特征值,您可以使用将其减去。AA=XDXtS=XWXt

minimizeDW2,s.to W0.
diAWii=di

我怀疑答案可能是绝对值的最大负特征值,其中相同的矩阵,但负特征值被置零,并且的正特征值减少到最多与.|λ|ASAAS|λ|