从马尔可夫模型到隐马尔可夫模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从马尔可夫模型到隐马尔可夫模型相关的知识,希望对你有一定的参考价值。

参考技术A

马尔可夫模型个人认为这个概念应该是从 随机过程 里面提出来的,由马尔可夫过程过来的概念。实际上掌握了随机过程里面对马尔可夫过程的特殊情况:离散参数离散状态的马尔可夫链的数学运算的话。就能够很好解决马尔可夫模型上面的计算问题,包括隐马尔科夫模型。讲马尔可夫模型以及过程重点在于其满足的性质-马尔可夫性。

随机过程:
现实中时常出现,某个事物满足一定的随机分布,但是其随机分布会随着时间的变化而变化。我们假设其在时刻 符合随机分布 并且用随机变量 来表示。假设 。但是在时间 的时候就符合随机分布 并且用随机变量 来表示。假设 。也就是说某个事物的某个特征会随着时间的变化其对应的分布也会发生变化。这样一个总体的过程,称之为 随机过程。

具体例子:
灯泡寿命问题,灯泡其实在每个时间点上都有一定的可能性会损坏,在这个时间点上损坏的可能性符合一个具体的正态分布(其 是确定的),而随着时间的久远,灯泡损坏的可能性就变大了。所以在之后的某个时间点上灯泡损坏的可能性可能就符合另外一个具体的正态分布(其 就和先前不一样了,会有变坏的趋势)。灯泡损坏在传统的概率论中也是一个经典例子,可能传统的概率论会认为灯泡的寿命长短符合一个随机分布,并且用一个随机变量来表示,我们研究这个分布的特征。这里和传统的概率论中不一样,可以发现的是,引入了随机过程,可以对随机现象更加深入彻底地描述和研究。

定义随机过程中的一些量。
参数:也就是上述的时间,如果是和时间有关,往往叫做时间序列。但是很多的现象研究不是和时间相关的。

状态:也就是上述的随着时间变化的随机变量。

马尔可夫过程:满足马尔科夫性的随机过程。

以后再解释
马尔可夫性:
马尔可夫链:

马尔可夫模型和上述的关系。

具体讲一下 隐马尔可夫模型。

和普通的马尔可夫不一样,马尔可夫模型是可以确定状态序列的。也就是说序列上的每个项的分布是怎么样的是已知的。而隐马尔可夫模型是连序列上的每个项的是什么分布都不能够知道,都是随机的。

对于这样的一个随机模型。
经常要解决三个基本问题:
1). 给定 和 ,求解 。 又叫作 计算问题。
2). 给定 和 ,求解一个状态转换序列 ,使得最优可能产生上面的序列。又叫做估计问题。
3). 在模型参数(A或者B)未知或者参数不准确的情况下,由 来调整参数。又叫做训练问题。

状态一定是按着产生了部分观察序列来的。考虑前缀。 表示处理到了n,观察序列到n为止都是答案的概率。但是不好转移,转移的时候要枚举前后隐藏状态,考虑把隐藏状态也表示出来。 表示处理到了n,并且第n个状态为j的概率。
范围:
结果:
初始化:
转移:

知道 和 ,求Q,状态序列,使得产生 的可能性最大。

定义:

这个函数的含义是:
模型在时刻t处于状态i,观察到 的最佳状态转换序列的概率。
从而有了转移方程:

而 就是
因此 的转移过程构成了一个图,而Q就是上面的最优路径。

利用 观察数据进行对模型参数 或者 或者 进行预测和修正,训练问题,又可以叫做预测问题。

并且这个问题其实是带有隐变量的最大似乎估计,也就是EM算法。
直接讲EM,用数学角度来引入 或者 用递归式来求解含有隐变量的参数估计 都是可以的,后者会比较清楚。
但是课上老师给出了另外一种比较好的解释:
考虑第三个问题,实际上应该分两种情况。
1:带指导的参数学习。
给出的数据是这样的:
状态/观察数据。
硬币中的例子就是
H/1 H/1 T/1 T/2 H/3 T/3 T/2 H/1 T/2 H/3 H/3 H/1
其实当拥有了数据 状态/观察数据 是可以直接对参数进行估计的。
假设是齐次的(一般也是齐次的,概率只和状态有关,和时间关系不大,放在词句中就是词语所在的句子的部位关系不是很大,而是上下文内容关系比较大。),

考虑aij 指的是在状态i和状态j的转移概率。
可以直接对上面2个2个统计进行参数估计。
考虑bi(o_j)也就是状态为i输出为o_j的。
一个一个枚举来即可。
考虑pi_i。也就是初始状态。
一个一个枚举状态即可。

带有指导的是有缺点的:
数据上不可行,状态这样的数据其实都是人工标注的。
数据量要求比较大。

但是在NLP中这个方法是很重要的。因为效果比较好。

2:不带指导的参数学习
数据上只给出了 观察序列,没有状态序列。

实际上1中就出了答案。没有状态序列,我们就枚举状态序列。
比如上述。如果观察出来了
1 2 2
那么我们就考虑以下
1 2 2
HHH
HHT
HTH
HTT
THH
THT
TTH
TTT
所有情况。
所以就产生了
H/1 H/2 H/2
H/1 H/2 T/2
....
然后分组进行统计参数估计即可。

但是这里有两个问题:
1:状态太多了。N^T。
2:给每个状态的权重是一样的。不是很科学。(实际上还行,如果使用熵最大原理。)
那么怎么办?解决2考虑给不同状态加权重,那么要有一个先验的的知识:
咱们先给出先验的 模型参数。
那么就可以计算P(Q|O,人)P(Q,O|人)这样的东西了。
明显可以用P(Q|O,人)作为一个路径序列的权重。
但是这样计算的时候,路径序列很长。并且转移路径还是N^T条。
不可行。

避开对路径的考虑。考虑参数abt最多只有涉及两个时间点的。
我们如果只关注两个时间点之间的状态。那么就可以变成二维的。
使Q不是一个路径的。而是只是两个时间点之间的状态。
q_t = i q_t+1 = j 。把这个概率计算出来的话。就能直接对aij这样的进行估计了。
(实际上只是换了一种计数方式,就减少了问题规模,因为咱们关注的也只是路径上两个点两个点之间的。)

由此引出Baum_Welch算法:

定义以下:

这样就能对参数们进行评估了。有以下:

这样只要挑一个满足条件的初始值,然后迭代求解即可。

从马尔可夫模型(Markov model)到卡尔曼滤波(Kalman filtering)

      卡尔曼滤波(Kalman Filtering)是一个知名度颇高的数据处理方法(至少名字挺咋呼),本文尝试提供一个对它的简单理解 :)

马尔可夫模型(Markov model)

 

 

 

 

        马尔可夫模型是一个研究离散时间随机过程(Xi, i = 1, 2, ,3 ,4 ...)的方法。它的主要思想是将各个事件Xi的互相影响区分开:假设每一个事件xi只与前一次发生的事件Xi-1直接相关,而与再之前的事件Xi-2, Xi-3等不直接产生关系。用条件概率的形式表达就是:

P(Xi | X0, X1, X2...Xi-2, Xi-1) = P(Xi | Xi-1) (对于判断Xi的状况,一旦知道Xi-1,其余Xi-2,...X0等事件就不能再提供额外的信息)

        这种简化看似太过理想(每个事件仅直接影响下一个事件,而不直接影响之后的事件),但在实践中却表现颇佳,在我看来原因有二:一是在日常现象中,我们一般也默认事件的发生顺序和相关性是正联系的,而相邻事件的相关性也最大,只考虑相邻事件的互相影响抓住了事物间的主要矛盾;二是非相邻事件间不是不互相影响,而是不直接影响,他们直接的相关关系通过相邻事件依次传递下去,产生了间接的影响。

        我们遇见的很多事件,如价格涨落、气候变化等都可以用马尔可夫模型进行近似。让我们从反面来理解,我举一个人造的不适合这个模型的例子:两个独立的随机事件Ai, Bi, 他们的结果混杂在了一起,如a1, b1, b2, a2, a3, b3... 这种情况下马尔可夫模型就很难进行分析。不过对于这种极端的例子,其他的分析方法恐怕也不好发挥作用,因为我们常见的时间序列类型的分析方法,大多都基于马尔可夫模型,或在其中进行一定的修改。

        因为事件间的相关关系是挨个逐次传播,像链式进行,这个模型又被称为马尔可夫链(Markov chain)。这种只与前一个事件相关的性质被成为马尔可夫性质。前一个事件与后一个事件的关联关系称为状态转移。

隐马尔可夫模型(Hidden Markov model)

 

 

        隐马尔可夫模型是马尔可夫模型的一个深入发展:考虑到了观察和测量中误差的影响。形象的理解,我们可以看作有一个表世界和里世界,里世界就是上面提到的马尔可夫模型(理论上的离散事件Xi),而表世界里的就是对这个模型的一次次观测(Yi)。观测的结果是里世界的一个反映。这里的假设是每次观测结果Yi只与里世界对应的事件Xi有关。用条件概率来表达就是:

P(Yi | X0, X1, ...Xi, Xi+1, ...) = P(Yi | Xi) 

        还有一个有用的结论是P(... Yi-1, Yi, Yi+1,... | Xi) = P(Yi | ... Yi-1, Yi+1,... Xi) * P(... Yi-1, Yi+1,... | Xi) = P(Yi | Xi) * P(... Yi-1, Yi+1,... | Xi),即Yi相对于其他的观测值,关于Xi条件独立。

卡尔曼滤波(Kalman filtering)

 

 

        卡尔曼滤波是一种数据处理方法,因为这种方法最早用来设计处理信号中的噪声,起到滤波改善信号的作用,所以名字中带有filter,也就是过滤噪声的意思。

        卡尔曼滤波的方法建立在隐马尔可夫模型上,并带有更强的假设:里世界中各事件Xi间的状态转移为线性关系(即Xi的状态可由Xi-1的状态经线性组合得到),可以附带一个正态(高斯)噪音。从里世界Xi到表世界Yi的状态转移也要求是线性的,可以带一个正态(高斯)误差。用公式表达就是下面这样:

xi = Axi-1 + qi-1

yi = Hxi + ri

        其中A和H可以是矩阵(对应xi,yi为多维向量),也可以是常数(对应xi,yi为一维)。A和H代表的,就是Xi间的状态转移关系和Xi与Yi间的状态转移关系。如果要应用卡尔曼滤波,一般要求A和H,即转移关系,也就是理论模型和观测模型已知。

        qi和ri按理论要求是均值为0的正态噪音,方差一般通过估量得到。其中ri是表世界测量过程中产生的噪声,qi是里世界状态转移中的不确定性。下面我们可以看到,卡尔曼滤波是比较稳健的方法,即使qi和ri的方差估量不准确(甚至在某些情况下不满足正态分布),也往往可以收敛到正确的结果。这在一定程度上是因为卡尔曼滤波采用了类似移动平均的方法,而求平均的方法对均值为0的噪音,排除效果比较好,即使对噪音的方差或高阶矩没有好的认识。

        卡尔曼滤波的公式长这样:

xi = Axi-1 + Ki * (yi - HAxi-1) (式一)= (1 - KiH) Axi-1+ Ki * yi (式二)

        式一的形象化理解是,我先用A乘以前一项Xi-1得到一个对Xi的大致估计Axi-1,然后我再用观测值yi与估计Axi-1的差值乘一个系数,作为对大致估计误差的补偿,综合这两项得到最终估计xi。

        式二的形象化理解式,我用大致估计Axi-1和通过观测值yi反推得到实际值(Ki * yi ~ KiH * xi)做一个加权平均,一个系数为KiH,一个系数为1-KiH,平均得到最终估计。

        这两个理解本质上是等价的。因此卡尔曼滤波的实际含义就是在对里世界里的模型有一定认识的前提下,通过对系列观测数据的综合分析,滤去观测中可能存在的噪音和系统状态转移可能产生的不稳定性,得到一个相对稳定的理论值。而这也就是滤波的含义。

        上面的式子里有一个Ki,称为每一个事件的卡尔曼增益。从上面式二的形象化理解可以看出,这个增益体现的就是新的观测值能给我对实际值的估计带来多少新的信息。

Ki = Pi * HT * (H Pi HT + R)-1

Pi = A Ci-1 AT + Q

Ci = (I - Ki H) Pi

        计算Ki的公式相对较为复杂,还涉及另外两个变量Pi, 预测协方差(predict covariance),以及Ci,校正协方差(correct covariance)。其中Q、R是对噪音qi和ri的估计值。

        下面我们通过一个简单的一维例子来得到一个对这个方法更直观的理解:

i  0 1 2 3 4 5 6 7 8 9 10
xi 5.8 6.46 7.63 9.08 10.29 11.7 13.51 15.64 17.61 19.59 22.46
yi  7.18 8.323  8.19  10.69   11.9 13.08  15.94  16.88 20.19   20.84  25.20

        上面的表格中,xi间的状态转移关系为xi = 1.1 * xi-1 + qi-1,其中qi是[0, 1]间的均匀分布。

        xi到yi的转移关系是yi = 1.05 * xi + ri,其中ri是[0, 2]间的均匀分布。

        因为是一维的例子,所有矩阵均为一维,退化为一个数。A = AT = 1.1, H = HT =1.05

        可以看到这里的均布噪声和要求的正态噪声有一定区别,但我们可以看到卡尔曼滤波依然能取得不错的效果。

        暂估计Q = R = 1

i  0 1 2 3 4 5 6 7 8 9 10
xi(理论值) 5.8 6.46 7.63 9.08 10.29 11.7 13.51 15.64 17.61 19.59 22.46
xi(计算值) 3.59 6.47  7.56  9.54  11.04 12.35 14.63  16.08 18.7   20.1  23.35
ki 0.5 0.6 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0.62
pi 1 1.58 1.72 1.72 1.72 1.72 1.72 1.72 1.72 1.72 1.72
ci 0.48 0.58 1.59 0.59 0.59 0.59 0.59 0.59 0.59 0.59 0.59

        从例子中可以看到,xi的计算值经过少量迭代即迅速逼近计算值,说明只要模型及状态转移符合要求,即使噪声估计不很准确,一样能得到稳健及有效的估计结果。

简单总结

        卡尔曼滤波是在满足以下3个条件(1,2较为重要,3在一定程度上可放松)时的,一种稳健有效的去除系统和测量误差的数据处理方法。:

1.隐马尔可夫模型;2.状态转移为线性;3.系统不确定性和测量误差满足均值为0的正态分布;

 

以上是关于从马尔可夫模型到隐马尔可夫模型的主要内容,如果未能解决你的问题,请参考以下文章

隐马尔可夫模型

02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题

隐马尔可夫模型

如何用简单易懂的例子解释隐马尔可夫模型

隐马尔科夫模型(HMM)

自然语言处理隐马尔可夫模型Ⅰ马尔可夫模型