的奇异值XX在一个_+ XA = CAX+XA=C?

计算科学 线性代数 特征值
2021-12-21 14:10:07

假设我有半正定矩阵AC,是否有一种有效的方法可以让 X 的最高奇异值输入以下表达式?

AX+XA=C

我的矩阵是 4k×4k 并且已知是低等级的,排名在 50 到 1000 之间。

我一直在使用 SVD scipy.linalg.svd(scipy.linalg.solve_lyapunov(A, C)),但它对我的应用程序来说太慢了。

第二个问题是稳定性问题。使用 scipy.linalg 解决AX+XA=2A给我解决方案,其范数远高于我预期的 1I=X是一个有效的解决方案。由于我对频谱感兴趣,我可能需要一些额外的约束来明确定义这个问题。此外,似乎引入了重大错误(将 X 代入方程并查看范数会给我 2 左右的相对误差)

https://colab.research.google.com/drive/113XQ88puFNNSQHPnO-zoAgm-8w01ANuh#scrollTo=n6OQHQ5jYw53

在此处输入图像描述

背景

这些奇异值出现在确定线性最小二乘估计步长长度的问题中,如下所述:https ://arxiv.org/abs/1610.03774

假设我们正在解决线性最小二乘问题d通过最小化以下目标来实现维度:

L(w)=12Exy[yw,x2]
残差定义为
ϵx,y=yw,x

这种损失的Hessian是

H=E[xx]

而梯度的协方差矩阵

Σ=E[ϵxyxx]

问题是使用随机梯度下降来最小化这种损失。我们可以使步长多大?我们可以证明,当误差与观察结果不相关时,可以采用以下步长,同时仍保持收敛

γ=2R2

在哪里R2是上界x2

但是,当错误相关时(异方差/错误指定的情况),该比率必须降低到以下

γ=2ρR2

在哪里1ρd是错误规范的度量,计算如下

X是以下的解决方案

HX+XH=Σ

然后

ρ=dX2tr(X)

数据生成过程的特殊性(这些是神经网络生成的特征)意味着x位于未知的低维子空间中Rd.d[4000,10000], 但真正的维度是 50-1000

任务是:

  1. 计算ρ有效地获得用于 SGD 的步长
  2. 计算全谱X有效地用于可视化目的
2个回答

速度问题可以解决:关于返回的大型和稀疏 Lyapunov 方程的方法有文献XZZT已经是分解形式(因此在 SVD 部分也可以节省大部分工作)。有关两种主要方法,请参见例如https://www.mpi-magdeburg.mpg.de/projects/messhttp://www.dm.unibo.it/~simoncin/software.html

但是,首先,您需要了解多种解决方案的问题。

为了解决奇点问题:您是否考虑过将方程投影到range(A)? A=QA^QT, 和QRd×k具有正交列的高薄矩阵(QTQ=I) 和A^Rk×k非单数的,因此X=QX^QT. 然后你可以将左右两边的方程乘以QTQ, 得到小尺度方程

A^X^+X^A^=C^,
C^=QTCQ. 这将为您提供解决方案range(X)range(A). 不确定这在您的应用程序中是否有意义。

我没有检查,但如果事实证明这与您的秩不足最小二乘法方法相同,我不会感到惊讶。

另外,我猜你已经拥有了所有可用于计算小规模方程的系数的部分,甚至没有形成一个单一的d×d矩阵,仅使用包含向量的数据矩阵的 QRx.