隐马尔可夫模型HMM

1 马尔可夫模型

马尔可夫模型(The Hidden Markov Model),简称HMM,又称为可视马尔可夫模型,具备无记忆性的特点,即当前时刻的状态,只受前一时刻的影响

以典型的天气模型为例,设状态有三种:{ Sunny,Rainy,Cloudy }

由于每天的天气都不一定,所以对于天气的每天观察就构成了一个马尔可夫链

通过历史数据统计不同状态之间的转移概率,就可以得到马尔可夫模型:

2 隐马尔可夫模型

马尔可夫模型的状态是可知的,而隐马尔可夫模型的状态是不可知,但存在可知的序列观察值

以典型的看病模型为例,设病人的状态有两种:{健康(Healthy),发烧(Fever)}

医生不能直接知道病人的状态,但能够得知病人的健康状况:{正常(Normal),发寒(Cold), 头晕(Dizzy)},作为一个行医多年的鬼才医生,他可以构建出看病用的隐马尔可夫模型:

注:HMM其实是朴素贝叶斯的序列标注版

3 HMM的常见应用

借助隐马尔可夫模型,可以解决以下几种问题:

评估(Evaluation)

  • 定义:给定HMM,求观察值的可能概率
  • 举例:一个病人第一天头晕,求第二天头晕的概率
  • 解决方法:暴力枚举、前向算法、后向算法

解码(Decoding)

  • 定义:给定HMM和观察值,求状态的可能性
  • 举例:一个病人第一天头晕,第二天发寒,求他这两天的健康状况
  • 解决方法:2 维特比算法示例

学习(Learning)

  • 定义:给定观察值序列,求HMM
  • 举例:根据医生最近一年的看病记录,判断头晕病人发烧概率、第二天继续头晕的概率、第二天康复的概率
  • 解决方法:Baum-Welch 算法(存在大量标注数据)、EM算法(不存在大量标注数据)

4 高阶HMM

初始的HMM是基于马尔可夫链来实现的,认为当前时刻的状态,只受前一时刻的影响,而当通过二阶马尔可夫链(当前时刻的状态,只受前两个时刻的影响)构建隐马尔可夫模型时,得到的就是二阶隐马尔可夫模型,简称2-HMM

5 层次化HMM

层次化隐马尔可夫模型(The Hierarchical Hidden Markov Model),简称HHMM

当序列过长时,HMM的复杂度会很高(指数级增长),因此提出了HHMM将HMM进行层次化的拆分,简单来说,就是原本状态与观察值的转换关系,变成了状态与观察值序列的转换关系。

(摘自宗成庆的《统计自然语言处理》)

备注:为了方便理解上图,可以把$q^1$层看作初始化层,$q^2$层看作句子相关的特征,$q^3$层看作词语相关的特征,$q^4$层看作字相关的特征

6 参考

如何用简单易懂的例子解释隐马尔可夫模型? - henry的回答 - 知乎

维基百科 - 维特比算法

#HMM #HHMM

往年同期文章