Fuck me on GayHub

隐马尔科夫模型介绍

这篇文章主要是阐述什么是HMM–隐马尔科夫模型。通过具体的例子来解释其应用。为了学习HMM模型,我参看了许多文章,书籍论文。觉得这些东西都太学术化了。我是数学系的学生,发现周围师兄老师学生都喜欢用纯数学概念理论公式给人讲道理,不是说了吗,

一个数学公式吓走一半读者

一个定理引理证明推导使你觉得自己就是个傻子

数学出身的人做大数据机器学习相关领域就是把数学看的太重了,觉得数学无所不能,数学太重要了。我十分佩服吴军博士的科研作风,其书籍《数学之美》就很通俗易懂。还有就是像A Programmer’s Guide To Data Mining这类资料。

这篇文章不会十分深入公式的推导,定理引理的证明,只是通过通俗的语言阐释什么是HMM,能用来做什么?

历史背景

其实呢,从概率论开始,人们研究的对象基本都是关于随机变量X的概率分布问题,所以在概率论这门课程中,我们主要学习的是关于随机变量X的离散,连续分布,边缘分布,条件分布等一些东西。对于离散的一般使用对各个点求和的方法,对于连续的一般使用我们学习过的微积分处理。

但是,若你仔细想一下,概率论所研究的随机变量不与时间有关系。如伯努力实验,根本就没有时间的概念。但是,现实生活中所出现的事件有许多是与时间相关联的。如一个人一天的生活状态是与时间有关联的,早上7点起床,12点吃饭等。

若使用概率论的方法研究一个人一天的活动,当然可以,只是误差大,精确度不那么高而已。例如,使用变量X表示一个人所处的状态(起床,吃饭,学习,长厕所,洗碗,锻炼,洗澡等),那么就对应着X有个概率分布P(X),若你想知道上厕所这个状态的概率,只要将这个状态带入到概率分布P(X)中去,查找或者计算出对应的概率即可。

但是从常识我们可以知道或者总结出,一个人上厕所的状态与其它状态是有关联的,有一个先后的时序关系。如,一般上厕所会发生在早上刚起床后,或者吃完饭后,或者睡觉之前。这里有了一个先后关系,在t时刻干什么,可能影响到t+1时刻所做的事情,所以后一时刻的状态依赖与前一时刻的状态。而在概率论方法中,对于一天人的活动状态就没有考虑状态之间的时序关系。

所以啊,那些数学家们就在想如何考虑时序性呢,慢慢的就有了随机过程这个新的领域。随机过程就是考虑到时间的条件下,随机变量X的概率分布问题,即时刻t的状态X(t)的概率分布依赖与时刻t-1的状态X(t-1)及之前所有状态。使用概率公式表达即为:

1
EQ1: P(X(t)|X(t-1), X(t-2), ..., X(1))

这样考虑这个问题,就明显准确多了。但还不是绝对准确。这种从无时间观念到有时间观念,可是十九实际概率论到随机过程的一个质的飞跃。

但是别高兴太早,因为仔细分析下_EQ1_,你会发现其计算并不简单,要计算t时刻的概率分布,就得知道前t-1个时刻的状态概率。为了解决这个问题,苏联数学家Markov认为当前的状态只与最近的状态相关,而不是与之前所有的状态相关,而这个_认为_就是Markov假设。所以经过Markov假设,_EQ1_变为:

1
EQ2: P(X(t)|X(t-1), X(t-2), X(t-k)), k = {1, ... t-1}

我们不妨假设在厉害点,即时刻t的状态只依赖与前一个时刻t-1的状态,这就是一阶Markov过程的假设。那么_EQ2_就可以简化成:

1
EQ3: P(X(t)|X(t-1))

从三个公式的变化可以看出,计算是愈来愈简单,但是精确度也在下降。但这至少也是个近似求解,相比与传统概率论的解法还是精确不少。

HMM 隐马尔科夫模型

从前面的历史背景中,你应该了解到从概率论到随机过程到马尔科夫过程对同一个问题的解释。但是什么是隐马尔科夫模型呢?

为了说明HMM,我们先从实际的问题着手。在自然语言处理中或者语音识别中有一种技术叫做词性标注,即Part of speech tagging,简称POS。词性标注指给定一段英文句子,对于句子中的每个单词,标注其词性,如名词,动词,形容词等等。当然,如果你有的是时间和精力,那么可以手动标注,阅读句子,然后标注每个单词的词性。但是在NLP中,通常要处理的预料非常之庞大,所以需要计算机能快速自动的帮我们做好这个词性标注的工作。例如,对于句子:

1
S = (s1, s2, ..., sn), 其中si是组成句子S的单词

我们要找出句子S对应的词性标注序列:

1
O = (o1, o2, ..., on), 其中oi是对应的词性

但是,对于词性标注的数据集,我们一般只能从中得出可以观测到的单词序列S,而对于单词序列所对应的词性序列O,我们并不知道,暂且说是隐藏的。

从上面的举例我们可以看出,不可直接观测的隐藏序列O之间是相互依赖的,至少现在时刻的oi依赖与前面的状态oi-1,这是显而易见的,因为一般来说动词的后面通常是名词或者副词。所以这个过程我们可以使用Markov过程模拟,又因为序列O是隐藏的不可直接观测得出的,所以在这个实际问题中,Markov过程就称作隐马尔科夫过程。

总结

这篇文章先说到这里,完整的大概理解隐马尔科夫过程一篇文章也说不完,这里只是讲解最基本的背景及概念。要理解HMM的三个主要问题,请参考后续文章。

参考资料

数学之美 - 吴军 - 隐马尔科夫模型

统计学习方法 - 李航 - 隐马尔科夫模型

HMM学习最佳范例一:介绍 - 52nlp

HMM学习最佳范例二:生成模式 - 52nlp

POS - Stanford NLP