码迷,mamicode.com
首页 > 其他好文 > 详细

隐马尔科夫模型

时间:2014-09-01 00:16:02      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   ar   数据   2014   问题   

模型定义

  隐马尔科夫模型定义如下:$$\lambda = (Q,V,A,B,\pi);$$

  I是长度为T的状态序列:$I=(i_1,i_2,...,i_T)$;

  O是对应的观测序列: $O = (o_1,o_2,...,o_t)$;

  其中:

  1) Q为状态的集合:$Q={q_1,q_2,...,q_N}$, N为状态的数量;

  2) V为观测的集合:$V={v1,v2,...,v_M}$,M为观测的数量;

  3) A为状态转移概率矩阵:$A=[a_{(i,j)}]  (1<=i,j <= N)$,$a_{(i,j)}=P(i_{t+1}=q_j|i_t=q_i)$表示在t时刻处于状态$q_i$的条件下t+1时刻转移到$q_j$的概率;

  4) B为观测生成概率矩阵:$B=[b_{(j,k)}] (1<=j <= N, 1<= k <=M)$, $b_{(j,k)}=P(o_t=v_k|i_t=q_j)$表示在t时刻处于状态$q_j$的条件下生成观测$v_k$的概率;

  5) $\pi$是初试概率向量:$\pi =(\pi )  (1<=i <= N)$, $\pi_i=P(i_1=q_i)$表示t=1时处于状态$q_i$的概率。

  只要上述的五个参数确定了一个马尔科夫模型。

假设前提

  隐马尔科夫模型作了两个基本的假设:

  1) 其次马尔科夫假设:任意时刻t的状态只依赖于其前一刻的状态,与观测和其他时刻的状态无关,即:$$P(i_t|t_{t-1},o_{t-1},..,i_1,o_1)=P(i_t|i_{t-1}), t=1,2,..,T;$$

  2) 观测独立性假设: 任意时刻的观测值只依赖于该时刻的状态,与观测和其他时刻的状态无关,即:$$P(o_t|i_t,o_T,..,i_1,o_1)=P(o_t|i_t)$$

  下面是一个例子,希望能通过这个例子理解什么是状态什么是观测,只有把这两个概念理清楚了,才能理解下去,不然真是一团乱麻。

赌场的欺诈(示例)

  某赌场在掷骰子根据点数决定胜负时 , 采取暗中作弊的手段,连续多次使用正常骰子A后,偶尔使用一个灌铅骰子 B,骰子A的6个字码出现的概率是相等的,而骰子B的6个字码出现的概率是不相等,甚至某个字码出现的概率为0,这样在使用骰子B时,老板可以大赚一笔。

  下面是两个骰子的各个字码出现的概率分布:

 字码

骰子A

骰子B

1点

1/6

0

2点

1/6

1/8

3点

1/6

1/8

4点

1/6

3/16

5点

1/6

3/16

6点

1/6

3/8

  另外假设,骰子使用的概率如下:

bubuko.com,布布扣

  再设第一次挣骰子一定使用骰子A,即初始概率向量为:$\pi={1,0}$。

  于是赌场骰子的隐马尔科夫模型如下:

  状态集合:Q={骰子A,骰子B};

  观测集合:V={1,2,3,4,5,6};

  状态转移矩阵:A={{0.9,0.1},

           {0.8,0.2}};

  生成概率矩阵:B={{1/6,1/6,1/6,1/6,1/6,1/6},

           {0,1/8,1/8,3/16,3/16,3/8}};

  可以描述为如下图:

bubuko.com,布布扣

  实际上,状态应该叫隐状态,即状态时不可见的,我们可见的是观测,就好比医生给病人看病,医生不能直接看到病人的内部器官哪里出了毛病,但是看病人的舌头、肤色等能够得到一些观测数据,即通过观察来推测内部状态。上例中状态是骰子的类别,观测是挣骰子得到的字码。

隐马尔科夫模型的三个问题

  1) 概率计算问题: 给定模型$\lambda = (Q,V,A,B,\pi)$和观测序列$O=(o_1,o_2,...,o_T)$,计算在模型$\lambda$下观察序列O出现的概率$P(O|\lambda)$; 比如对于上述示例,骰子挣出的点数序列记录为:124552646214614613613666166466163661636616361651561511514612356234,问这个序列出现的概率为多少?

  2) 学习问题: 已知观测序列$O=(o_1,o_2,...,o_T)$,估计模型$\lambda = (Q,V,A,B,\pi)$的参数,使得该模型下观测序列概率$P(O|\lambda)$最大;比如骰子挣出的点数序列记录为:124552646214614613613666166466163661636616361651561511514612356234,求初始概率向量$\pi$,状态转移矩阵A,观测生成概率矩阵B。

  3) 预测问题(解码问题): 已经模型$\lambda = (Q,V,A,B,\pi)$和观测序列$O=(o_1,o_2,...,o_T)$,求最可能的对应的观测序列。比如骰子挣出的点数序列记录为:124552646214614613613666166466163661636616361651561511514612356234,求哪些点数是用骰子B挣出的?

概率计算问题

  直接计算观测序列的概率计算复杂度很高,可以采用动态规划来加速求解,有两个求解方法:前向算法、后向算法。

前向算法

  根据隐马尔科夫模型的假设,时刻t+1的观测只依赖于t+1时刻的状态,而t+1时刻的状态又只依赖于t时刻的状态,因此从直观上来说,我们就可以先求出观测序列$o_1,o_2,..o_t$的概率,再求$o_1,o_2,..o_t,o_{t+1}$的概率,最终求得$o_1,o_2,..o_T$的概率,即$P(O|\lambda)$。

  定义前向概率:前t时刻部分的为$o_1,o_2,..o_t$且t时刻状态为$q_i$的概率,记为:$$\alpha(t,i)=P(o_1,o_2,...,o_t,i_t=q_i|\lambda)$$

  1) 初始化:$$\alpha(1,i)=\pi_ib(i,o_1), i=1,2,..,N$$

  2) 递推:对T=1,2,...,T-1,$$\alpha(t+1,i)=[\sum_{j=1}^N\alpha(t,j)a(j,i)]b(i,o_{i+1}), i=1,2,...,N$$

  3) 终止:$$P(O|\lambda)=\sum_{i=1}^N\alpha(T,i)$$  

  解释一下递推公式,$\alpha(t+1,i)=P(o_1,o_2,...,o_{t+1},i_t+1=q_i|\lambda)$要求t+1时刻的状态是$q_i$并且观测是$o_{t+1}$,首先t+1时刻的状态$q_i$可能是t时刻的任意一种状态转移过来的,因此对前t时刻的前向概率乘以对应的转移概率并累加,最后乘以$b(i,o_{i+1})$是t+1时状态$q_i$生成观测$o_{i+1}$的概率。

  为了说明计算过程,我们用一个长度为3的观测序列O=(124)来演示前向计算的过程。

后向算法

  前向算法是从前往后递推计算,而后向算法则相反,从后往前计算。

  定义后向概率:在时刻t状态为$q_i$的条件下,从t+1到T时刻部分观测序列为(o_{t+1},o_{t+2},..o_T)的概率,记作:$$\beta(t,i) = P((o_{t+1},o_{t+2},..o_T|i_t=q_i,\lambda);

  1) 初始化:$$\belta(T,i)=1, i=1,2,...,N;

  2) 递推:对t=T-1,T-2,..,1 $$\beta(t,i)=\sum_{j=1}^Na(i,j)b(j,o_{i+1})\beta(t+1,j), i=1,2,..,N$$

  3) 终止:$$P(O|\lambda)=\sum_{i=1}^N\pi_ib(i,o_1)\beta(1,i)$$

    

  

隐马尔科夫模型

标签:style   blog   http   color   使用   ar   数据   2014   问题   

原文地址:http://www.cnblogs.com/fengfenggirl/p/3947702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!