您的位置:首页 > 其它

HMM隐马尔科夫模型

2015-10-12 23:03 211 查看

隐马尔可夫模型

马尔科夫性质描述的是客观世界中可能存在的一类现象,其未来的性质由现在条件决定的程度,关于过去的知识丝毫不影响这种决定性。马尔科夫的概率模型从根本上否定了系统中任意状态与其初始状态之间的因果必然性。

转移矩阵表示一个状态到另一个状态变化的可能性大小。转移矩阵在系统周期中是不变的。

隐藏状态无法直接被观测,通过隐藏状态导致的显性结果来判别。通过混淆矩阵建立隐藏状态和观测结果之间的联系,混淆矩阵就是隐藏状态产生观测结果的概率。
假设观测结果有M个,隐藏状态有N个,那么转移矩阵大小为N*N,混淆矩阵的 大小为N*M。隐藏状态的数目和观测结果的数目是可以不同的。

混淆矩阵的列是隐藏状态,行是观测结果,所以矩阵的每一行概率的和都是1。

初始向量,定义系统初始化时每个状态的概率。

三个基本问题

1.给定HMM求一个观察序列的概率,并选择最合适的HMM。

简单的思路就是找到每一个可能的隐藏状态序列,并且将这些隐藏状态下的观察序列概率相加。

向前算法

 假设一个T-长观察序列是:

     


局部概率
定义t 时刻位于状态j的局部概率为at(j),则有

t
( j )= Pr( 观察状态 | 隐藏状态j ) x Pr(t时刻所有指向j状态的路径)



对于最后的观察状态,其局部概率包括了通过所有可能的路径到达这些状态的概率。对这些最后一列隐藏状态的局部概率求和,就是给定隐马尔科夫模型后的观察序列概率。

计算部分
(1) 计算t=1时的局部概率

t=1时的局部概率等于当前状态的初始概率乘以相关的观察概率:

         


(2)计算t>1时的局部概率



 计算

所需要的路径数目随着观察序列的增加而指数级递增,但是t-1时刻

‘s给出了所有到达此状态的前一路径概率,因此,我们可以通过t-1时刻的局部概率定义t时刻的

‘s,



设长度为T的观察序列O以及一个含有n个隐藏状态的隐马尔科夫模型l=(pi,A,B),算法复杂度如下:

(1)穷举搜索的时间复杂度是2TN^T
(2)前向算法的时间复杂度是N^2T
其中T指的是观察序列长度,N指的是隐藏状态数目。

2.已知HMM,对于一个观测序列给出最可能的隐藏状态序列。

最简单的想法是通过列出所有可能的隐藏状态序列并且计算每个可能相应的观察序列的概率来找到最可能的隐藏状态序列。最可能的隐藏状态序列是使下面这个概率最大的组合:
Pr(观察序列|隐藏状态的组合)
目标就相当于在状态转移矩阵中找到概率最大的状态路径。



Viterbi算法

对于状态网格中的每一个中间及终止状态,都有一个到达该状态的最可能路径,这种路径称为局部最佳路径,局部最佳路径相关联的概率称为局部概率。





(i,t)是t时刻到达状态i的所有序列概率中最大的概率,而局部最佳路径是得到此最大概率的隐藏状态序列。对于每一个可能的i和t值来说,这一类概率(及局部路径)均存在。
在t=T时每一个状态都有一个局部概率和一个局部最佳路径。这样我们就可以通过选择此时刻包含最大局部概率的状态及其相应的局部最佳路径来确定全局最佳路径(最佳隐藏状态序列)。
计算过程:(确定最优的最终状态过程)
(1)计算t=1时刻局部概率
当t=1的时候,到达某状态的最可能路径明显是不存在的;但是,我们使用t=1时的所处状态的初始概率及相应的观察状态k1的观察概率计算局部概率

;即



这个结果是通过初始概率和相应的观察概率相乘得出的。

(2)计算t>1时刻局部概率



计算t时刻到达状态X的最可能的路径;这条到达状态X的路径将通过t-1时刻的状态A,B或C中的某一个。

Pr (到达状态A最可能的路径) .Pr (X | A) . Pr (观察状态 | X)

到达状态X的最可能路径概率是:






第一项是t-1时刻的局部概率,第二项是状态转移概率,第三项是观察概率。

反向指针(计算回溯部分)

通过对每个状态赋予一个反向指针,这个指针指向最优的引发当前状态的前一个时刻的状态。



其中argmax运算符是用来计算使括号中表达式的值最大的索引j的。

这个表达式是通过前一个时间步骤的局部概率

‘s和转移概率计算的,并不包括观察概率(与计算局部概率

‘s本身不同)。因为目标是隐藏状态之间的最优转换,可以忽略掉观察概率。

总结就是,维特比算法对于网格中的每一个单元(cell)都计算一个局部概率,同时包括一个反向指针用来指示最可能的到达该单元的路径。当完成整个计算过程后,首先在终止时刻找到最可能的状态(当t=T时,维特比算法所到达的这些终止状态的局部概率

‘s是按照最优(最可能)的路径到达该状态的概率。因此,选择其中最大的一个,并回溯找出所隐藏的状态路径),然后通过反向指针回溯到t=1时刻,这样回溯路径上的状态序列就是最可能的隐藏状态序列了。

维特比算法基于全局序列做决策,如果在观察序列中出现波动,对于维特比算法的结果也影响不大。

3.根据观测序列生成隐马尔科夫模型,就是确定最合适的(初始向量,转移矩阵,混合矩阵)。

前向-后向算法

HMM模型的参数包括状态转移矩阵、混淆矩阵、初始概率向量。
在许多实际问题中,这些参数都不能直接计算,这就是隐马尔科夫模型中的学习问题。对于给定的观察序列O,还没有精确的方法找到一个最优的隐马尔科夫模型参数(A、B、pi)使P(O|

)最大。向前-向后算法是隐马尔科夫模型的一种近似解决方法,是局部最优的算法。

向前-向后算法首先对于隐马尔科夫模型的参数进行一个初始的评估,通过梯度下降错误程度来修正这些参数。

(1) 初始化: 随机地给定参数 πi, aij,
bj(k),使其满足条件:



(2)EM计算
EM算法的基本思路是:如果隐含变量Y是已知的,随机初始化一组参数θ(0) ,根据后验概率Pr(Y|X;θ)来更新Y的期望E(Y),然后用E(Y)代替Y求出新的模型参数θ(1)。如此迭代直到θ趋于稳定。期望E(Y)就是求时刻ti观察到xi时处于状态si的概率。

向前变量
它表示t时刻满足状态

,且t时刻之前(包括t时刻)满足给定的观测序列

的概率。

令初始值


归纳法计算


最后计算


向后变量
向后变量




它表示在时刻t出现状态

,且t时刻以后的观察序列满足

的概率。

初始值


归纳计算


E-step



M-step



(3)循环计算: i = i+1,
直到πi, aij,
bj(k)收敛。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: