浅谈隐马尔可夫模型(HMM)

· · 个人记录

前置芝士

  1. 最最最基本的古典概率

0x00 简介

隐马尔可夫模型(Hidden Markov Model;缩写:HMM)或称作隐性马尔可夫模型,是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。
From wikipedia

是不是一脸懵逼QAQ

0x01 真·介绍

举个栗子:这里有三个骰子,分别是:
有四个面的(1,2,3,4),简称S4,每个面出现的概率是\frac 1 4;
有六个面的(1,2,3,4,5,6),简称S6,每个面出现的概率是\frac 1 6
有八个面的(1,2,3,4,5,6,7,8),简称S8,每个面出现的概率是\frac 1 8
接下来,我们开始掷骰子。每一次先从三个骰子里拿一个,拿到每个骰子的概率是\frac 1 3;假设我们投出的数分别是:7 1 3 5 8 2 3 5 2 4。这串数字叫做可见状态链。

但是在隐马尔可夫模型中,我们不仅仅有这么一串可见状态链,还有一串隐含状态链。
在这个例子里,这串隐含状态链就是你用的骰子的序列。比如,隐含状态链有可能是:S8 S4 S6 S6 S8 S4 S6 S6 S4 S8 通常来说,HMM中的马尔可夫链指的就是隐含状态链,因为隐含状态(骰子)之间存在一个叫转换概率 _ (transition probability)_的东西。
比如说,在S8之后出现S4,S6,S8的概率都为\frac 1 3。但实际上,这个概率是可控的,假设我们这样定义:出现S8后下一次不能出现S4,D6后面是D6的概率是0.9,是D8的概率是0.1,这样就会出现新的情况。
同样的,尽管可见状态间没有转换概率,但隐含状态和可见状态间有一种叫输出概率的东西。比如说S4产生1的输出概率是\frac 1 4,产生2,3,4的概率也是\frac 1 4.我们同样可以对输出概率进行其他定义。
比如,假设我有一个被赌场动过手脚的四面骰子,掷出来是1的概率更大,是\frac 1 2,掷出来是2,3,4,5,6的概率是\frac {1} {10}

0x02 隐马尔可夫模型的相关问题

这个问题大多用在语音识别领域,叫解码问题。这个问题有两个解法,是两个不同的答案,只不过意义不一样。第一种解法求最大似然状态路径,说通俗点呢,就是我求一串骰子序列,这串骰子序列产生观测结果的概率最大。第二种解法呢,就不是求一组骰子序列了,而是求每次掷出的骰子分别是某种骰子的概率。

看似这个问题意义不大,因为你掷出来的结果很多时候都对应了一个比较大的概率。问这个问题的目的呢,,其实是检测观察到的结果和已知的模型是否吻合。如果很多次结果都对应了比较小的概率,那么就说明我们已知的模型很有可能是错的,有人偷偷把我们的骰子给换了。

这个问题很重要,因为这是最常见的情况。很多时候我们只有可见结果,不知道HMM模型里的参数,我们需要从可见结果估计出这些参数,这是建模的一个必要步骤。

0x03 如何解决上述问题