2015-05-13 46 views
-5

您好我只是想知道要寫說明如何實現詹森 - 佈雷格曼LogDet divegence一個MATLAB代碼的方式,我只是有問題,來實現它也是,如果有一個文件解釋他的數學,伊利諾伊州如此感謝詹森 - 佈雷格曼LogDet發散

+1

您對Jensen-Bregman LogDet潛水[原文如此]零參考?你怎麼知道它是什麼? – John

+1

您是否理解足夠好的算法來編寫僞代碼? – Cecilia

回答

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的喬列斯基factorisations和(X + Y)/ 2,即找到下三角矩陣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)) 

我想這可能是最好使用第二種形式,即使它是速度較慢,因爲有可能是下溢的風險的產品,如果矩陣很大,也許做的最好的事情是計算

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) 

注意,所有這一切都假定喬列斯基factorisations可以計算,即該矩陣X和Y是嚴格正定的,但隨後的功能JL在這種情況下,只有限定。