- gmm建模方差使用对角矩阵的前提是假设特征之间相互独立,使用full或者block-diagonal矩阵可以对相关性的特征建模,但是参数增多。为了解决使用这个问题,有两种方法:
- feature-space 使用DCT或者LDA去相关
- model-space 不同的模型可以使用不同的转换,更灵活
- semi-tied covariance matrices(STC)是model-space里面的一种形式,也是为了解决使用full covariance的参数量大的问题。相比于full covariance,这种方法的每个高斯分量有两个方差矩阵:
- LDA:
- 线性判别分析,是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。
- LDA的核心思想为投影后类内方差最小,类间的方差最大。简单来说就是同类的数据集聚集的紧一点,不同类的离得远一点
- LDA算法流程:
- MLLT:
- 最大似然线性变换
- 是一个平方特征变换矩阵,用于建模方差,解决full convariance的参数量大的问题。
- 相比于full convariance,该方法的每个高斯分量有两个方差矩阵:
- kaldi中的train_lda_mllt.sh:
- 主要功能:MFCC→CMVN→Splice→LDA→MLLT→final.matMFCC→CMVN→Splice→LDA→MLLT→final.mat ,然后训练GMM。
- 该程序的执行流程为:
- 计算类内散度矩阵:
- 类内散度矩阵:为了最小化类内的可变性,类内分散。
- 计算:
协方差矩阵计算:从每个观测值中减去平均值,然后用矩阵的转置执行矩阵乘法后计算平均值。
- 计算类间散度矩阵:
- 增加类间差异,类间分散。
- 计算(不同类均值相减并乘上转置):
- 计算类内散度矩阵: