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

时间:2010-07-01 22:34:45

标签: matrix distributed parallel-processing linear-algebra numerical-analysis

如果我可以并行化机器学习算法的训练方面,我正在努力解决这个问题。计算昂贵的训练部分涉及Cholesky分解正定矩阵(协方差矩阵)。我将尝试纯粹根据矩阵代数构造问题。如果您需要更多信息,请与我们联系。

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

 
M = A  B  
    B* C

其中A和C涉及来自两个不同集的训练数据。 A和B都是正定的。为简单起见,我们也假设A和C的大小为nxn。

有一个执行块Cholesky分解的公式。见http://en.wikipedia.org/wiki/Block_LU_decomposition。总结我们得到以下结果。

M = LU

其中(*表示转置)

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

其中

Q = C - B*A^{-1}B

现在假设已经执行了与矩阵A和C相关的训练,因此我们对A进行了胆怯分解,C给出了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 ^ {1/2}而无需对Q进行cholesky分解。或者换句话说,我可以使用C ^ {1/2}来帮助我计算Q ^ {1/2}。如果这是可能的话,那么就可以轻松地将培训并行化。

提前感谢您的回复。抱歉矩阵排版。有没有什么方法可以特别排版数学或矩阵?

2 个答案:

答案 0 :(得分:3)

你可以通过一系列胆怯的下降来做到这一点:

(下面我使用'用于转置以避免与乘法混淆)

如果A的胆甾醇因子是a,而C是c,那么等式 对于Q可以写

Q = c * c' - beta'* beta 其中beta = inverse(a) B(即求解 beta = B for beta)

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

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

找到

的胆汁分解

c c' - x x'(其中x是向量,c是低三角形)

被称为排名第1的cholesky downdate。在Golub and van Loan

中有一个稳定的算法

答案 1 :(得分:1)

我想我已经得到了答案,虽然这并不像我希望的那样。

删除机器学习环境,我的问题归结为知道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},我们可以在不必直接反转A的情况下计算Q.直接反演在数值上不稳定。

遗憾的是,虽然我已经对这个问题进行了大量的研究,但似乎没有$ C ^ {1/2} $帮助计算Q ^ { - 1/2}的精确计算。最好的方法似乎是使用如上所述的C ^ {1/2}计算Q,然后使用Cholesky将Q分解为Q ^ {1/2},然后转发替换以计算Q ^ { - 1/2}。 / p>

进一步研究

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

如果我有任何重大突破,我会及时通知你。