Matrix 用于机器学习算法训练的并行Cholesky分解

Matrix 用于机器学习算法训练的并行Cholesky分解,matrix,distributed,parallel-processing,linear-algebra,numerical-analysis,Matrix,Distributed,Parallel Processing,Linear Algebra,Numerical Analysis,我正试图弄清楚,我是否可以将机器学习算法的训练方面并行化。训练中计算量大的部分涉及Cholesky分解正定矩阵(协方差矩阵)。我将尝试用矩阵代数的概念来解释这个问题。如果你需要更多信息,请告诉我 假设我们有一个块矩阵(协方差矩阵,但这与问题无关) M=AB B*C 其中A和C与来自两个不同集合的训练数据相关。A和B都是正定的。为了简单起见,我们还假设A和C的大小为nxn 有一个执行块Cholesky分解的公式。看见综上所述,我们得到了以下结果 M = LU M=LU 其中(*表示转置) L=A^

我正试图弄清楚,我是否可以将机器学习算法的训练方面并行化。训练中计算量大的部分涉及Cholesky分解正定矩阵(协方差矩阵)。我将尝试用矩阵代数的概念来解释这个问题。如果你需要更多信息,请告诉我

假设我们有一个块矩阵(协方差矩阵,但这与问题无关)

M=AB B*C 其中A和C与来自两个不同集合的训练数据相关。A和B都是正定的。为了简单起见,我们还假设A和C的大小为nxn

有一个执行块Cholesky分解的公式。看见综上所述,我们得到了以下结果

M = LU M=LU 其中(*表示转置)

L=A^{1/2}0 B*A^{-*/2}Q^{1/2} 在哪里

Q = C - B*A^{-1}B Q=C-B*A^{-1}B 现在让我们假设已经进行了与矩阵A和C相关的训练,因此我们对A和C进行了cholesky分解,给出了A^{1/2},和C^{1/2}(因此,使用正向替换计算逆A^{-1/2},和C^{-1/2}是很简单的)

用我们现在得到的这些量重写Q

Q = Q^{1/2} Q^{*/2} = C^{1/2} C^{*/2} - B* A^{-*/2}A^{-1/2} B Q=Q^{1/2}Q^{*/2}=C^{1/2}C^{*/2}-B*A^{-*/2}A^{-1/2}B 我的问题是:考虑到这种设置,是否可以用代数方法计算Q^{1/2},而不必对Q应用cholesky分解。或者换句话说,我可以使用C^{1/2}来帮助我计算Q^{1/2}。如果这是可能的,那么就有可能轻松地将培训并行化

提前感谢您的回复。对不起,矩阵排版。有没有什么合理的方法来排版数学或矩阵呢


马特。

我想我已经找到了一个答案,尽管它并不完全如我所希望的那样

除去机器学习环境,我的问题归结为知道C^{1/2}是否有助于Q^{-1/2}的计算。我将在下面更详细地介绍,但为了避免追问,答案是肯定的,但只涉及稳定性而不是计算(目前无法证明这是事实,但相当确定)

对于为什么答案是肯定的,对于稳定性,我们看一下原始问题中的定义Q,重新排列如下

Q=C-B*A^{-1}B=(C^{1/2}+B*A^{-*/2})(C^{1/2}-B*A^{-*/2})*

通过事先知道C^{1/2},我们可以计算Q而不必直接求逆A。直接反演在数值上不稳定

遗憾的是,尽管我在这个问题上做了大量的研究,但是$C^{1/2}$似乎没有帮助wrt计算精确计算Q^{-1/2}。最好的方法似乎是如上所述使用C^{1/2}计算Q,然后使用Cholesky将Q分解为Q^{1/2},然后使用前向替换计算Q^{-1/2}

进一步研究 我没有详细研究的一个领域是,是否可以使用C^{1/2}来近似Q^{-1/2}。以C ^{1/2}为起点的迭代方法。我不知道有任何这样的迭代近似过程,但我会继续搜索。我甚至可以以此为重点开始一个新问题


如果我有任何重大突破,我会告诉你们的。

我想我已经找到了答案,尽管这并不是我所希望的

除去机器学习环境,我的问题归结为知道C^{1/2}是否有助于Q^{-1/2}的计算。我将在下面更详细地介绍,但为了避免追问,答案是肯定的,但只涉及稳定性而不是计算(目前无法证明这是事实,但相当确定)

对于为什么答案是肯定的,对于稳定性,我们看一下原始问题中的定义Q,重新排列如下

Q=C-B*A^{-1}B=(C^{1/2}+B*A^{-*/2})(C^{1/2}-B*A^{-*/2})*

通过事先知道C^{1/2},我们可以计算Q而不必直接求逆A。直接反演在数值上不稳定

遗憾的是,尽管我在这个问题上做了大量的研究,但是$C^{1/2}$似乎没有帮助wrt计算精确计算Q^{-1/2}。最好的方法似乎是如上所述使用C^{1/2}计算Q,然后使用Cholesky将Q分解为Q^{1/2},然后使用前向替换计算Q^{-1/2}

进一步研究 我没有详细研究的一个领域是,是否可以使用C^{1/2}来近似Q^{-1/2}。以C ^{1/2}为起点的迭代方法。我不知道有任何这样的迭代近似过程,但我会继续搜索。我甚至可以以此为重点开始一个新问题


如果我有任何重大突破,我会告诉你们所有人。

你可以通过一系列cholesky的停工期来做到这一点:

(以下我使用“转置”以避免与乘法混淆)

如果A的cholesky因子是A,C的cholesky因子是C,那么方程 因为Q可以写

Q=c*c'-beta'*beta 式中,β=逆(a)B(即求解β的abeta=B)

如果我们为beta的第i列写b[i],那么

Q=c*c'-和b[i]*b[i]'

求矩阵的cholesky分解

cc'-xx'(其中x是向量,c是下三角形)


被称为1级cholesky下降期。在

中有一个稳定的算法,您可以通过一系列的cholesky停工期来实现这一点:

(以下我使用“转置”以避免与乘法混淆)

如果A的cholesky因子是A,C的cholesky因子是C,那么方程 因为Q可以写

Q=c*c'-beta'*beta 式中,β=逆(a)B(即求解β的abeta=B)

如果我们为beta的第i列写b[i],那么

Q=c*c'-和b[i]*b[i]'

求矩阵的cholesky分解

cc'-xx'(其中x Q = C - B*A^{-1}B Q = Q^{1/2} Q^{*/2} = C^{1/2} C^{*/2} - B* A^{-*/2}A^{-1/2} B