HMM是一种结构简单的贝叶斯网络,主要用于时序数据建模,在语音识别,自然语言处理等领域有广泛应用。

一、HMM概述

1、HMM模型的网络结构

MMP数据库 和HDFS_取值

上图为HMM模型的结构,其中MMP数据库 和HDFS_取值_02是不可观测的状态序列;MMP数据库 和HDFS_MMP数据库 和HDFS_03为观测序列。MMP数据库 和HDFS_取值_04表示第MMP数据库 和HDFS_MMP数据库 和HDFS_05时刻的状态变量,取值为MMP数据库 和HDFS_取值_06;。MMP数据库 和HDFS_取值_07表示第MMP数据库 和HDFS_MMP数据库 和HDFS_05时刻的观测值,取值为MMP数据库 和HDFS_概率分布_09

2、HMM模型的三组参数
MMP数据库 和HDFS_取值_10

  • MMP数据库 和HDFS_状态转移_11为状态转移矩阵。从前一个状态转移到后一个状态的概率。
    MMP数据库 和HDFS_状态转移_12
  • MMP数据库 和HDFS_取值_13为观测概率分布矩阵,在当前状态下取某个观测值的概率
    MMP数据库 和HDFS_概率分布_14
  • MMP数据库 和HDFS_MMP数据库 和HDFS_15为初始概率矩阵, 表示初始时刻各状态出现概率。
    MMP数据库 和HDFS_概率分布_16
注意:
   1、状态序列是离散的,观测序列可以是离散的,也可以是连续的。
   2、t观测值只与t时刻状态相关,t+1时刻状态值只与t时刻状态值相关

例子:HMM分词

假设我们相对如下这行话进行分词:

【欢迎来到我的博客】

上面有8个字,即8个时刻。
假设我们是这样分的:找到“终止字”,然后根据终止字来分词。即:对于这行字,“迎、到、我、的、客”是终止字,于是最终这么分词:欢迎/来到/我/的/博客。那么我们对每个字只需判断它是否为终止字,这就是所谓的隐变量。MMP数据库 和HDFS_MMP数据库 和HDFS_17=[‘是终止字’,‘不是终止字’]

下面用上面的知识对这个例子建立HMM的MMP数据库 和HDFS_MMP数据库 和HDFS_18

  • A 状态转移矩阵的确定:
    MMP数据库 和HDFS_取值_19
    其中,MMP数据库 和HDFS_概率分布_20
  • B观测矩阵的确定:
    如果我们的目标文字使用Unicode编码,那么上面的任何一个字都是0~65535中的一个数,于是我们的观测就会是MMP数据库 和HDFS_状态转移_21,于是观测矩阵就是个2*M的矩阵,如下:
    MMP数据库 和HDFS_MMP数据库 和HDFS_22
    其中,MMP数据库 和HDFS_取值_23
  • MMP数据库 和HDFS_状态转移_24初始概率矩阵的确定
    MMP数据库 和HDFS_MMP数据库 和HDFS_25
    其中,MMP数据库 和HDFS_MMP数据库 和HDFS_26
HMM怎么生成观测序列【欢迎来到我的博客】?
   假设有了 z1=“非终止字”这个状态,然后根据这个状态从65535个字中选出x1=“欢”这个字,然后根据状态转移矩阵,下一次转移到了Z2 =“终止字”,然后根据Z2从65535个字中选出了x2=“迎”这个字,这样,最终生成了这句话。

3、HMM模型关注的三个问题

  • 1)概率计算问题:给定参数MMP数据库 和HDFS_取值_27和观测序列MMP数据库 和HDFS_状态转移_28,计算MMP数据库 和HDFS_MMP数据库 和HDFS_29
    使用前向后向算法(动态规划)
  • 2)学习问题:已知观测序列MMP数据库 和HDFS_状态转移_28,求解参数MMP数据库 和HDFS_取值_27,使得MMP数据库 和HDFS_MMP数据库 和HDFS_29最大,即求解MMP数据库 和HDFS_状态转移_33
    采用Baum-Welch算法(EM)
  • 3)预测问题:已知MMP数据库 和HDFS_取值_27和观测序列MMP数据库 和HDFS_状态转移_28,求隐藏的状态序列的概率。即求MMP数据库 和HDFS_取值_36,例已知参数和观测值,求每个字是不是终止字,这样就可以分词了啊。
    采用Viterbi算法(动态规划)

二、HMM关注的问题求解

1、概率计算问题

  • 首先给出直接求解的方法,它的缺点是时间复杂度极高。
    (注意:下面的MMP数据库 和HDFS_取值_37代表的都是一个已知的具体的观测值,MMP数据库 和HDFS_概率分布_38=[红白红])
  • MMP数据库 和HDFS_状态转移_39

  • 给出前向后向算法,时间复杂度极大地减小。
    下图给出了前向概率和后向概率的表示,MMP数据库 和HDFS_状态转移_40为给定MMP数据库 和HDFS_状态转移_41的条件下,计算时刻t观测值为i且观测值为MMP数据库 和HDFS_状态转移_42的前向概率。
  • MMP数据库 和HDFS_取值_43


  • MMP数据库 和HDFS_取值_44

  • 下面给出一道例题来直观理解前向算法的迭代过程
  • MMP数据库 和HDFS_取值_45

  • 前向后向算法的关系
    MMP数据库 和HDFS_概率分布_46
  • 初步给出了预测问题的近似解。
    已知MMP数据库 和HDFS_状态转移_41和观测序列MMP数据库 和HDFS_取值_48,求t时刻隐藏的状态序列的概率。即求MMP数据库 和HDFS_状态转移_49,它求的是单个状态的概率。
    MMP数据库 和HDFS_取值_50
    有了上式,我们可以根据观测序列和MMP数据库 和HDFS_状态转移_41,求得每个字是否为"停止字"的概率,假设是的概率大于否的概率,则判定这个字是停止字,从而进行分词处理。

两个状态的联合概率分布MMP数据库 和HDFS_概率分布_52

MMP数据库 和HDFS_MMP数据库 和HDFS_53


2、学习问题

  • 给出观测序列和状态序列(监督学习)
    以HMM分词为例,你已经拿到了语料库,即有每个字的(B,M,E,S)四种状态。训练得到参数,在测试语料上分词。此时利用大数定律来学习参数MMP数据库 和HDFS_取值_27
  • 只给了观测序列(无监督学习)
    采用Baum-Welch算法(可以看成EM算法的推广)
    推导就是EM算法的E步(求Q)和M步(求参数),这里不做赘述。下图就是最终得到的算法。

3、预测问题

Viterbi算法

对比前向算法,发现只是把MMP数据库 和HDFS_状态转移_55换为MMP数据库 和HDFS_MMP数据库 和HDFS_56

MMP数据库 和HDFS_概率分布_57

直观例题理解

当球为红白红时,三次从哪个盒子摸出的概率最大。

MMP数据库 和HDFS_概率分布_58


参考文章:参考文章