统计学习方法笔记之十----隐马尔科夫模型(一)

来源:互联网 发布:ug怎么编程 编辑:程序博客网 时间:2024/06/07 03:19

By The Way

   现在已经进行到《统计学习方法》的第十章了,最近公司的事情特别多,公司的推荐系统项目第二大版本正式上线,所以事情比较多。另外,我发现一个问题,有几篇比较难理解的章节,我写的博客的篇幅比较大,其实,我应该分开写的,这样就不至于读者在读的时候,感觉乏味,坚持不了看到最后。
   所以,对于本章节部分,我打算一步一步的写,分个一二三四。

基本概念

隐马尔可夫模型(hidden Markov model。HMM)是指用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。

隐马尔可夫模型的定义

隐马尔可夫模型
  隐马尔可夫模型是关于时序的概率统计模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
 
 不可观测状态随机序列—>观测随机序列

  • 隐藏的马尔科夫链随机生成的状态序列,称为状态序列(state sequence)
  • 每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence)
  • 序列的每一个位置又可以看成是一个时刻。

      隐马尔可夫模型由初始概率分布、状态转移概率以及观测概率分布确定。隐马尔可夫模型的形式定义如下:

      设Q是所有可能的状态的集合,V是所有可能的观测的集合。


    其中,N是可能的状态数,M是可能的观测数。

      I是长度为T的状态序列,O是对应的观测序列:
      


      A是状态转移概率矩阵:
      

    其中,

    是指在时刻t处于状态的条件下在时刻t+1转移到状态的概率。

      B是观测概率矩阵:
      


    其中,

    是指在时刻t处于状态的条件下生成观测的概率。

      是初始状态概率向量:
      


    其中,

    是指在时刻t=1时刻处于状态的概率。

隐马尔可夫模型由初始状态概率向量、状态转移概率矩阵A和观测概率矩阵B决定。和A决定状态序列,B决定观测序列。因此隐马尔可夫模型可以用以下三元符号表示:


称为隐马尔可夫模型的三要素!

隐马尔可夫模型作了两个基本的假设:

  • 齐次马尔可夫性假设。即假设隐藏的马尔科夫链在时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t本身无关。

    这里写图片描述

  • 观测独立性假设。即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测以及状态无关。

    这里写图片描述

应用

隐马尔可夫模型可以用于标注,这是状态对应着标记。标注问题是给定观测的序列预测其对应的标记序列,可以假设标注问题的数据是由隐马尔可夫模型生成的。这样我们可以利用隐马尔可夫模型的学习与预测算法进行标注。

实例

这里写图片描述

这里写图片描述

  在这个例子中有两个随机序列,一个是盒子的序列(状态序列),一个是球的颜色的序列(观测序列),前者是隐藏的,只有后者是可观测的。这是一个隐马尔可夫模型的例子,根据所给的条件,可以明确状态集合、观测集合、序列长度以及模型的三要素(A,B,pi).
  
  盒子对应着状态,状态的集合是:
  Q={盒子1,盒子2,盒子3,盒子4},N=4

  球的颜色对应观测,观测的集合是:
  V={红,白}, M=2

  状态序列和观测序列长度T=5.
  
  三要素为:

  初始概率分布为:
  

根据例题中的抽球方法描述可以得到状态转移概率为:

根据表格中的数据,可以得到感测概率分布为:

例子二

  假设我手里有三个不同的骰子。第一个骰子是我们平常见的骰子(称这个骰子为D6),6个面,每个面(1,2,3,4,5,6)出现的概率是1/6。第二个骰子是个四面体(称这个骰子为D4),每个面(1,2,3,4)出现的概率是1/4。第三个骰子有八个面(称这个骰子为D8),每个面(1,2,3,4,5,6,7,8)出现的概率是1/8。
  

  假设我们开始掷骰子,我们先从三个骰子里挑一个,挑到每一个骰子的概率都是1/3。然后我们掷骰子,得到一个数字,1,2,3,4,5,6,7,8中的一个。不停的重复上述过程,我们会得到一串数字,每个数字都是1,2,3,4,5,6,7,8中的一个。例如我们可能得到这么一串数字(掷骰子10次):1 6 3 5 2 7 3 5 2 4。

  这串数字叫做可见状态链。但是在隐马尔可夫模型中,我们不仅仅有这么一串可见状态链,还有一串隐含状态链。在这个例子里,这串隐含状态链就是你用的骰子的序列。比如,隐含状态链有可能是:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8。

  一般来说,HMM中说到的马尔可夫链其实是指隐含状态链,因为隐含状态(骰子)之间存在转换概率(transition probability)。在我们这个例子里,D6的下一个状态是D4,D6,D8的概率都是1/3。D4,D8的下一个状态是D4,D6,D8的转换概率也都一样是1/3。这样设定是为了最开始容易说清楚,但是我们其实是可以随意设定转换概率的。比如,我们可以这样定义,D6后面不能接D4,D6后面是D6的概率是0.9,是D8的概率是0.1。这样就是一个新的HMM。

  同样的,尽管可见状态之间没有转换概率,但是隐含状态和可见状态之间有一个概率叫做输出概率(emission probability)。就我们的例子来说,六面骰(D6)产生1的输出概率是1/6。产生2,3,4,5,6的概率也都是1/6。我们同样可以对输出概率进行其他定义。比如,我有一个被赌场动过手脚的六面骰子,掷出来是1的概率更大,是1/2,掷出来是2,3,4,5,6的概率是1/10。

  



  
  其实对于HMM来说,如果提前知道所有隐含状态之间的转换概率和所有隐含状态到所有可见状态之间的输出概率,做模拟是相当容易的。但是应用HMM模型时候呢,往往是缺失了一部分信息的,有时候你知道骰子有几种,每种骰子是什么,但是不知道掷出来的骰子序列;有时候你只是看到了很多次掷骰子的结果,剩下的什么都不知道。如果应用算法去估计这些缺失的信息,就成了一个很重要的问题。

观测序列的生成过程

根据隐马尔可夫模型的定义,可以将一个长度为T的观测序列的生成过程描述如下:

这里写图片描述

每一次的迭代如下:

Created with Raphaël 2.1.0t时刻状态i_tt时刻状态i_tt时刻的观测o_tt时刻的观测o_tt+1时刻状态i_t+1t+1时刻状态i_t+1(1)通过观测概率分布求得。(2)通过状态转移概率求得

隐马尔可夫模型的三个基本问题

隐马尔可夫模型有3个基本问题:

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

  对应到例子二就是如下问题:

知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),我想知道掷出这个结果的概率。  看似这个问题意义不大,因为你掷出来的结果很多时候都对应了一个比较大的概率。问这个问题的目的呢,其实是检测观察到的结果和已知的模型是否吻合。如果很多次结果都对应了比较小的概率,那么就说明我们已知的模型很有可能是错的,有人偷偷把我们的骰子給换了。

(2)、学习问题。已知观测序列,估计模型参数,使得在该模型下观测序列概率最大,即用极大似然估计的方法估计参数。
  对应到例子二:

知道骰子有几种(隐含状态数量),不知道每种骰子是什么(转换概率),观测到很多次掷骰子的结果(可见状态链),我想反推出每种骰子是什么(转换概率)。  这个问题很重要,因为这是最常见的情况。很多时候我们只有可见结果,不知道HMM模型里的参数,我们需要从可见结果估计出这些参数,这是建模的一个必要步骤。

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

对应到例子二:

知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),我想知道每次掷出来的都是哪种骰子(隐含状态链)。   这个问题呢,在语音识别领域呢,叫做解码问题。这个问题其实有两种解法,会给出两个不同的答案。每个答案都对,只不过这些答案的意义不一样。第一种解法求最大似然状态路径,说通俗点呢,就是我求一串骰子序列,这串骰子序列产生观测结果的概率最大。第二种解法呢,就不是求一组骰子序列了,而是求每次掷出的骰子分别是某种骰子的概率。比如说我看到结果后,我可以求得第一次掷骰子是D4的概率是0.5,D6的概率是0.3,D8的概率是0.2.

总结

最后我们再总结一下,我们以例子一为例。

所谓的马尔可夫链是指:状态序列的每个状态值取决于前面有限个状态,这种状态序列就是马尔可夫链。

所谓的马尔可夫模型是指:像这种由一个隐藏的马尔科夫链随机生成的不可观测的状态序列,再由各个状态生成一个观测而产生观测随机序列的过程就是隐马尔可夫模型。

注意:讲到这里,你会发现,“状态序列是隐藏的,观测序列是可观测的”这个条件和EM算法面临问题的条件很像,即,“只知道结果,却不知道每个结果从哪个过程得出。”因此,在此我们强调一下:因马尔可夫模型只是模型!它不是算法!这个不要弄混了!而可以应用到这个模型的算法之一就是EM算法!

本节完,看到这里,应该对隐马尔有了基本的认识了,后面的章节主要是介绍一些解决以上三个基本的问题的方法。

        所谓的不平凡就是平凡的N次幂。                                ------By Ada 
原创粉丝点击