更高更妙的统计学习方法——隐马尔科夫模型(A)
引言
隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是一种经典的机器学习模型,是可用于标注问题的统计学模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。随着深度学习的兴起,如RNN类神经网络可以一定程度的解决HMM模型所解决的问题,HMM在一些问题上已不再是首选算法,但是作为一个经典的模型,学习HMM的模型算法,对提高我们的建模能力以及算法思路有一定的帮助。
在了解HMM模型之前,我们先需要了解什么样的问题(场景)需要使用HMM模型。使用HMM模型时我们的问题一般有这两个特征:
我们的问题是基于序列的,比如时间序列,或者状态序列。
我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。
有了这两个特征,那么这个问题一般可以用HMM模型来尝试解决。举个例子,假设你有一个住得很远的朋友,他每天跟你打电话告诉你他那天做了什么。你的朋友仅仅对三种活动感兴趣:公园散步,购物以及清理房间。他选择做什么事情只凭天气。你对于他所住的地方的天气情况并不了解,但是你知道总的趋势。在他告诉你每天所做的事情基础上,你想要猜测他所在地的天气情况。
你认为天气的运行就像一个马尔可夫链。其有两个状态“雨”和“晴”,但是你无法直接观察它们,也就是说,它们对于你是隐藏的。每天,你的朋友有一定的概率进行下列活动:“散步”、“购物”、“清理”。因为你朋友告诉你他的活动,所以这些活动就是你的观察数据。这整个系统就是一个隐马尔可夫模型(HMM)。
马尔科夫过程
想要了解隐马尔科夫模型,第一步需要先了解马尔科夫过程。
在概率论及统计学中,马尔可夫过程(Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名。马尔可夫过程是不具备记忆特质的。换言之,马尔可夫过程的条件概率仅仅与系统的当前状态相关,而与它的过去历史或未来状态,都是独立、不相关的,即是变量X在n时刻的值):
时间和状态都离散的马尔可夫过程通常被称为马尔可夫链。
隐马尔科夫模型
隐马尔可夫模型是用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。这样状态的转换概率便是全部的参数。而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量则是可见的。每一个状态在可能输出的符号上都有一概率分布。因此输出符号的序列能够透露出状态序列的一些信息。
HMM有两部分构成(如下图所示):
马尔可夫链,描述隐含状态间的转移,产生状态序列,用隐含状态转移概率矩阵A和初始状态概率矩阵Π描述;
观测随机过程,产生观察值序列,由观察概率矩阵B描述。
如上图所示,HMM的完整参数集合可以用一个五元组来表示
N代表HMM的隐含状态的个数,用表示 t 时刻所处的状态,的取值范围为,则状态序列记为
M代表观察值的个数,用表示t时刻的观察值,的取值范围为,则观察序列记为
代表初始化状态概率矩阵,即状态序列Q在初始时刻 t=1时所处的状态为的概率:
代表状态转移概率矩阵,当前时刻所处的状态只与前一时刻所处的状态有关,而与其他时刻的状态无关:代表观察概率矩阵:
隐马尔科夫模型的三个基本问题
评估问题(概率计算问题)
评估问题即为识别问题,在给定观察值序列O的条件下,对每个模型计算产生当前观察值序列O的条件概率,对比各个模型的条件概率,概率最大的模型即认定为识别结果。
学习问题
学习问题即HMM训练问题,给定样本的观察值序列O,对模型的参数不断地重估。通过迭代运算,对HMM模型的参数不断调整,使得产生观察值序列O的概率取得最大,即所求得的最优模型为达到最大值时的。
预测问题(解码问题)
解码问题是解决在给定模型
和观察值序列O的条件下,寻找最有可能产生观察值序O的隐含状态序列,即寻找最优的状态序列以最好地解释观察值序列。
总结
本次博文介绍了隐马尔科夫模型的基本概念和其基本问题,之后的博文将陆续通过例子和实战更加深入介绍隐马尔科夫模型,敬请大家关注。
- 点赞
- 收藏
- 关注作者
评论(0)