HMM 做训练的 Sigma not positive definite (非正定的)原因及处理办法

来源:互联网 发布:松下plc编程实例 编辑:程序博客网 时间:2024/05/20 00:36
最近使用pmtk3工具,做 HMM with Gaussian Mixture Model 的 fitting 的时候总是报错问题是
Sigma is not positive definite. 
大致搜了下什么是非正定,以及解决办法。


(I)问题出现:四种情况可以出现此问题
1. 输入的 covariance 或者corelation matrix 非正定。例如在最小二乘规划中需要covariance or correlation 一定要正定的。
ML estimation 也需要这个要求。


2. 渐近互变异收矩阵 (asymptotic covariance matrix)。这个错误不是由于covariance matrix,而是a weight matrix to 
be used with asymptotically distribution-free / weighted least squares (ADF/WLS) estimation


3. Sigma 的 estimate


4. other


(II) 什么是非正定
正定矩阵 <=> 矩阵的所有特征值为正
矩阵的正定性和矩阵的determinant有一定的关系。 determinant 是矩阵的标量函数,即求矩阵行列式的值。
一个对称的矩阵,矩阵的正定需要其所有的Principal submatrices 正定。 
如果一个矩阵的determinant 是0, 则这个矩阵就是奇异矩阵 Singular matrix (其实就是对应的行列式值为0,或者n*n矩阵M 的秩 Rank(M)< n).


正定性的重要性在于,在某些运算中需要计算输入矩阵的逆矩阵。 如果矩阵是奇异的,那么在计算他的逆矩阵时候就会使得矩阵除0.
ML estimetion中也需要计算Sigma的逆,因为需要最大化输入matrix和sigma的相似度, 如果Sigma是非正定的,问题就会很大。


(III)为什么矩阵会不正定,怎么办
问题在于为什么输入的矩阵的determinant是0 或者负的。
怎么回避这些问题。


1. 线性相关
如果两个变量线性相关,那么他们的covariance 矩阵将会是非正定的。 解决办法是减少变量的个数,或者做主成分分析。


2. 初始值
初始值时候Sigma矩阵不为正定的矩阵, 确保参数初始正确。可以使用deta * I 矩阵初始化


3. 抽样误差
当数据很少的时候


4.数据读取错误
例如一个空的covariance 矩阵 总是非正定的。


5. other


(IV) HMM with Gaussian Mixture Model 出现问题
主要是因为Sigma 是variable的 covariance 矩阵。 因为我使用word 作为feature,而且只取top的一些word,时间片切分的有点短
感觉可能是因为word之间有些相关性导致问题的出现。而且我输出每轮的sigma发现sigma很多元素为0
使用PCA做了主成分分析 确实效果能好些。


http://www2.gsu.edu/~mkteer/npdmatri.html

原创粉丝点击