Jensen-Bregman LogDet分歧

时间:2015-05-13 18:54:39

标签: algorithm matlab math

嗨,我只是想知道编写一个matlab代码的方法,解释如何实现Jensen-Bregman LogDet的分离,如果有一个文档解释他的数学,我只是有问题实现它,我会非常感激

1 个答案:

答案 0 :(得分:0)

据我所知,(两个对称正定矩阵的函数)是

JL(X,Y) = log( det( (X+Y)/2)) - log( det( X*Y))/2
        = log( det( (X+Y)/2)) - (log(det(X)) + log(det(Y)))/2

我认为这样做的方法是计算X,Y和(X + Y)/ 2的cholesky因子,即找到下三角矩阵L,M,N,以便

X = L*L'
Y = M*M'
(X+Y)/2 = N*N'

(我很遗憾地说我不懂matlab,但肯定会有计算cholesky因子分解的函数)。

然后,使用决定因素和日志的属性

JL(X,Y) = 2*log( det(N)) - log( det(L)) - log(det(M)))

对于下三角矩阵K,我们有

log( det( K)) = log ( Prod( K[i,i], i=1..n))
              = Sum ( log( K[i,i]), i=1..n))

我认为使用第二种形式可能更好,即使速度较慢,因为如果矩阵很大,产品可能存在下溢的风险,也许最好的办法是计算< / p>

JL(X,Y) = Sum ( 2*log( N[i,i]) - log( L[i,i]) - log( M[i,i]), i=1..n)
        = Sum( log( N[i,i]*N[i,i] / (L[i,i]*M[i,i])), i=1..n)

注意,所有这些都假定可以计算cholesky factorisations,即矩阵X和Y严格为正定,但是函数JL仅在那种情况下定义。