高冷贵族: 隐马尔可夫模型


分别为状态序列与观测序列, 因状态序列是一个马尔可夫链,故 所有变量的联合概率分布为:

𝑃(𝑥1,𝑦1,,𝑥𝑛,𝑦𝑛)=𝑃(𝑦1)𝑃(𝑥1|𝑦1)Π𝑛𝑖=2𝑃(𝑦𝑖|𝑦𝑖1)𝑃(𝑥𝑖|𝑦𝑖)


欲得到联合概率分布,其需要右边三个部分,𝑃(𝑦1)𝑃(𝑥1|𝑦1) 为初始条件; 𝑃(𝑦𝑖|𝑦𝑖1) 为转移条件; 𝑃(𝑥𝑖|𝑦𝑖)

则为观测条件. 因此,

设:

Q 是所有可能的状态集合, V 是所有可能的观测集合.

𝑄={𝑞1,𝑞2,,𝑞𝑁},𝑉={𝑣1,𝑣2,,𝑣𝑀}


其中,N 是所有可能的状态数, M 是所有可能的观测数.

I 是长度为T 的状态序列, O 是对应的观测序列:

𝐼={𝑖1,𝑖2,,𝑖𝑇}𝑂=(𝑜1,𝑜2,,𝑜𝑇)


A 是状态转移概率矩阵:

𝐴=[𝑎𝑖𝑗]𝑁𝑋𝑁


其中,

𝑎𝑖𝑗=𝑃(𝑖𝑖+1=𝑞𝑗|𝑖𝑡=𝑞𝑖),𝑖=1,2,,𝑁,𝑗=1,2,,𝑁


是在 t 时刻 处于状态 qi 的条件下在 时间 t+1 转移到状态 qj 的概率.

B 是观测概率矩阵

𝐵[𝑏𝑗(𝑘)]𝑁𝑋𝑀


其中

𝑏𝑗(𝑘)=𝑃(𝑜𝑡=𝑣𝑘|𝑖𝑡=𝑞𝑗),𝑘=1,2,,𝑀,𝑗=1,2,,𝑁


是在 t 时刻 处于状态 q_j 的条件下生成观测数 vk 的概率.

𝜋

是初始状态概率向量

𝜋=(𝜋𝑖)


其中

𝜋𝑖=𝑃(𝑖1=𝑞𝑖),𝑖=1,2,,𝑁


是时刻 t = 1处于状态 qi 概率.

有了上述准确, HMM就基本上搞定了:

定义

 

𝜆=(𝐴,𝐵,𝜋)

 

这就是HMM,其中括号内的三个部分称为HMM三元素.

基本假设

  1. 齐次马尔可夫性假设, 即假设 在任意时刻 t 的状态 只有前一状态有关,与其他任何状态,观测都无关:

    𝑃(𝑖𝑡|𝑖𝑡1,𝑜𝑡1,,𝑖1,𝑜1)=𝑃(𝑖𝑡|𝑖𝑡1)
  1.  

基本问题

  1. 概率计算问题, 给定定 𝜆=(𝐴,𝐵,𝜋)

和观测序列𝑂=(𝑜1,𝑜2,,𝑜𝑇) , 计算在模型 𝜆 下 观测序列 O 出现的概率𝑃(𝑂|𝜆) ,估计模型 𝜆=(𝐴,𝐵,𝜋) 使得在该模型下, 𝑃(𝑂|𝜆) 和观测序列𝑂=(𝑜1,𝑜2,,𝑜𝑇) , 求使 𝑃(𝑂|𝜆) 最大的状态序列 𝐼=(𝑖1,𝑖2,,𝑖𝑇)

  1. ,即最有可能的状态序列.

接下来,对于这三个问题,我们将各个击破.

前向,后向算法

对于第一个问题, 最简单的方法就是暴力计算,把每种情况都考虑一遍, 不用我说,你也知道这不可行. 倒不是因为复杂,是因为算不起,它的时间复杂度是恐怖的 𝑂(𝑇𝑁𝑇)

.

不过还真有比较不错的算法,而且还有两种!

上图可表示为一HMM列.左,右两边虚线内我们分别用𝛼𝑡(𝑗),𝛽𝑡(𝑗)

来表示,其中

𝛼𝑡(𝑗)=𝑃(𝑜1,𝑜2,,𝑜𝑡,𝑖𝑡=𝑞𝑗|𝜆);𝛽𝑡(𝑗)=𝑃(𝑜𝑡+1,𝑜𝑡+2,,𝑜𝑇|𝑖𝑡=𝑞𝑗,𝜆)


这两个就是我们分别用于前向,后向算法的关键因子.

再明确一下,我们的目标是求解 𝑃(𝑂|𝜆)

.

前向算法

  1. 初始状态 𝑜1

, 考虑出现𝑜1 概率:

𝑃(𝑜1|𝜆)=𝑗=1𝑁𝑃(𝑜1,𝑖1=𝑞𝑗|𝜆)=𝑗=1𝑁𝛼1(𝑗)=𝑗=1𝑁𝜋𝑗𝑏𝑗(𝑜1)

, 现在要求𝑃(𝑜1,𝑜2,,𝑜𝑡,𝑜𝑡+1|𝜆) ,可以先从𝛼𝑡+1(𝑗)

  1. 出发:

 

𝛼𝑡+1(𝑗)=====𝑃(𝑜1,𝑜2,,𝑜𝑡,𝑜𝑡+1,𝑖𝑡+1=𝑞𝑗|𝜆)𝑁𝑘=1𝑃(𝑜1,𝑜2,,𝑜𝑡,𝑜𝑡+1,𝑖𝑡+1=𝑞𝑗,𝑖𝑡=𝑞𝑘|𝜆)𝑁𝑘=1𝑃(𝑜1,𝑜2,,𝑜𝑡,𝑖𝑡=𝑞𝑗|𝜆)𝑎𝑗𝑘𝑏𝑗(𝑜𝑡+1)𝑁𝑘=1𝛼𝑡(𝑗)𝑎𝑗𝑘𝑏𝑘(𝑜𝑡+1)𝑏𝑗(𝑜𝑡+1)𝑁𝑘=1𝛼𝑡(𝑗)𝑎𝑗𝑘

 

而:

𝑃(𝑜1,𝑜2,,𝑜𝑡,𝑜𝑡+1|𝜆)=𝑗=1𝑁𝛼𝑡+1(𝑗)

 

  1. 最终:

 

𝑃(𝑂|𝜆)=𝑗=1𝑁𝛼𝑇(𝑗)

 

这就是前向算法.

后向算法

前向算法是从前向后, 后向算法则是从后向前的. 回顾:

𝛽𝑡(𝑗)=𝑃(𝑜𝑡+1,𝑜𝑡+2,,𝑜𝑇|𝑖𝑡=𝑞𝑗,𝜆)

 

  1. 第一步,由 𝛽

定义,可知 当t = T时,

𝛽𝑇(𝑗)=1


也就是说,目前的观测序列到时刻T,而𝛽𝑇 则关注的是 T+1 时刻, 这从现有已知条件中,对T+1 时刻没有任何限制的,即𝑜𝑇+1

  1.  

举例计算

现在咱们来计算上面'三个女朋友'的例子,老妈想知道的问题. 现在我们简化一下问题,你的微信状态变成'吃,看,吃'. 计算方式一模一样,只是简化了一点,方便我行文. 这里要计算的是'吃,看,吃'的概率正常应该是多少(有些人可能要疑惑:这个跟大妈的问题不太一样啊~,其实是一样的, 因为我们可以假设这'吃,看,吃'与下周出现的活动组成一个序列,并求出概率,概率最大的情况,就是你下周最有可能的活动:

前向计算

概率上面三个表:

  1. 初始状态

 

𝛼1(1)=𝜋1𝑏1(𝑜1)=0.20.5=0.1𝛼1(2)=𝜋2𝑏2(𝑜1)=0.40.4=0.16𝛼1(3)=𝜋1𝑏3(𝑜1)=0.40.7=0.28

 

  1. 递推计算

    𝛼2(1)=[3𝑖=1𝛼1(𝑖)𝑎𝑖1]𝑏1(𝑜2)=0.1540.5=0.077

后向计算

  1. 𝛽3(𝑗)=1

  1.  

前向,后向算法结果是一样的!

至此,第一个问题解决了. 这个问题可以用于时间序列预测问题,应用方式同上.

学习问题

有时我们并不知道HMM模型的具体形态,因此需要一些手段得到它.

在做此类问题时也可大致分为两种情:

已知观测序列及隐序列

这里了也必须已知,N 是所有可能的状态数, M 是所有可能的观测数.

比如,对于中文分词,我们手上有数据集, 而且我们可以很容易地定义每个字隐状态(隐状态: 起始字,中间字,终止字,及独立字等等),这样, 在两序列已知的情况下,根据大数定律,应用最大似然求出各状态转移矩阵,观测矩阵及一个初始向量.

已知观测序列

这里了也必须已知,N 是所有可能的状态数, M 是所有可能的观测数.

这里的方法就是 EM 算法, 不过因为在HMM中,因此有个别名叫 Baum-Welch 算法.

预测问题

第三个问题是预测问题.预测的是给定观测序列,背后最有可能的马尔可夫链.

这个问题目前有两种方法,第一种称为近似算法.此算法寻找各个时刻的最优解,最后连成一列. 为什么会被称为近似算法? 因为这样得到的每个时刻的最优,最终并不一定是整个序列的最优解.

因此目前最好的方法是维特比(Viterbi)算法.

Viterbi 算法

此算法是用动态规划的方式解决HMM的预测问题.即把隐状态列看成是最优路径上的每一步,找最大概率路径,即转化成寻找最优路径.

在动态规划中, 最优路径具有这样的特性: 最优路径在 t 时刻通过 结点 i, 那么 这一路径对于从 i 到 最后的剩余路径也是最优的.否则必有另一路径比此更优,这是矛盾的.基于此 Viterbi 算法 递推的计算在 t 时刻的最优路径,直至最后.根据最后的最优路径反向确定最优路径上的各点隐状态.

设 t 时刻的最优路径是

𝛿𝑡(𝑗)=max𝑖1,𝑖2,,𝑖𝑡1𝑃(𝑖𝑡=𝑞𝑗,𝑖𝑡1,,𝑖1,𝑜𝑡,,𝑜1|𝜆),𝑗=1,2,,𝑁


于是

𝛿𝑡+1(𝑘)==max𝑖1,𝑖2,,𝑖𝑡𝑃(𝑖𝑡=𝑞𝑗,𝑖𝑡1,,𝑖1,𝑜𝑡,,𝑜1|𝜆)max1𝑗𝑁[𝛿𝑡(𝑗)𝑎𝑗𝑘]𝑏𝑘(𝑜𝑡+1)


这样,

  1. 最初状态:

    𝛿1(𝑗)=𝜋𝑗𝑏𝑗(𝑜1)

递推 𝛿𝑡+1(𝑘)

𝛿𝑡+1(𝑘)=max1𝑗𝑁[𝛿𝑡(𝑗)𝑎𝑗𝑘]𝑏𝑘(𝑜𝑡+1)

的最优路径中,第 t 个结点:

𝜓𝑡+1(𝑘)=argmax1𝑗𝑁[𝛿𝑡(𝑗)𝑎𝑗𝑘]


于是最终列:

𝑘1,𝑘2,,𝑘𝑇


其中

𝑘𝑡=𝜓𝑡+1(𝑗)
  1.  

举例计算

还是'三个女朋友的例子',还是'吃,看,吃',

首先,

𝛿1(1)=0.1,𝛿1(2)=0.16,𝛿1(3)=0.28


递推 t = 2,

𝛿2(1)=max1𝑗3[𝛿1(𝑗)𝑎𝑗1]𝑏1(𝑜2)=0.028


同理:

𝛿2(2)=0.0504,𝛿2(3)=0.042𝛿3(1)=0.00756,𝛿3(2)=0.01008,𝛿3(3)=0.0147


最终状态:

𝑝𝑎𝑡𝑏𝑒𝑠𝑡=max1𝑗3𝛿3(𝑗)=0.0147


𝑖3=3

 

反向推断:

𝑖2=𝜓2+1(3)=argmax1𝑗𝑁[𝛿2(𝑗)𝑎𝑗3]=3


最后

𝑖1=𝜓1+1(3)=argmax1𝑗𝑁[𝛿𝑡(𝑗)𝑎𝑗3]=3


因此最终状态[3,3,3], 也就是说你这三周一直在陪C 女朋友的概率最大.

升华

思考,机器学习的算法哲学是什么? 是根据有限的已知去推断未知. 这又可分为两种, 一种是根据知识,对未来给出一个确定性判断,比如decision tree; 还有一是对未来的不确定性怀敬畏,对未知只做概率性预测,如果一定要给出个结果,那只好用最大化概率法给出. 两种方法没有孰优孰劣,只是适用范围,场景,数据不同而已.

本文分享的HMM 是贝叶斯网络的一个特例. 在推导过程中用到了一些贝叶斯网络相关的知识.贝叶斯网络是用有向无环图来表示变量间的依赖关系.

贝叶斯网络则属于更大范畴的概率图模型(Probabilistic Graphical Model, PGM). 而概率图模型则是概率模型的一种具体实现.

概率模型就是上面所说的,对未知进行概率性预测. 其核心是对未知进行概率分布预测,这右可分为两种: '生成(generative)模型'与'判别(discriminative)模型'.具体地, 可观测变量集 O, 兴趣变量集 Y(即所要求解的变量),其他相关变量 R.

生成式关心的是联合概率分布: P(Y, R, O); 而 判别式则关注条件概率 P(Y, R | O).

参考文献

  1. Artificial Intelligence: A modern approach, 3rd edition, 2010, Stuart Russell and Peter Norvig.

  2. 统计学方法,2012,李航.(注: 文中例子根据本书中例子改编~)
  3. 机器学习, 2016, 周志华.
  4. Pattern Recognition and Machine Learning, 2006 ,Christopher M. Bishop.
  5. HMM, 2017,Wikipedia.

  • 𝑝𝑎𝑡𝑏𝑒𝑠𝑡=max1𝑗𝑁𝛿𝑇(𝑗)
  •  

  • 反向推导 最优隐状态序列, 令在 t+1 时刻 状态在𝑞𝑘

posted @ 2019-11-10 15:00  Raymone1125  阅读(353)  评论(0编辑  收藏  举报