假设我有半正定矩阵和,是否有一种有效的方法可以让 X 的最高奇异值输入以下表达式?
我的矩阵是 4k×4k 并且已知是低等级的,排名在 50 到 1000 之间。
我一直在使用 SVD scipy.linalg.svd(scipy.linalg.solve_lyapunov(A, C))
,但它对我的应用程序来说太慢了。
第二个问题是稳定性问题。使用 scipy.linalg 解决给我解决方案,其范数远高于我预期的 1是一个有效的解决方案。由于我对频谱感兴趣,我可能需要一些额外的约束来明确定义这个问题。此外,似乎引入了重大错误(将 X 代入方程并查看范数会给我 2 左右的相对误差)
https://colab.research.google.com/drive/113XQ88puFNNSQHPnO-zoAgm-8w01ANuh#scrollTo=n6OQHQ5jYw53
背景
这些奇异值出现在确定线性最小二乘估计步长长度的问题中,如下所述:https ://arxiv.org/abs/1610.03774
假设我们正在解决线性最小二乘问题通过最小化以下目标来实现维度:
这种损失的Hessian是
而梯度的协方差矩阵
问题是使用随机梯度下降来最小化这种损失。我们可以使步长多大?我们可以证明,当误差与观察结果不相关时,可以采用以下步长,同时仍保持收敛
在哪里是上界
但是,当错误相关时(异方差/错误指定的情况),该比率必须降低到以下
在哪里是错误规范的度量,计算如下
让是以下的解决方案
然后
数据生成过程的特殊性(这些是神经网络生成的特征)意味着位于未知的低维子空间中., 但真正的维度是 50-1000
任务是:
- 计算有效地获得用于 SGD 的步长
- 计算全谱有效地用于可视化目的