隐马尔可夫模型(HMM)

很多机器学习模型都有一个共同的假设:数据与数据之间是相互独立的,模型只关注当前数据的自变量与因变量之间的关系。
但是在现实生活中,会发现数据间的顺序对数据产生是有影响的。在学术上,具有这种特性的数据被称为序列数据。

隐马尔可夫模型(HMM) 则可以很好地观测这类数据,它是关于时序的概率模型,用有向图表示。

应用场景:在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的统计工具。


一、概念

马尔可夫性质:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态,也就是说当前时刻的状态只与上一时刻的状态有关。

马尔可夫链 :有马尔可夫性质且存在于离散的指数集和状态空间内的随机过程。

隐马尔科夫模型(HMM) 属于马尔可夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率密度分布的状态序列产生。

二、定义

隐马尔可夫模型(HMM) 可用五个元素描述,包括2个状态集合和3个概率矩阵:{ N, M, π,A,B }。一般的,可以用 λ=(A,B,π) 三元组来简洁的表示一个隐马尔可夫模型。

  1. 隐藏状态的数量 N
    隐藏状态S之间满足马尔可夫性质,是模型中实际所隐含的状态,通常无法直接观测得到。
    (例如S1、S2、S3等等)
  2. 可观测状态的数量 M
    可观测状态O在模型中与隐含状态相关联,可通过直接观测而得到。
    (例如O1、O2、O3等等,可观测状态的数目不一定要和隐含状态的数目一致。)
  3. 初始状态概率矩阵 π
    表示隐含状态S在初始时刻t=1的概率矩阵,
    (例如t=1时,P(S1)=p1、P(S2)=p2、P(S3)=p3,则初始状态概率矩阵 π=[ p1 p2 p3 ].
  4. 隐含状态转移概率矩阵 A
    描述了HMM模型中各个状态之间的转移概率。
    A = [aij]n*n,其中aij = P( Sj | Si ),1≤i,j≤N.
    表示在 t 时刻、状态为 Si 的条件下,在 t+1 时刻状态是 Sj 的概率。
  5. 观测状态转移概率矩阵(发射矩阵)B
    令N代表隐含状态数目,M代表可观测状态数目,则:
    B = [bj(k)]n*m ,其中bij = P( Oi | Sj ), 1≤i≤M,1≤j≤N.
    表示在 t 时刻、隐含状态是 Sj 条件下,观察状态为 Oi 的概率。

三、两个假设

  1. 齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关,即:
  2. 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他的观测和状态无关,即:

四、三个基本问题

  1. 概率计算问题。给定模型λ和观测序列O,计算在模型λ下观测序列O出现的慨率P(O|λ)。

    解法:通常利用 forward算法(前向后向算法) 分别计算每个λ产生给定观测序列O的概率,然后从中选出最优的HMM模型。
    经典例子: 语音识别。在描述语言识别的隐马尔科夫模型中,每个单词生成一个对应的HMM,每个观测序列由一个单词的语音构成,单词的识别是通过评估进而选出最有可能产生观测序列所代表的读音的HMM而实现的。

  2. 预测问题,也称为解码问题。已知模型λ和观测序列O,求对给定观测序列条件概率P(I|O)最大的状态序列。即给定观测序列,求最有可能的对应的状态序列。

    解法:通常利用 Viterbi算法(维特比算法) 来寻找。
    经典例子:中文分词,即把一个句子如何划分其构成才合适。例如,句子“发展中国家”是划分成“发展-中-国家”,还是“发展-中国-家”。这个问题可以用隐马尔科夫模型来解决。句子的分词方法可以看成是隐含状态,而句子则可以看成是给定的可观测状态,从而通过建HMM来寻找出最可能正确的分词方法。

  3. 学习问题。已知观测序列O,估计模型λ的参数,使得在该模型下观测序列概率P(O|λ)最大。

    解法:通常利用 Baum-Welch算法(鲍姆-韦尔奇算法) 参数未知的情况下求解模型参数的时候我们采用无监督学习来求解。假定只知道观测序列的前提下,利用极大似然估计来求解参数。

参考文献:

  • https://www.jianshu.com/p/d4d6d17eb6a3
  • https://baike.baidu.com/item/隐马尔可夫模型/7932524?fr=aladdin
  • https://blog.csdn.net/zgcr654321/article/details/92639420
  • https://zhuanlan.zhihu.com/p/95986693
  • https://www.cnblogs.com/bigmonkey/p/7230668.html
  • https://www.cnblogs.com/jiangxinyang/p/9279711.html
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐