`

隐马尔科夫模型HMM自学 (2)

 
阅读更多

 

HMM 定义

崔晓源 翻译

HMM是一个三元组 (P,A,B).

P : the vector of the initial state probabilities;

A : the state transition matrix;

B : the confusion matrix;

这其中,所有的状态转移概率和混淆概率在整个系统中都是一成不变的。这也是HMM中最不切实际的假设。

HMM的应用

有三个主要的应用:前两个是模式识别后一个作为参数估计

(1) 评估

根据已知的HMM找出一个观察序列的概率。

这类问题是假设我们有一系列的HMM模型,来描述不同的系统(比如夏天的天气变化规律和冬天的天气变化规律),我们想知道哪个系统生成观察状态序列的概率最大。反过来说,把不同季节的天气系统应用到一个给定的观察状态序列上,得到概率最大的哪个系统所对应的季节就是最有可能出现的季节。(也就是根据观察状态序列,如何判断季节)。在语音识别中也有同样的应用。

我们会用forward algorithm算法来得到观察状态序列对应于一个HMM的概率。

(2) 解码

根据观察序列找到最有可能出现的隐状态序列

回想水藻和天气的例子,一个盲人隐士只能通过感受水藻的状态来判断天气状况,这就显得尤为重要。我们使用viterbi algorithm来解决这类问题。

viterbi算法也被广泛的应用在自然语言处理领域。比如词性标注。字面上的文字信息就是观察状态,而词性就是隐状态。通过HMM我们就可以找到一句话上下文中最有可能出现的句法结构。

(3) 学习

从观察序列中得出HMM

这是最难的HMM应用。也就是根据观察序列和其代表的隐状态,生成一个三元组HMM (P,A,B)。使这个三元组能够最好的描述我们所见的一个现象规律。

我们用forward-backward algorithm来解决在现实中经常出现的问题--转移矩阵和混淆矩阵不能直接得到的情况。

总结 HMM可以解决的三类问题

  1. Matching the most likely system to a sequence of observations -evaluation, solved using the forward algorithm;

     

  2. determining the hidden sequence most likely to have generated a sequence of observations - decoding, solved using the Viterbi algorithm;

     

  3. determining the model parameters most likely to have generated a sequence of observations - learning, solved using the forward-backward algorithm.
 
 

4-1)Forward Algorithm

找到观察序列的概率

崔晓源 翻译

Finding the probability of an observed sequence

1、穷举搜索方法

对于水藻和天气的关系,我们可以用穷举搜索方法的到下面的状态转移图(trellis):

图中,每一列于相邻列的连线由状态转移概率决定,而观察状态和每一列的隐状态则由混淆矩阵决定。如果用穷举的方法的到某一观察状态序列的概率,就要求所有可能的天气状态序列下的概率之和,这个trellis中共有3*3=27个可能的序列。

Pr(dry,damp,soggy | HMM) = Pr(dry,damp,soggy | sunny,sunny,sunny) + Pr(dry,damp,soggy | sunny,sunny ,cloudy) + Pr(dry,damp,soggy | sunny,sunny ,rainy) + . . . . Pr(dry,damp,soggy | rainy,rainy ,rainy)

可见计算复杂度是很大,特别是当状态空间很大,观察序列很长时。我们可以利用概率的时间不变性解决复杂度。
 
2、采用递归方法降低复杂度
我们采用递归的方式计算观察序列的概率,首先定义部分概率为到达trellis中某一中间状态的概率。在后面的文章里,我们把长度为T的观察状态序列表示为:
Y{k{1}}, Y{k{2}}, .... , Y{k{T}}
 
2a. Partial probabilities, (a‘s)
在计算trellis中某一中间状态的概率时,用所有可能到达该状态的路径之和表示。
比如在t=2时间,状态为cloudy的概率可以用下面的路径计算:
at ( j ) 表示在时间t时 状态j的部分概率。计算方法如下:
at ( j )= Pr( observation | hidden state is j )* Pr(all paths to state j at time t)
最后的观察状态的部分概率表示,这些状态所经过的所有可能路径的概率。比如:
这表示最后的部分概率的和即为trellis中所有可能路径的和,也就是当前HMM下观察序列的概率。
Section 3 会给出一个动态效果介绍如何计算概率。
 
2b.计算初始状态的部分概率
我们计算部分概率的公式为:
at ( j )= Pr( observation | hidden state is j ) x Pr(all paths to state j at time t)
但是在初始状态,没有路径到达这些状态。那么我们就用probability乘以associated observation probability计算:
formula
这样初始时刻的状态的部分概率就只与其自身的概率和该时刻观察状态的概率有关。

隐马尔科夫模型HMM自学 (4-2)Forward Algorithm

崔晓源 翻译

书接上文,前一话我们讲到了Forward Algorithm中初始状态的部分概率的计算方法。这次我们继续介绍。

2c.如何计算t>1时刻的部分概率

回忆一下我们如何计算部分概率:

at ( j )= Pr( observation | hidden state is j )* Pr(all paths to state j at time t)

我们可知(通过递归)乘积中第一项是可用的。那么如何得到Pr(all paths to state j at time t) 呢?

为了计算到达一个状态的所有路径的概率,就等于每一个到达这个状态的路径之和:

随着序列数的增长,所要计算的路径数呈指数增长。但是在t时刻我们已经计算出所有到达某一状态的部分概率,因此在计算t+1时刻的某一状态的部分概率时只和t时刻有关。
[Formula]
这个式子的含义就是恰当的观察概率(状态j下,时刻t+1所真正看到的观察状态的概率)乘以此时所有到达该状态的概率和(前一时刻所有状态的概率与相应的转移概率的积)。因此,我们说在计算t+1时刻的概率时,只用到了t时刻的概率。这样我们就可以计算出整个观察序列的概率。
 
2d.复杂度比较
对于观察序列长度T,穷举法的复杂度为T的指数级;而Forward Algorithm的复杂度为T的线性。
=======================================================
最后我们给出Forward Algorithm的完整定义
We use the forward algorithm to calculate the probability of a T long observation sequence;

[Formula]

where each of the y is one of the observable set. Intermediate probabilities (a‘s) are calculated recursively by first calculatingafor all states at t=1.

[Formula]

Then for each time step, t = 2, ..., T, the partial probabilityais calculated for each state; [Formula]

that is, the product of the appropriate observation probability and the sum over all possible routes to that state, exploiting recursion by knowing these values already for the previous time step. Finally the sum of all partial probabilities gives the probability of the observation, given the HMM,l. [Formula]=======================================================

我们还用天气的例子来说明如何计算t=2时刻,状态CLOUDY的部分概率
怎么样?看到这里豁然开朗了吧。要是还不明白,我就.....................还有办法,看个动画效果:
参数定义:
最后记住我们使用这个算法的目的(没有应用任何算法都是垃圾),从若干个HMM模型中选出一个最能够体现给定的观察状态序列的模型(概率最大的那个)。
 
Forward Algorithm (Done)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics