隐马尔可夫模型(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+1∣i1,i2,...,it)=p(it+1∣it)
隐马尔可夫模型是由马尔可夫链生成随机不可观测的随机状态序列,再由各个状态生成可观测的随机序列:

可以得到上述隐马尔可夫模型的图模型结构,状态序列(不可观测的)为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(it∣it−1,ot−1,...,i1,o1)=p(it∣it−1),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(ot∣iT,oT,iT−1,oT−1,...,it+1,ot+1,....,i1,o1)=p(ot∣it)
生成模型 or 判别模型
1.生成模型:
由生成方法学习到的模型称之为生成模型,生成方法是由数据学习联合分布P(X,Y)P(X, Y)P(X,Y),然后求出条件概率分布P(Y∣X)P(Y|X)P(Y∣X)作为预测的模型:
P(Y∣X)=P(X,Y)P(X) P(Y|X) = \frac{P(X, Y)}{P(X)} P(Y∣X)=P(X)P(X,Y)
典型的生成模型有:朴素贝叶斯法,隐马尔可夫模型,生成对抗网络(GAN),变分自编码器(VAE);
生成模式有两种:确定性和非确定性的。
确定性生成模式:变化规律固定,能够根据当前状态,确定判断出下一状态,如交通红绿灯的变化;
非确定性生成模式:变化相对多样,不能准确确定下一状态,如天气的变化。
2.判别模型:
由判别方法学习到的模型称之为判别模型,判别方法是由数据直接学习决策函数或者条件概率分布P(Y∣X)P(Y|X)P(Y∣X)作为预测的模型。
典型的判别模型有: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.3,雨天:0.7},晴天:{ 晴天:0.6,雨天:0.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.1,购物:0.4,大扫除:0.5},晴天:{ 散步:0.6,购物:0.3,大扫除:0.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_iqi在t+1t+1t+1时刻转移到qjq_jqj的概率
BBB: 观测概率矩阵,bjotb_{jo_t}bjot表示ttt时刻处于状态qjq_jqj条件下生成观测oto_tot的概率
π\piπ: 初始状态概率向量,猜猜这个向量的长度为多少?当然是等于所有可能的状态集合啦~~~
根据上式定义,有:
所有的初始状态概率和为1:
∑i=1Nπi=1 \sum_{i=1}^{N}\pi_i =1 i=1∑Nπi=1时刻ttt转移到一下个所有可能的状态的概率和为1:
∑j=1Naij=1 \sum_{j=1}^{N} a_{ij} = 1 j=1∑Naij=1
- 时刻ttt,由状态jjj观测到的所有可能的观测值的概率和为1:
∑k=1Mbjk=1 \sum_{k=1}^{M} b_{jk} = 1 k=1∑Mbjk=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∣λ)=I∑P(O,I∣λ)=I∑P(O∣I,λ)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