1. 隐马尔可夫模型
隐马尔可夫模型(Hidden Markov Model)是比较经典的机器学习模型,它在语言识别、自然语言处理、模式识别等领域得到广泛的应用。
1.1 什么样的问题需要HMM模型
使用HMM模型时我们的问题一般有这两个特征:
1)我们的问题是基于序列的,比如时间序列,或者状态序列。
2)我们的问题中有两类数据,一类序列数据是可以观测到的,即观测数据;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。
有了这两个特征,那么这个问题一般可以用HMM模型来尝试解决。这样的问题在实际生活中是很多的。比如:我现在在打字写博客,我在键盘上敲出来的一系列字符就是观测序列,而我实际想写的一段话就是隐藏序列,输入法的任务就是从敲入的一系列字符尽可能的猜测我要写的一段话,并把最可能的词语放在最前面让我选择,这就可以看作一个HMM模型了。再举一个,我在和你说话,我发出的一串连续的声音就是观测序列,而我实际要表达的一段话就是状态序列,你大脑的任务,就是从这一串连续的声音中判断出我最可能要表达的话的内容。
1.2 HMM模型的数学定义
对于HMM模型,首先我们假设Q是所有可能的隐藏状态的集合,V是所有可能的观察状态的集合,即
其中,N是可能的隐藏状态数,M是所有可能的观察状态数。
每一个数据就对应一个状态,一个序列的数据就对应一个状态序列。
对于一个长度为T的序列,I是对应的状态序列,O是对应的观察序列,即
1)齐次马尔可夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态。当然这样假设有点极端,因为很多时候我们的某一个隐藏状态不仅仅只依赖与前一个隐藏状态,可能是前两个或者前三个。但是这样假设的好处就是模型简单,便于求解。如果在时刻 t 的隐藏状态是 it = qi,在时刻 t +1 的隐藏状态是 it+1 =qj ,则从 t 到 t+1 的HMM状态转移概率 aij 可以表示为
这样 aij 就可以组成马尔可夫链的状态转移矩阵 A
2)观测独立性假设。即任意时刻的观察状态仅仅依赖于当前时刻的隐藏状态,这也是一个为了简化模型的假设。如果在时刻 t 的隐藏状态是 it = qj ,而对应的观察状态为 ot = vk,则该时刻观察状态 vk 在隐藏状态下生成的概率 bj(k) 满足:
这样 bj(k) 可以组成观测状态生成的概率矩阵 B
除此之外,我们需要一组在时刻 t = 1 的隐藏状态概率分布
∏
\displaystyle\prod
∏
一个HMM模型,可以由隐藏状态序列初始概率分布
∏
\prod
∏,主管你太转移概率矩阵
A
A
A和观测状态概率矩阵
B
B
B决定。
∏
\prod
∏,
A
A
A决定状态序列,
B
B
B决定观测序列/因此,HMM模型可以由一个三元组
λ
\lambda
λ表示如下:
λ
\lambda
λ = (
A
A
A,
B
B
B,
∏
\prod
∏)
1.3 一个HMM模型实例
假设我们有3个盒子,每个盒子里都有红色和白色两种球,这三个盒子里球的数量分别是:
按照下面的方法从盒子里抽球,开始的时候,从第一个盒子抽球的概率是0.2,从第二个盒子抽球的概率是0.4,从第三个盒子抽球的概率是0.4.以这个概率抽一次球后,将球放回。然后从当前盒子转移到下一个盒子进行抽球。
规则是:如果当前抽球的盒子是第一个盒子,则以0.5的概率仍然留在第一个盒子继续抽球,以0.2的概率去第二个盒子抽球,以0.3的概率去第三个盒子抽球。如果当前抽球的盒子是第二个盒子,则以0.5的概率仍然留在第二个盒子继续抽球,以0.3的概率去第一个盒子抽球,以0.2的概率去第三个盒子抽球。如果当前抽球的盒子是第三个盒子,则以0.5的概率仍然留在第三个盒子继续抽球,以0.2的概率去第一个盒子抽球,以0.3的概率去第二个盒子抽球。如此下去,直到重复三次,得到一个球的颜色的观察序列:
O = {红,白,红}
注意在这个序列中,观察者只能看到球的颜色序列,却不能看到球是从哪个盒子里取出的。
那么按照我们之前HMM模型的定义,我们的观察集合是:
V={红,白},M=2
我们的状态集合是:
Q={盒子1,盒子2,盒子3},N=3
而观察序列和状态序列的长度为3.
初始状态分布为:
∏
\prod
∏=
(
0.2
,
0.4
,
0.4
)
T
(0.2,0.4,0.4)^{T}
(0.2,0.4,0.4)T