連續型隱馬爾科夫(HMM),EM演算法迭代過程中,出現協方差矩陣非對稱正定的錯誤,使得迭代無法進行下去?

時間 2021-06-03 06:46:51

1樓:Seldon

可能由於計算誤差,協方差矩陣不再保持對稱且正定(Positive definite),此時就不能對協方差矩陣做Cholesky分解。在嵌入式系統運算中常碰到這個問題。

我所知道的乙個解決辦法是:對於乙個非正定的矩陣,可以通過計算其「最近」的對稱正半定(Positive Semi-definite)矩陣,替代原矩陣進行Cholesky分解及之後的運算。操作方法如下[1]:

對於矩陣

SVD分解:

計算:替代 為:

2樓:隨心大將軍

不懂你說的背景,不過:計算pdf總是要分解的,一般都是分解出cholesky因子,然後計算,原因在於第三行有個求矩陣開根號,那個無論如何都需要分解。分解的方法很多,cholesky是常用方法,因為它收到數值誤差的影響較小,而且支援常見的rank 1更新。

關於數值錯誤的問題,兩個方法,一是手動保持矩陣分解之前正定,二是手動保持條件數不會太大。

3樓:王贇 Maigo

迭代過程中,協方差矩陣確實必須保持對稱正定。

如果出現了不對稱正定的錯誤,最常見的情況是資料量不足,導致 GMM 的某個分量只分得乙個資料點,導致該分量的協方差陣為 0。解決方案有:

加大資料量;

減小 GMM 的分量個數;

修改程式,當這種情況發生時,將出問題的分量去掉,繼續訓練。

你的程式中做 Cholesky 分解應該是為了用對角線元素累乘的方法算協方差陣的行列式,似然值用第二行和第三行算是等價的。實際上我覺得沒必要做 Cholesky 分解,Python 裡應該有算矩陣行列式的函式的。

怎麼給中學生介紹隱馬爾科夫鏈?

漂泊日本 可以給他們舉例子。比如舉乙個戒菸的例子。假設今天戒菸的人,明天依舊戒菸的概率是90 還有10 的可能性會復吸。而今天沒忍住已經吸菸的人,明天繼續吸菸的可能性是70 剩下30 的可能性會不吸菸。然後看看這個模型怎麼演化。假設總共有100 個人,第一天戒菸和沒忍住開始吸菸的各佔一半。根據設定的...

如何通俗地解釋馬爾科夫鏈

韋捷 馬爾可夫鏈的定義其實比較簡單,它假設某一時刻狀態轉移的概率只依賴於這個狀態的前乙個狀態。這種情況下,我們只需要求出任意兩個狀態的轉移概率,我們的馬爾可夫鏈模型就出來了。光看上面的定義看不懂的話也正常,這裡面有幾個是概念對理解這個定義是比較關鍵的,分別是狀態 狀態轉移和狀態轉移的概率,怎麼理解它...

在對時間序列進行分類時,隱馬爾科夫模型 人工神經網路和支援向量機這三種模型哪種更合適,為什麼?

Rand Xie 對時間序列做pattern matching,我見過有幾種做法.乙個是直接從時間序列提取特徵 時域,頻域,時頻分析,cepstrum等等 然後對這些特徵進行聚類 分類.或者model based,對每個時間序列辨識arma,arima等模型,對係數進行分析.還有fancy一點的,對...