隐马尔可夫模型
马尔科夫性质描述的是客观世界中可能存在的一类现象,其未来的性质由现在条件决定的程度,关于过去的知识丝毫不影响这种决定性。马尔科夫的概率模型从根本上否定了系统中任意状态与其初始状态之间的因果必然性。
转移矩阵表示一个状态到另一个状态变化的可能性大小。转移矩阵在系统周期中是不变的。
隐藏状态无法直接被观测,通过隐藏状态导致的显性结果来判别。通过混淆矩阵建立隐藏状态和观测结果之间的联系,混淆矩阵就是隐藏状态产生观测结果的概率。
假设观测结果有M个,隐藏状态有N个,那么转移矩阵大小为N*N,混淆矩阵的 大小为N*M。隐藏状态的数目和观测结果的数目是可以不同的。
混淆矩阵的列是隐藏状态,行是观测结果,所以矩阵的每一行概率的和都是1。
初始向量,定义系统初始化时每个状态的概率。
三个基本问题
1.给定HMM求一个观察序列的概率,并选择最合适的HMM。
简单的思路就是找到每一个可能的隐藏状态序列,并且将这些隐藏状态下的观察序列概率相加。
向前算法
假设一个T-长观察序列是:
![t-long 序列](https://i-blog.csdnimg.cn/blog_migrate/3dca9f89a75167c9221781a6a071cab2.gif)
局部概率
定义t 时刻位于状态j的局部概率为at(j),则有
t ( j )= Pr( 观察状态 | 隐藏状态j ) x Pr(t时刻所有指向j状态的路径)
![alpha](https://i-blog.csdnimg.cn/blog_migrate/520fcae09f62a5ec02b2561019a99d0d.gif)
![paths.to.cloudy](https://i-blog.csdnimg.cn/blog_migrate/4c497ecc8902ceff3c30726e770d5634.gif)
对于最后的观察状态,其局部概率包括了通过所有可能的路径到达这些状态的概率。对这些最后一列隐藏状态的局部概率求和,就是给定隐马尔科夫模型后的观察序列概率。
计算部分
(1) 计算t=1时的局部概率
t=1时的局部概率等于当前状态的初始概率乘以相关的观察概率:
![5.2_2](https://i-blog.csdnimg.cn/blog_migrate/d9c823bf295b73cc9aa652a84340d819.gif)
(2)计算t>1时的局部概率
![allpath](https://i-blog.csdnimg.cn/blog_migrate/53e15a24b1ca31a87852b02b86d811fc.gif)
计算
所需要的路径数目随着观察序列的增加而指数级递增,但是t-1时刻
‘s给出了所有到达此状态的前一路径概率,因此,我们可以通过t-1时刻的局部概率定义t时刻的
‘s,
![alpha](https://i-blog.csdnimg.cn/blog_migrate/520fcae09f62a5ec02b2561019a99d0d.gif)
![alpha](https://i-blog.csdnimg.cn/blog_migrate/520fcae09f62a5ec02b2561019a99d0d.gif)
![alpha](https://i-blog.csdnimg.cn/blog_migrate/520fcae09f62a5ec02b2561019a99d0d.gif)
![5.1.2.3_1](https://i-blog.csdnimg.cn/blog_migrate/542bba07423d37b62a4f16d80b00491d.gif)
设长度为T的观察序列O以及一个含有n个隐藏状态的隐马尔科夫模型l=(pi,A,B),算法复杂度如下:
(1)穷举搜索的时间复杂度是2TN^T
(2)前向算法的时间复杂度是N^2T
其中T指的是观察序列长度,N指的是隐藏状态数目。