基本隐马尔可夫模型,维特比算法

Posted

技术标签:

【中文标题】基本隐马尔可夫模型,维特比算法【英文标题】:Basic Hidden Markov Model, Viterbi algorithm 【发布时间】:2017-03-24 05:50:40 【问题描述】:

我对隐马尔可夫模型相当陌生,我正试图围绕该理论的一个非常基本的部分展开思考。

我想使用 HMM 作为分类器,因此,给定一个时间序列的数据,我有两个类:背景和信号。

如何估算每个类别的排放概率?维特比算法是否需要背景和信号的模板来估计概率(数据|状态)?还是我完全没有抓住重点?

【问题讨论】:

这里简单解释一下:nrecursions.blogspot.com/2018/09/… 【参考方案1】:

Viterbi Algorithm 需要知道 HMM。

HMM 可以用Maximum-Likely-Estimation (MLE) 估计,它被称为Baum–Welch algorithm。

如果您在使用 Viterbi 算法时遇到问题,这里有一个有效的实现 here

【讨论】:

【参考方案2】:

所以我们的隐马尔可夫模型有两种状态,噪声和信号。我们还必须有我们观察到的东西,可以是 1 和 0。基本上,1 是信号,0 是噪声,但是您的信号中混入了一些零,而噪声中混入了一些零。所以你需要知道

Probablity of 0,1 when in the "noise" state 
Probability of 0,1 when in the "signal" state  
Probability of transitioning to "signal" when in the "noise" state. 
Probability of transitioning to "noise" when in the "signal" state.

因此,我们跟踪每个时隙的每个状态的概率,关键是我们到达那里的最有可能的路线(基于转换概率)。然后我们假设时间序列结束时最可能的状态是我们实际的最终状态,并向后追溯。

【讨论】:

【参考方案3】:

要使用 Viterbi 进行分类,您需要已经知道模型参数。 背景和信号是你的两个隐藏状态。有了模型参数和观察到的数据,您想使用 Viterbi 计算最可能的隐藏状态序列。

引用hmmlearn documentation:

HMM 是一种生成概率模型,其中一系列 可观察的 X 变量是由一系列内部隐藏的 状态 Z。隐藏状态不能直接观察到。这 假设隐藏状态之间的转换具有以下形式 (一阶)马尔可夫链。它们可以由开始指定 概率向量 π 和转移概率矩阵 A。 可观测的发射概率可以是任何分布 参数 θ 取决于当前隐藏状态。 HMM 是 完全由 π、A 和 θ 决定

.

HMM 存在三个基本问题:

Given the model parameters and observed data, estimate the optimal sequence of hidden states.
Given the model parameters and observed data, calculate the likelihood of the data.
Given just the observed data, estimate the model parameters.

第一个和第二个问题可以通过动态解决 编程算法称为维特比算法和 Forward-Backward 算法,分别。最后一个可以解决 通过迭代期望最大化(EM)算法,称为 Baum-Welch 算法。

【讨论】:

以上是关于基本隐马尔可夫模型,维特比算法的主要内容,如果未能解决你的问题,请参考以下文章

标注-隐马尔可夫模型HMM的探究

NLP重剑篇之朴素贝叶斯与隐马尔可夫

简单易懂的隐马尔可夫模型(HMM)讲解

ML-13-1隐马尔科夫模型HMM

维特比算法 Viterbi

第五篇:HMM 隐马尔可夫模型