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$层看作字相关的特征