我曾经在一次采访中被问到这个开放式问题:
您如何找到内存有限的正规方程的解?
与求解具有有限内存的稀疏最小二乘系统不同,矩阵不一定是稀疏的。它可能很稠密。
这个问题是在机器学习/统计上下文中提出的,所以我给出的答案不是精确地解决它(例如,使用 QR),您可以使用随机或批量梯度下降来解决它并获得一个近似解。
在线性代数和科学计算环境中,有没有办法解决内存有限的密集最小二乘系统?
我曾经在一次采访中被问到这个开放式问题:
您如何找到内存有限的正规方程的解?
与求解具有有限内存的稀疏最小二乘系统不同,矩阵不一定是稀疏的。它可能很稠密。
这个问题是在机器学习/统计上下文中提出的,所以我给出的答案不是精确地解决它(例如,使用 QR),您可以使用随机或批量梯度下降来解决它并获得一个近似解。
在线性代数和科学计算环境中,有没有办法解决内存有限的密集最小二乘系统?
这也可能是一个棘手的问题。假设您要求解的正规方程,即。让我们假设提问者的意思是实际上已经存储在内存中,所以我们知道已经有那么多内存可用。我们还假设又高又窄(更具体地说,列比行少)——因为否则求解正规方程。
然后,如果矩阵是密集的,那么也是如此,而且小于,因此在内存中最多以两倍为代价,如果可以存储 ,则可以存储
如果是稀疏的,那么的存储成本可能要高得多,尽管这取决于的稀疏模式。如果是这种情况,那么我们可以用共轭梯度 (CG) 求解正规方程,因为是对称且(希望是)正定矩阵。在 CG 中,您所需要的只是将向量乘以矩阵的能力,这可以通过编写以最少的额外内存来实现,即,您只需要做两个后续的矩阵向量乘积——永远不需要形成乘积矩阵。
所谓的“无矩阵”方法,主要依赖于执行矩阵乘以向量的能力,非常适合 GMRES 等迭代技术。矩阵本身可能在磁盘上,但有选择地检索部分以计算必要的矩阵向量乘积。
在近似技术中:
在产生精确解决方案的技术中: