HMM模型的5元组
每个模型都有自己相关的概念,弄清算法之前我们先来看看这个模型的基本概念,5元组。
(S,K,π,A,B):以上分别对应了HMM中的5个重要概念
S:隐藏状态的集合(Sun Cloud Rain),N为隐状态个数 N=3
K : 输出状态或者说观测状态的集合(Soggy Damp Dryish Dry),M为观测状态个数M=4
π : 对应隐藏状态的初始化概率 (sun : 0.5 cloud : 0.3 rain : 0.2)
A : 隐藏状态的状态转移概率,是一个
N
∗
N
N*N
N∗N的概率矩阵
B : 隐藏状态到观测状态的混淆矩阵,是一个
N
∗
M
N*M
N∗M的发射概率矩阵
另外符号体系中会有对于每个序列的状态序列和观测序列,如一周的观测和状态,定义下
X : 某特定观测序列
O : 某特定隐藏状态序列
仍然是盗的图,方便大家看一下,和我上面写的基本一致。来自《统计学自然语言处理》
HMM中的3个经典问题
关于HMM这个模型建立起来之后,其实有很多问题可以去讨论,但是一般讲学中我们讨论3个问题,即评估,预测,学习,下面我们来一起看一波吧~
这里为了解释方便,请大家无条件的接受以下两个基础条件:
- 已知对应问题的观测状态集合K
- 已知对应问题的隐藏状态集合S
如果没有以上两个问题,可能就不太属于今天要讨论的范畴了,可能属于聚类后者其他研究,总之这里我们不予考虑。
3个经典问题如下:
- 观察序列概率的计算评估(前向算法)
- 隐藏状态序列最大概率解预测(维特比算法)
- 马尔科夫参数求解(π,A,B)学习(EM算法前后向算法)
How - HMM模型中的3个经典问题
评估
评估描述
给定观测序列O(o1,o2,…,oT)和模型u = (π,A,B),求出P(O | u), 即给定模型下观测序列的概率是多少?对应于之前的例子,就是给定天气的转移矩阵,天气和苔藓的发射矩阵,以及天气的初始化列表(这些都是已知的,以前统计好的,具体方法这里不用纠结)。然后求出给定一周苔藓的状态,你判断这个状态存在的概率有多大(这个评估这里只是介绍方法,想想感觉这个案例这里没有什么特别大的实际意义)。
评估理论推导
解决该问题有个很直观的想法就是把所有的隐藏状态都走一遍,然后看对应观测状态概率有多大,一起加起来就是这个状态的可能性。我们用数学式子表示如下:
自己写公式还是很费力的,第二个公式中
b
X
T
X
T
+
1
O
T
b_{XTXT+1OT}
bXTXT+1OT这种写法是因为有些HMM模型的发射概率是在发射弧上面,即和该状态与下状态有关,所以写成这种样子,有时候如果只与当前状态有关可以写成
b
t
O
t
b_{tOt}
btOt的形式。
第一个公式:利用全概率公式求解所有可能隐状态序列下的概率之和。
第二个公式:已知状态下序列的概率。
第三个公式:任意隐藏序列的概率。
第四个公式:利用每个概率表示公式1,这里
b
X
t
O
t
b_{XtOt}
bXtOt表示了发射只与当前状态有关,与2略不同,只是多了一个假设条件便于表示。另外此处说明下由于序列长度不同,该公式可能与其他某些书中公式有点差异,但基本思想一致,只不过具体表现上针对不同情况略有不同。最后一个
b
X
T
O
T
b_{XTOT}
bXTOT是在连乘之后的,不在求积符号里面!
好了,公式也推到了,写写代码就能跑了(完结撒花~)!
其实并没有进度条君命还长呢,我们仔细看看上面公式,计算一下时间复杂度。一共N^T次方的可能序列,好了打住,不用往后看了,这已经指数级别了。我们可以看到计算公式里面实际是由大量冗余乘法计算的,现在给大家介绍动态规划的前向算法来巧妙的解决实际计算问题。