概率图模型——隐马尔科夫

Mar 13, 2018


  最近在做实体词相关工作,需要用到crf(条件随机场)模型,于是又从头开始复习了一遍概率图模型,当然从最简单的HMM(隐马尔科夫)模型开始。在开始之前先引用一张网上已经泛滥的图吧。

它的含义在概率图模型详列文章的结尾解释。
  在概率图模型中,一个节点一般用来标识一个状态或者观测值,节点之间的连线表示状态或者观测值之间的关系。根据连线是否有方向(箭头),概率图模型大体可以分为两类:第一类是有向无环图表示变量之间的依赖关系,称为有向模型或贝叶斯网络;第二类是无向图表示变量之间的相关关系,称为无向图模型或者马尔科夫网络。HMM模型是一种简单的动态贝叶斯网络。在HMM模型中,有两种类型的变量:观测量和隐含状态变量。每个观测量都对应一个隐含状态变量。

  图片中Y表示隐藏状态,X表示观测量。为了理解隐马尔科夫模型,可以从一个简单的例子开始。假设小明是一个身体很弱的小朋友,我们可以通过体温计得到小明的体温,我们把得到的体温划分成三个档:正常偏高高烧。因为体温是可以通过体温计直接得到的,所以是可以直接观测到的量X。但是小明的身体健康情况就不那么好观测了,是隐含状态Y,这里Y只有两个状态:健康生病
  我们以3天为周期,取过去两个月中的随机6个周期,得到小明身体情况和体温表现如下:

  从图中可以统计出如下几点:

  1. 以三天为周期,第一天是健康的情况有5天,是生病的情况有1天。所以第一天是健康的概率为5/6,生病的概率为1/6。
  2. 考虑两天之间的状态转换,健康->生病的状态有4个,健康->健康的状态有5个,生病->健康的状态有1个,生病->生病的状态有2个,总计12。
  3. 考虑小明身体健康状况和体温的关系:健康->正常的情况有9个,健康->低温的情况有2个,健康->高温的情况有0个,生病->正常的情况有0个,生病->低温的情况有2个,生病->高温的情况有5个,一共有18个情况。

  如果你理解了刚刚小明的这个例子,那么你已经理解了HMM模型。简单说,构成HMM模型有三个要素:

  1. 状态空间,这里对应:健康生病
  2. 观测空间,这里对应:正常偏高高烧
  3. 三个概率,分别为:初始概率(第一天生病或健康概率)、状态转移概率(健康->生病,健康->健康,生病->健康,生病->生病)、发射概率(健康->正常,健康->低温,健康->高温,生病->正常,生病->低温,生病->高温)

  这些值在上面那个例子中已经都有了,而且很容易计算和理解吧。既然已经理解了HMM模型是什么,那么下一个问题就是HMM模型能解决哪些问题。一般,马尔科夫模型可以解决三个基本问题:

  1. 模型训练问题,如何训练模型,使其能更好地描述观测数据。
  2. 隐含状态求解,如何通过模型和观测序列,求解观测序列对应的隐含状态。(是否生病)
  3. 求解模型和观测序列直接的匹配度。

  根据条件独立性假设,这三个问题都可以轻松求解。马尔科夫的条件独立假设如下:

  1. 任何一个时刻的状态至于其前一个时刻的状态有关系。即小明今天是否健康仅仅与昨天的健康状态有关系。
  2. 任何一个时刻的观测值仅与当前时刻的状态值有关,即小明点前时刻的体温只与其当前时刻的健康状态有关系。

  到此为止,已经介绍完HMM模型。