【学习笔记】HMM统计模型

来源:互联网 发布:python mock 编辑:程序博客网 时间:2024/06/05 09:03

毕设快要选题目了,为此开始看一些研究生导师研究方向的相关文献,他的论文太高深,于是转而从一些基础类的科普性文章看起。在《计算听觉场景介绍》中遇到了HMM统计模型这个概念,于是上网搜了博客学习了一下。

“HMM:隐马尔科夫模型(Hidden Markov Model)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别”  ——引自《一文搞懂HMM(隐马尔可夫模型)》。


此文中举了两个例子来说明HMM。一个是掷骰子。有三种骰子:六面骰(D6)、四面骰(D4)、八面骰(D8)。现在我有一串骰子点数的序列,那么这串序列可以被观察到,因此叫做可见状态链。而背后的“隐含状态链”就是我掷骰子的序列,即每一次用了哪一种骰子。一般来说,HMM中说的“马尔可夫链”指的都是隐含状态链。隐含状态链中各个状态之间可以存在转换概率,如规定D4后面不能接D8,而接D4的概率是0.1,接D6的概率是0.9.这样,就改变了原本每种骰子都是1/3的选择概率。由这个问题做引子,我们可以把常见的HMM算法分为三类:

(1)已知骰子的数目(隐含状态的数量),每种骰子是什么样的(个人认为这里等价于已知输出概率,即这个骰子能输出什么样的结果的概率分布。而原作者写的是转换概率),已知掷出来的点数结果(可见状态链),去估计我掷骰子的序列;

(2)已知骰子的数目(隐含状态的数量),每种骰子是什么样的,已知掷出来的点数结果(可见状态链),求这个结果出现的概率。

(3)已知骰子的数目,观测到很多次掷出来的点数结果(可见状态链),去估计每种骰子是什么样的。

第三种情况最常见,很多时候我们就是要根据可见的结果,去拟合出一组参数,也即建模。

那么估计HMM隐含状态链的方法的思路就是最大似然的方法,个人认为维特比方法(Viterbi Algorithm)的思想其实也是最大似然,说白了就是我的隐含状态链的各个参数取什么值,才能使我观测到的结果出现的概率最大。这里原作者举出了第二个例子:根据朋友所发Twitter和他的生活习惯来推测他所处当地天气。这里,朋友所描述的他今天干了什么,是“散步”、“出去购物”、“清理房间”的哪一种,是我们所能观测到的结果,是可见状态链,而具体的天气情况则是隐含状态链,要么天晴,要么下雨,今晴明晴,今晴明雨,今雨明晴,今雨明雨描述了隐状态之间转换概率。晴天时,我干那三件事分别有个概率;雨天时,我干那三件事也分别有个概率,这就是发射概率(emission probability)。当然,根据大自然的脾气,这一天本来应该是晴天还是雨天,也有个概率,这就是起始概率(start probability)。于是,任何一个HMM模型都可以用这样一个五元组来描述:

x: hidden state

y:visiable output

p(x): start probability

x1 to x2 :transition probability

x to y :emission probability

6cbb8645gw1egs40a3bpmj208n09574o(盗一张图~)


注意,朋友发推是过去时,那些天已经过完了,天气自然是过去时,所以我们要做的是根据Twitter推测出那天的天气。这样一来,我们要计算的其实可以理解为一种联合概率。比如第一天,我们根据推文猜测:

第一天下雨的概率V[第一天][下雨] = P1(朋友去散步了;下雨了)= 下雨的起始概率 * P(朋友去散步|下雨的条件下);

同理,我们再计算:

第一天天晴的概率V[第一天][天晴] =P2(朋友去散步了;天晴)= 天晴的起始概率 * P(朋友去散步|晴天的条件下);

若P1>P2,则认为那天下雨了,反之,那天晴天。即理解为,把“天晴”或“下雨”作为参数,看看谁当参数时,我们的观测结果“朋友去散步了”的概率最大。


以此类推,我们可以推出一连几天天气是怎么样的。因为从第二天开始,对于每一种天气Y,我们都可以计算前一天的天气是X的概率*X转移到Y的概率*Y天气下朋友进行某种活动的概率,选一个最大概率对应的天气,加入到隐马尔可夫链中就可以了。


初学这个的原因是,《计算听觉场景介绍》写到“现在已有愈来愈多的研究人员意识到目前的计算机语音识别系统(以HMM统计模型为主要框架)与人类听觉系统的巨大差异”。现在还不太懂,大概是说用HMM识别出来的效果虽然不错,但是是一种空洞的无意识的计算吧,不像人脑分析那么高级。随着学习的深入,我近期会不断更新《学习笔记》这个专栏的!

*********

(图片来源:https://www.cnblogs.com/skyme/p/4651331.html#undefined)