神摸是隐马尔可夫模型(Hidden Markov Model)

举个栗子

隐马尔可夫模型可以描述很多场景。

里面大概有这么些东西:

  • 一个可以观测到的可见状态链$X_0,\dots,X_{n-1},X_n$
  • 一个隐含状态链$Y_0,\dots,Y_{n-1},Y_n$
  • 几个隐含状态和它们之间的转换概率
  • 从隐含状态到可见状态的发射概率

一个不好理解的例子

一个不好理解的例子是,我们看到了一个序列[1, 2, 5, 7, 2, 3, 2],隐马尔可夫模型认为它有一个对应的隐含序列[a, c, b, c, a, c, b],
我们观测到的序列,是在隐含序列以这样的顺序发生时,其中的每一个隐含状态以一个概率触发了对应的可见状态,而隐含状态之间的转换也有对应的概率。这里隐含状态的数量有$4$个,对应的转换概率我们没有说。

一个好一些的例子

我们举一个好理解的例子是,一个人最近几天做的主要事情是: 逛街,浇花,在家看电视,散步,浇花,散步,在家看电视。

我们知道的是不同的天气下,人干出这些事情的概率是不一样的,所以我们可能会对一个隐含状态链感兴趣,也就是这几天的天气。(我们不知道或者忘记了天气,只知道这个人干了什么)

天晴的时候可能会有比较大的概率去浇花逛街散步,下雨的时候可能就是在家看电视,阴天又是另一个情况。

假设我们已经知道了,隐含状态有3种: 阴天、雨天、晴天。

我们也知道这三种天气下,一个人干这些事情的概率,这个就是从隐含状态到可见状态的发射概率。

我们还观察了天气变化的规律,统计出了不同的天气互相转换的概率(假设事情就是这样的),那么这个就是隐含状态的转换概率。比如雨天有$50\%$的概率变成雨天,有$20\%$的概率变成晴天之类的。

当然天气的互相转换在这里是被简化过的,如果我们再加上一点复杂的东西,这个模型就更复杂了,暂时不考虑这个。

那么隐马尔可夫模型就是描述这样的一个模型,其中的隐含状态链又称为马尔可夫链。

在这个模型中主要关心的问题如下:

HMM中的三种问题

已知隐含状态数量,转换概率和可见状态链,求隐含状态链

我们现在知道了不同天气的转换概率,和不同天气下人做不同事情的概率,现在看到一个人这几天做了这些事情,想知道这几天的天气最可能是怎么样的。

(然后我们会用一个$\mathrm{Viterbi}$算法来解决这个问题,如果有人想穷举并且感觉会炸然后毫无头绪的话可以了解一下这个做法)

当然我们是求不同情况产生这一个可见状态序列的概率,取其中最大的一个。

已知隐含状态数量,转换概率和可见状态链,求这个结果的概率

我们现在知道了不同天气的转换概率,和不同天气下人做不同事情的概率,现在看到一个人这几天做了这些事情,开始想:总觉得我们的这个天气转换的概率是不对的,或者不同天气下人做这些事情的概率是有问题的。那么我们可以看看在我们已知的模型下,这个人可能做出这个结果的概率。如果这个概率很小,还有其他结果的概率比它大,甚至大得多,很可能是我们的模型出了问题。

这个问题可能在这个例子中没那么有必要,假设我们是在一个赌场赌博,怀疑人家的骰子有问题的时候也许就可以用上了。

已知隐含状态数量和可见状态链,求转换概率

这个问题是…我们知道了有几个天气,不同天气下人做一些事情的概率,现在想知道天气之间互相转换的概率最可能是怎么样的…

这个问题有、复杂,也就是我们要看通过观测的序列来完善我们的模型。