如何训练高斯混合隐马尔可夫模型?

机器算法验证 隐马尔可夫模型 高斯混合分布 火车
2022-04-11 08:06:17

我想建立一个隐马尔可夫模型(HMM),其中连续观察被建模为高斯混合(高斯混合模型= GMM)。

我理解培训过程的方式是应该进行。2

1)首先使用期望最大化(EM)训练 GMM 参数。

2)使用EM训练HMM参数。

这个培训过程是正确的还是我遗漏了什么?

4个回答

在底部的参考资料中,我看到培训涉及以下内容:

  1. 初始化 HMM 和 GMM 参数(随机或使用先验假设)。

    然后重复以下操作,直到满足收敛条件:

  2. 进行前向传递和后向传递以找到与训练序列和 GMM-HMM 的参数相关的概率。

  3. 重新计算 HMM 和 GMM 参数——每个状态下每个混合分量的平均值、协方差和混合系数,以及状态之间的转移概率——所有这些都是使用步骤 1 中找到的概率计算的。

爱丁堡大学 GMM-HMM 幻灯片(谷歌:隐马尔可夫模型和高斯混合模型,或试试这个链接)。该参考资料提供了很多细节,并建议在对数域中进行这些计算。

这篇论文 [1] 是绝对经典的,它为您提供了用于高斯混合的整个 HMM 机器。我认为 Rabiner 在 1980 年代使用 GMM 迈出了语音识别的第一个重要步骤是公平的。

[1] 拉宾纳,LR (1989)。关于隐藏马尔可夫模型和语音识别中的选定应用的教程。IEEE 会议记录,77(2),257-286。

pomegranate 是另一个 python 库,它为 GMM 和 HMM 提供比 hmmlearn 更好的文档。目前我准备从 hmmlearn 转移到它。 http://pomegranate.readthedocs.io/en/latest/GeneralMixtureModel.html

假设您的 HMM 使用高斯混合,对于参数估计,您执行前向和后向传递并更新参数。不同之处在于您需要包含正常的 pdf 混合作为给定状态的观察概率。因此,对于转移概率估计,您可以像离散观察 HMM 一样进行操作,但是要重新估计均值、方差(或多变量情况的协方差矩阵)和混合权重,您需要引入一个新的状态概率公式i 在时间 t 与第 m 个混合分量占 t 处的观察,它是简单的归一化 alpha*beta * 归一化 c*N(o,u,var) alpha 和 beta 是 Baum-Welch 中的前向和后向公式和c = 处于状态 i 时的第 m 个混合权重,o = t 时的观察值,u = 均值或均值向量,var = 方差或协方差矩阵