如果我可以并行化机器学习算法的训练方面,我正在努力解决这个问题。计算昂贵的训练部分涉及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}。如果这是可能的话,那么就可以轻松地将培训并行化。
提前感谢您的回复。抱歉矩阵排版。有没有什么方法可以特别排版数学或矩阵?
太
答案 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}作为起点的迭代方法的一些东西。我不知道任何这样的迭代近似过程,但我会继续搜索。我甚至可以以此为焦点开始一个新的问题。
如果我有任何重大突破,我会及时通知你。