隐马尔可夫模型(Hidden Markov Model)

隐马尔可夫模型(HMM)

简述一下HMM:(参考资料:《统计学习方法》-李航)

隐马尔可夫模型(Hidden Markov Model,HMM)描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型

HMM是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列(状态序列),再由各个状态生成一个观测而产生的观测随机序列(观测序列)的过程。

一堆拗口的术语?下边慢慢道来…

马尔可夫过程

马尔可夫过程指的是:假设一个随机过程中,t+1t+1t+1时刻的状态it+1i_{t+1}it+1的条件分布,仅仅与其前一个状态iti_{t}it有关,即:
p(it+1∣i1,i2,...,it)=p(it+1∣it) p(i_{t+1}|i_1, i_2, ..., i_t) = p(i_{t+1}|i_t) p(it+1i1,i2,...,it)=p(it+1it)

隐马尔可夫模型是由马尔可夫链生成随机不可观测的随机状态序列,再由各个状态生成可观测的随机序列:

可以得到上述隐马尔可夫模型的图模型结构,状态序列(不可观测的)为I=i1,i2,...,iTI={i_1, i_2, ..., i_T}I=i1,i2,...,iT,观测序列为O=o1,o2,...,oTO = {o_1, o_2, ..., o_T}O=o1,o2,...,oT

根据上述图,去理解HMM的两个基本假设.


HMM模型的两个基本的假设

齐次马尔可夫假设:假设隐藏的马尔可夫链在任一时刻t的状态只依赖于其前一个时刻的状态:
p(it∣it−1,ot−1,...,i1,o1)=p(it∣it−1),i=1,2,...,T p(i_t|i_{t-1}, o_{t-1},...,i_1, o_1) = p(i_t|i_{t-1}), i=1, 2, ..., T p(itit1,ot1,...,i1,o1)=p(itit1),i=1,2,...,T
上式中的iti_tit表示ttt时刻的状态序列值,oto_tot表示ttt时刻的观测序列值,再强调一遍:该假设就是在说当前时刻序列状态只依赖于上一时刻序列状态。

观测独立性假设:假设任意时刻的观测状态oto_tot只依赖于该时刻的马尔可夫链iti_tit 的状态,与其他的观测状态及状态都无关。

继续上边的符号表达:
p(ot∣iT,oT,iT−1,oT−1,...,it+1,ot+1,....,i1,o1)=p(ot∣it) p(o_t|i_T, o_T, i_{T-1}, o_{T-1},...,i_{t+1}, o_{t+1}, ...., i_1, o_1) = p(o_t|i_t) p(otiT,oT,iT1,oT1,...,it+1,ot+1,....,i1,o1)=p(otit)

生成模型 or 判别模型

1.生成模型:

由生成方法学习到的模型称之为生成模型,生成方法是由数据学习联合分布P(X,Y)P(X, Y)P(X,Y),然后求出条件概率分布P(Y∣X)P(Y|X)P(YX)作为预测的模型:
P(Y∣X)=P(X,Y)P(X) P(Y|X) = \frac{P(X, Y)}{P(X)} P(YX)=P(X)P(X,Y)
典型的生成模型有:朴素贝叶斯法,隐马尔可夫模型,生成对抗网络(GAN),变分自编码器(VAE);

生成模式有两种:确定性和非确定性的。

确定性生成模式:变化规律固定,能够根据当前状态,确定判断出下一状态,如交通红绿灯的变化;

非确定性生成模式:变化相对多样,不能准确确定下一状态,如天气的变化。

2.判别模型:

由判别方法学习到的模型称之为判别模型,判别方法是由数据直接学习决策函数或者条件概率分布P(Y∣X)P(Y|X)P(YX)作为预测的模型。

典型的判别模型有:kkk近邻法,感知机模型,决策树,逻辑回归模型,最大熵模型,支持向量机,提升方法和条件随机场等。

隐藏的马尔可夫链/观测序列

一个比较好的例子去介绍HMM模型,可以参考一下:

http://www.360doc.com/content/13/0226/14/11619026_268005483.shtml

Wikipedia 介绍: https://en.wikipedia.org/wiki/Hidden_Markov_model

简单描述一下这个例子:

假设A与B是两个处于不同地方的朋友,A关心B每天干了什么事情(观测序列)「散步,购物,大扫除」,想要通过B干的事情去推断出B处地的天气变化(隐藏序列)「晴天,雨天」

隐藏序列集合:Shidden={ 晴天,雨天}S_{hidden} = \{晴天,雨天\}Shidden={ }

观测序列集合:Sobservations={ 散步,购物,大扫除}S_{observations} = \{散步,购物,大扫除\}Sobservations={ }

初始状态概率矩阵:

Mstart_probability={ 雨天:0.6,晴天:0.4}M_{start\_probability}= \{雨天: 0.6, 晴天: 0.4\}Mstart_probability={ :0.6,:0.4}

状态转移矩阵:

Mtransition_probability={ 雨天:{ 晴天:0.3,雨天:0.7},晴天:{ 晴天:0.6,雨天:0.4}}M_{transition\_probability} = \{雨天: \{晴天: 0.3, 雨天:0.7\}, 晴天: \{晴天: 0.6, 雨天:0.4\}\}Mtransition_probability={ :{ 0.30.7},:{ 0.60.4}}

发射概率矩阵:

Memission_probability={ 雨天:{ 散步:0.1,购物:0.4,大扫除:0.5},晴天:{ 散步:0.6,购物:0.3,大扫除:0.1}}M_{emission\_probability}= \{雨天: \{散步: 0.1, 购物:0.4,大扫除:0.5\}, 晴天: \{散步: 0.6, 购物:0.3, 大扫除:0.1\}\}Memission_probability={ :{ 0.10.40.5},:{ 0.60.30.1}}

隐藏序列:表示无法直接观测到的状态,就上述例子而言就是对方的天气状态;

观测序列:可以直接观测到的状态,就上述例子而言就是获取到的B执行的事情;

初始状态概率矩阵:表示B第一次告诉A的时候,得到的隐藏状态集合中每个状态发生的概率;

状态转移矩阵:表示从一个状态到另一个状态变化的概率,如在上述例子中,从雨天到晴天的概率为0.3;

发射状态矩阵:表示B在相应隐藏状态(天气)下,去执行得到观测状态(执行的动作)的概率,如在雨天,B去散步的概率为0.1;

HMM模型综上描述起来就是五个要素:

两个序列:隐藏序列和观测序列

三个矩阵:初始状态矩阵,发射状态矩阵以及状态转移矩阵

隐马尔可夫模型的3个基本问题

概率计算问题:给定模型和观测序列,计算观测序列出现的概率P(O∣λ)P(O|\lambda)P(Oλ);

学习问题:已知观测序列求解模型参数,使得模型在观测序列下的概率最大P(O∣λ)P(O|\lambda)P(Oλ),最大似然估计求参数;

预测问题:给定观测序列,求有可能的对应的状态序列III

符号说明(借鉴《统计学习方法》–李航):

Q:Q:Q:所有可能的状态集合, Q={ q1,q2,...,qN}Q=\{q_1, q_2, ..., q_N\}Q={ q1,q2,...,qN}

VVV: 所有可能的观测状态的集合,V={ v1,v2,...,vM}V=\{v_1, v_2, ..., v_M\}V={ v1,v2,...,vM}

OOO: 实际观测序列,O={ o1,o2,...,oT}O=\{o_1, o_2, ..., o_T\}O={ o1,o2,...,oT}

III: 隐藏的状态序列,I={ i1,i2,...,iT}I=\{i_1, i_2, ..., i_T\}I={ i1,i2,...,iT}

AAA: 状态转移矩阵,aija_{ij}aij表示ttt时刻处于状态qiq_iqit+1t+1t+1时刻转移到qjq_jqj的概率

BBB: 观测概率矩阵,bjotb_{jo_t}bjot表示ttt时刻处于状态qjq_jqj条件下生成观测oto_tot的概率

π\piπ: 初始状态概率向量,猜猜这个向量的长度为多少?当然是等于所有可能的状态集合啦~~~

根据上式定义,有:

  1. 所有的初始状态概率和为1:
    ∑i=1Nπi=1 \sum_{i=1}^{N}\pi_i =1 i=1Nπi=1

  2. 时刻ttt转移到一下个所有可能的状态的概率和为1:

∑j=1Naij=1 \sum_{j=1}^{N} a_{ij} = 1 j=1Naij=1

  1. 时刻ttt,由状态jjj观测到的所有可能的观测值的概率和为1:

∑k=1Mbjk=1 \sum_{k=1}^{M} b_{jk} = 1 k=1Mbjk=1


第一个问题:概率计算问题--计算观测序列出现的概率

概率计算问题描述:给定模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和观测序列O=(o1,o2,...,oT)O=(o_1, o_2, ..., o_T)O=(o1,o2,...,oT),计算观测序列出现的概率P(O∣λ)P(O|\lambda)P(Oλ).

1.直接法

直接法,就是直接按照概率公式进行计算,通过穷举出所有可能的长度为TTT的状态序列和观测序列的联合概率,然后对状态序列求和:
P(O∣λ)=∑IP(O,I∣λ)=∑IP(O∣I,λ)P(I∣λ) P(O|\lambda)=\sum_I P(O, I|\lambda) = \sum_I P(O|I, \lambda)P(I|\lambda) P(Oλ)=IP(O,Iλ)=IP(OI,λ)P(Iλ)
根据隐马尔可夫模型的定义,可以计算状态序列I=(i1,i2,...,iT)I=(i_1, i_2, ..., i_T)I=(i1,i2,...,iT)的概率(齐次马尔可夫性假设):
P(i1,i2,...,iT∣λ)=πi1ai1i2ai2i3...aiT−1iT P(i_1, i_2, ..., i_T|\lambda) = \pi_{i_1}a_{i_1i_2}a_{i_2i_3}...a_{i_{T-1}i_T} P(i1,i2,...,iTλ)=πi1ai1i2ai2i3...ai

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值