隐马尔可夫模型(hidden Markov model,HMM)

----读李航《统计学习方法》总结,所有的概念、公式和例子都是出自这本书。

1、定义

定义:隐马尔可夫模型是关于时序的概念模型,描述由一个隐藏的马尔可夫链随机生成不可观测的【状态随机序列】,再由状态随机序列生成一个观测从而产生【观测随机序列】的过程。

需要了解的概念:

  • 隐马尔可夫模型由初始概率分布状态转移分布以及观测概率分布确定。
  • 所有可能的状态的集合   Q={q_1,q_2,...,q_N} , N是可能的状态数
  • 所有可能的观测的集合   V={v_1,v_2,...,v_M}, M是可能的观测数
  • 长度为T的状态序列        I=(i_1,i2,...,i_T)   , 
  • 对应的观测序列             O=(o_1,o_2,...,o_T)
  • 状态转移概率矩阵A(接下来选择某盒子的概率):   A=[a_{ij}]_{N*N}

        其中  a_{ij}=P(i_{t+1}=q_j|i_t=q_i), i=1,2,...,N; j=1,2,...,N, 是在时刻t处于状态q_i的条件下,在时刻t+1时转移到状态q_j的概率。

  • 观测概率矩阵B(从盒子里拿出某球的概率):        B=[b_j(k)]_{N*N},

        其中  b_j(k)=P(o_t=v_k|i_t=q_j), k=1,2,...,M;j=1,2,...,N, 是在时刻t处于状态q_j

的条件下生成观测v_k的概率。

  • 初始状态概率向量\pi(开始时选择某盒的概率):    \pi = P(i_1=q_i),

        其中i=1,2,...,N,  是在时刻t=1处于状态q_i的概率。

\piA决定状态序列开始时选择每个盒子的概率接下来选择某个盒子的概率决定了盒子的使用序列),B决定观测序列从盒子中拿出某球的概率决定了取出的球的序列),因此,隐马尔可夫模型\lambda用三元符号表示:

\lambda=(A,B,\pi)

隐马尔可夫模型举例:假设有4个盒子,每个盒子里都有红、白两种球,如下表所示:

各盒子中红、白球数
盒子1234
红球数5368
白球数5742

按照下面的方法取球,产生一个球的颜色的观测序列:

  • 开始,从四个盒子中等概率选一个盒子,从这个盒子中随机抽取1个球,记录颜色并放回;
  • 然后,从当前盒子转移到下一个盒子,规则是:如果当前盒子是盒子1,那么下一个盒子是盒子2,;如果当前盒子是盒子2或3,那么分别以概率0.4和0.6转移到左边或右边的盒子;如果当前盒子是盒子4,那么以各0.5的概率停留在盒子4或者转移到盒子3;
  • 确定转移的盒子后,再从这个盒子里随机抽出1个球,记录颜色并放回;
  • 重复5次,得到一个球的颜色的观测序列:

O = (红,红,白,白,红)

在这个过程中,观察者只能观测到球的颜色的序列,观测不到球是从哪个盒子取出的,即观测不到盒子的序列。

        在这个例子中有两个随机序列,一个是盒子的序列(状态序列)(隐藏的),一个是球的颜色的序列(观测序列)(可观测)。接下来可明确以下内容:

        盒子对应状态,所以状态的集合是:

Q = {盒子1,盒子2,盒子3,盒子4},  N = 4

        球的颜色对应观测,观测的集合是:

V = {红,白},  M = 2

        状态序列和观测序列长度T = 5。

        初始概率分布为:

\pi=(0.25,0.25,0.25,0.25)^T

        状态转移概率分布为:

A=\begin{bmatrix} 0& 1& 0& 0& \\ 0.4& 0& 0.6& 0 \\ 0& 0.4& 0& 0.6\\ 0& 0& 0.5& 0.5 & \end{bmatrix}

        观测概率分布为:

B=\begin{bmatrix} 0.5 &0.5 \\ 0.3 &0.7 \\ 0.6& 0.4\\ 0.8& 0.2 \end{bmatrix}

隐马尔可夫模型有三个基本问题:

(1)概率计算问题。给定模型\lambda=(A,B,\pi)和观测序列O=(o_1,o_2,...,o_T),计算在模型\lambda下观测序列O出现的概率(出现此观测序列的概率)。

(2)学习问题。已知观测序列O=(o_1,o_2,...,o_T),估计模型\lambda=(A,B,\pi)参数,使得在该模型下观测序列概率P(O|\lambda)最大。用极大似然估计的方法估计参数(求模型\lambda)。

(3)预测问题。 给定模型\lambda=(A,B,\pi)和观测序列O=(o_1,o_2,...,o_T),求对规定观测序列条件概率P(I|O)最大的状态序列I=(i_1,i2,...,i_T)   。即给定观测序列,求最有可能的对应的状态序列。 

2、概率计算

2.1 前向算法(forward)

前向概率的定义:给定隐马尔可夫模型\lambda,定义到时刻t部分观测序列为o_1,o_2,...,o_t且状态为q_i的概率为前向概率,记作:

\alpha_t(i)=P(o_1,o_2,...,o_t,i_t=q_i|\lambda)

算法:

输入:隐马尔可夫模型\lambda,观测序列O;

输出:观测序列概率P(O|\lambda)

 (1)初值(第1时刻,各盒中取此球的概率)

\alpha_1(i) = \pi_ib_i(o_i),i=1,2,...,N

 (2)递推,对t=1,2,...,T-1,

\alpha_{t+1}(i)=[\sum_{j=1}^{N} {\alpha_t(j)\alpha_{ji}}]b_i(o_{t+1}), i =1,2,...,N

([之前的所有情况下,取此盒的概率] x 此盒中取此球的概率)

 (3)终止

P(O|\lambda)=\sum_{i=1}^{N}{\alpha_T(i)}

 例:盒子和球的模型\lambda=(A,B,\pi),状态集合Q = {1,2,3},观测集合V = {红,白},

A=\begin{bmatrix} 0.5 & 0.2 &0.3 \\ 0.3& 0.5&0.2 \\ 0.2& 0.3& 0.5 \end{bmatrix},A表示转移到下一个盒子概率,如第一行:当前为盒子1,停留在盒子1的概率是0.5,转移到盒子2的概率是0.2,转移到盒子3的概率是0.3;

B=\begin{bmatrix} 0.5 & 0.5\\ 0.4& 0.6\\ 0.7 & 0.3 \end{bmatrix},B表示从盒中取出红球/白球的概率,如第二行:当前为盒子2,从中取出红球的概率为0.4,取出白球的概率为0.6;

\pi=\begin{bmatrix} 0.2\\ 0.4\\ 0.4\\ \end{bmatrix},\pi表示初次选盒子的概率,第一次选盒子时,选盒子1的概率为0.2,选盒子2的概率为0.4,选盒子3的概率为0.4,

设T = 3, O = {红,白,红},用前向算法计算P(O|\lambda)

:(1)计算初值:(t=1时,各盒取出红球(o_1)的概率)

α_t(盒)= π_盒b_盒(o_1)

\alpha_1(1)=\pi_1b_1(o_1)=0.2*0.5=0.10

\alpha_1(2)=\pi_2b_2(o_1)=0.4*0.4=0.16

\alpha_1(3)=\pi_3b_3(o_1)=0.4*0.7=0.28

(2)递推计算:

  • t=2时,各盒取出白球(o_2)的概率

α_t(盒)= [上一个时刻所有情况x转移到此盒的概率 求和]b_盒(o_2)  

\alpha_2(1)=[\sum_{i=1}^{3}{\alpha_1(i)\alpha_{i1}}]b_1(o_2)=(0.1*0.5+0.16*0.3+0.28*0.2)*0.5=0.077

\alpha_2(2)=[\sum_{i=1}^{3}{\alpha_1(i)\alpha_{i2}}]b_2(o_2)=0.184*0.6=0.1104

\alpha_2(3)=[\sum_{i=1}^{3}{\alpha_1(i)\alpha_{i3}}]b_3(o_2)=0.202*0.3=0.0606

  • t=3时,各盒取出红球(o_3)的概率

α_t(盒)= [上一个时刻所有情况x转移到此盒的概率 求和]b_盒(o_3)  

\alpha_3(1)=[\sum_{i=1}^{3}{\alpha_2(i)\alpha_{i1}}]b_1(o_3)=0.04187

\alpha_3(2)=[\sum_{i=1}^{3}{\alpha_2(i)\alpha_{i2}}]b_2(o_3)=0.03551

\alpha_3(3)=[\sum_{i=1}^{3}{\alpha_2(i)\alpha_{i3}}]b_3(o_3)=0.05284

 (3)终止

P(O|\lambda)=\sum_{i=1}^{3}{\alpha_3(i)} = 0.04187+0.03551+0.05284=0.13022

2.2 后向算法(backward)

前向算法是正着从第一个时刻开始算,后向算法是倒着算,从最后一个时刻开始算。

有空再写

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值