隐马尔可夫模型

简单介绍

隐马尔可夫模型是关于时序(顺序)的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence);每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence)。序列的每一个位置又可以看作是一个时刻。

我们知道句子的表达不仅与其构成的词语有关,还与词的位置以及语法有关。因此对于语言来说,如果忽略语序进行理解,往往得不到句子正常的意思。(尽管如此,朴素贝叶斯在垃圾邮件分类上仍取得很好的效果)HMM在建立模型的时候可以考虑之前状态对当前的影响。例如,我们要给以下句子做词性标注:

我(名词)爱(动词)学习(名词/动词?)

如果单独去给"学习"这个词标注的话,"学习"可能是名词也可以是动词。但在上面那句话里"学习"显然是名词,因为学习前面的词"爱"是动词,后面应该接名词,因此"学习"标注应该标注为名词。这里我们在标注的时候考虑前面词语的词性对当前词的词性的影响。HMM也是这样去给词语标注词性的。只不过HMM是这么看待以上问题,我 爱 学习 被看做长度为3的序列,这个序列为观测序列。它们的词性可以理解为词语的某个状态,由于我们现在是要给词语做标注,因此我们是不知道每个观测值(词语)的状态(词性)的。并且我们知道句子的基本构成有主谓宾定状补,词语的词性往往与该词在句子充当的成分有关。例如谓语(爱)之后的词(学习)很有可能名词这么一种转态改变的规则。

用HMM的概念来说,我爱学习是观测序列,词语的词性序列是一个状态序列,词性变化规则为状态转移矩阵(描述不同状态相互转换的概率)。在深入介绍隐马尔可夫模型之前先引入一些基本概念。

马尔可夫性

马尔可夫性质是概率论中的一个概念。当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的过程通常称之为马尔可夫过程。当前情况尽跟之前n个状态有关的随机过程称为n阶马尔科夫过程。

拿天气和海藻的例子来说
假设海藻的湿度与天气有某种关联,为了简易的去定义这个问题,定义海藻存在四种观测值{dry,dryish,damo,soggy},天气的状态也只有三种状态{sunny,cloudy,rainy}。
(这里我们直接定义了观测序列为一段时间内,海藻的湿度的一个序列,隐含状态为同一段时间内,天气的状态序列,我们假设一个盲人只能通过触摸判断海藻湿度来推测天气这么一个情景)

在不同天气下,观测到海藻不同的湿度的概率是不同的


隐马尔可夫模型_第1张图片

上面是一个观测矩阵,表示在不同的隐含状态下观测到不同海藻湿度的概率。
其中是在时刻t处于状态的条件下生成的概率。
这个矩阵的数据是通过经验获得的,例如你统计了很多个晴天的状态下,海藻有着不一样的湿度,通过对大量数据的一个统计,我们就可以得到晴天状态下,观测到不同湿度的海藻的概率。

当然天气之间也是存在互相转化的,但令人头疼的是,昨天的天气或者更久以前的天气会对今天的天气有所影响,这样考虑问题会使得问题变得格外复杂,因此隐马尔可夫做了最基本的假设,即当前状态只与前一个状态有关(齐次马尔可夫性假设)。同时也做观测独立性假设,所有的观测之间是互相独立的,某个观测值和生成它的状态有关系。

隐马尔可夫模型_第2张图片

对应状态转移矩阵A
隐马尔可夫模型_第3张图片

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

我们还需要序列的初始状态π,这个初始状态可以通过对多个样本的初始状态进行统计得出。

由此我们就已经定义了一个完整的隐马尔可夫模型,该模型由观测序列、状态序列、以及初始状态概率向量ππ、状态转移概率矩阵AA和观测概率矩阵BB,其中后三个为隐马尔可夫模型的参数一般用一个三元组表示。即

隐马尔可夫三个基本问题

概率计算问题:给定模型参数和观测序列,计算出现某个观测序列的概率
预测问题:给定模型参数和观测序列,求最有可能的状态序列
学习问题:给定观测序列和状态序列,得到模型参数

概率计算问题主要用到了前向算法、后向算法:

隐马尔可夫模型_第4张图片
前向算法.jpg

隐马尔可夫模型_第5张图片
后向算法.jpg

预测问题主要用到了维特比算法。

学习问题主要用到了Baum-Welch算法。
未完待续。。。

你可能感兴趣的:(隐马尔可夫模型)