一. 状态估计(state estimation)

状态估计根据可获取的量测数据估算动态系统内部状态的方法。

贝叶斯滤波也就是在已知观测

java贝叶斯滤波算法纠偏_概率密度函数

和可选的控制输入

java贝叶斯滤波算法纠偏_概率分布_02

的概率分布下,估计出的状态

java贝叶斯滤波算法纠偏_概率密度函数_03

概率分布。状态随着时间变化,我们将时间设定为离散的,即

java贝叶斯滤波算法纠偏_贝叶斯公式_04

,相对应的,我们的观测为

java贝叶斯滤波算法纠偏_贝叶斯公式_05

,控制输入为

java贝叶斯滤波算法纠偏_概率密度函数_06

,状态

java贝叶斯滤波算法纠偏_概率密度函数_07

(

java贝叶斯滤波算法纠偏_概率分布_08

为初始状态)

 

二、马尔可夫假设(Markov Assumption)

                               

java贝叶斯滤波算法纠偏_贝叶斯公式_09

隐马尔可夫模型(Hidden Markov Model; 缩写:HMM)的两个基本假设:

1. 齐次马尔可夫假设

简单来说,就是当前状态仅取决于先前的状态和当前输入。

比如某个人在骑自行车,那么他下一刻的速度仅仅取决于当前的速度和下一刻他蹬了多大力气,与他昨天骑自行车到哪条道路把车停在哪里都无关。或者说他当前的速度仅仅取决于上一刻的速度和当前他蹬了多大力气。

我们把时间分为3个点:上一刻(t-1)、现在(t)、下一刻(t+1),

那么根据马尔可夫假设,现在的状态

java贝叶斯滤波算法纠偏_概率密度函数_03

仅仅取决于上一刻的状态

java贝叶斯滤波算法纠偏_概率分布_11

和当前的控制输入

java贝叶斯滤波算法纠偏_概率分布_02

,下一刻的状态

java贝叶斯滤波算法纠偏_概率分布_13

仅仅取决于现在的状态

java贝叶斯滤波算法纠偏_概率密度函数_03

和下一刻的控制输入

java贝叶斯滤波算法纠偏_概率密度函数_15

。          

java贝叶斯滤波算法纠偏_概率密度函数_16

这里的

java贝叶斯滤波算法纠偏_概率分布_17

其实说的是条件概率,意思是

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_18


java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_19

这一堆条件下发生的概率,等价

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_18


java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_21

条件下发生的概率。

 

2. 观测独立假设

是指任一时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关。

          

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_22

同样地,这里的

java贝叶斯滤波算法纠偏_贝叶斯公式_23

指的也是条件概率,意思是

java贝叶斯滤波算法纠偏_贝叶斯公式_24


java贝叶斯滤波算法纠偏_贝叶斯公式_25

这一堆条件下发生的概率,等价

java贝叶斯滤波算法纠偏_贝叶斯公式_24


java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_18

条件下发生的概率。

 

这两个假设非常重要,其实我们可以简单理解其为化简,把繁杂的公式进行了极大的简化。根据马尔科夫假设,我们才能推导出递归贝叶斯的更新公式。

 

三、贝叶斯滤波算法的数学推导

1. 贝叶斯公式

        

java贝叶斯滤波算法纠偏_概率分布_28

顺便推导一下多条件下的贝叶斯公式,后面的推导需要使用到这一个结论,

        

java贝叶斯滤波算法纠偏_概率密度函数_29

                       

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_30

                       

java贝叶斯滤波算法纠偏_概率密度函数_31

                       

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_32

                       

java贝叶斯滤波算法纠偏_贝叶斯公式_33

                       

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_34

                       

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_35

                       

java贝叶斯滤波算法纠偏_贝叶斯公式_36

 

2. 根据贝叶斯公式进行推导贝叶斯滤波:


java贝叶斯滤波算法纠偏_概率分布_37


java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_38

条件下

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_18

的概率密度函数,即:        

java贝叶斯滤波算法纠偏_贝叶斯公式_40


java贝叶斯滤波算法纠偏_贝叶斯公式_41

看成一个整体,那么

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_42

,根据我们上面的多条件下的贝叶斯公式进行展开可得:        

java贝叶斯滤波算法纠偏_概率密度函数_43

 

java贝叶斯滤波算法纠偏_概率密度函数_44

根据观测独立假设,

java贝叶斯滤波算法纠偏_贝叶斯公式_45


java贝叶斯滤波算法纠偏_贝叶斯公式_24

只依赖于t时刻的马尔科夫链的状态

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_18

,可得:                                                       

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_48

根据全概率公式,或者说是边缘概率密度函数,此处我们把

看成是两个二维随机变量,求

java贝叶斯滤波算法纠偏_概率密度函数_49

也就是求边缘概率密度函数了,可得:                                                       

java贝叶斯滤波算法纠偏_贝叶斯公式_50

根据齐次马尔可夫假设,

java贝叶斯滤波算法纠偏_概率密度函数_51


java贝叶斯滤波算法纠偏_概率密度函数_03

仅仅取决于t-1时刻的状态

java贝叶斯滤波算法纠偏_概率分布_11

和当前t时刻控制输入

java贝叶斯滤波算法纠偏_概率分布_02

,可得:                                                       

java贝叶斯滤波算法纠偏_概率分布_55

根据齐次马尔可夫假设,我们观察一下

java贝叶斯滤波算法纠偏_概率密度函数_56

中,

java贝叶斯滤波算法纠偏_概率分布_11

仅仅取决于t-2时刻的状态

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_58

和当前t-1时刻控制输入

java贝叶斯滤波算法纠偏_概率密度函数_59

,与

java贝叶斯滤波算法纠偏_概率分布_02

无关,可得:                                                       

java贝叶斯滤波算法纠偏_概率分布_61

仔细观察

java贝叶斯滤波算法纠偏_概率分布_62

,会发现这个式子就等于

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_63

,所以原式等于:                                                       

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_64

至此,贝叶斯滤波推导完毕:

 

        

式中

java贝叶斯滤波算法纠偏_贝叶斯公式_65

为后面所有项的广义积分的倒数,即

 

四、 先验概率、后验概率

        

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_66

书本上将

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_67

定义为后验概率(posterior)指某件事已经发生,想要计算这件事发生的原因是由某个因素引起的概率,是根据结果推测原因

java贝叶斯滤波算法纠偏_概率密度函数_68

定义为先验概率(prior):指根据以往经验和分析。在实验或采样前就可以得到的概率。

java贝叶斯滤波算法纠偏_概率分布_69

定义为似然概率(likelihood):是根据原因推测该原因导致结果发生的概率

java贝叶斯滤波算法纠偏_java贝叶斯滤波算法纠偏_70

(evidence):指某件事发生的概率,概率上讲就是求边缘密度。

 

现在我们生活的地方偶尔可见一些流浪汪,它们短暂的一生中,可能会遇到好人给它们食物吃,也可能遇到普通路人,不理它没给它吃的。

假设在它们的世界中这几类人占比:

好人,喂吃的(占总数20%);

路人,无视(占总数80%)。

流浪汪小白总结了一个规律,那就是:

好人里面,大部分会对它微笑地招手,占90%,只有10%是面无表情的。

路人里面,大部分都是面无表情的,占85%,只有15%会对它微笑地招手

 

这一天,刚满三周岁的小白想着今天要能遇到好人的话,生日鸡腿说不定就有着落了。这时候它看到一个微笑地招手的人走过来,小白开启了超算模式进行计算这个是好人的概率:

   p(好人 | 微笑地招手)

= p(微笑地招手 | 好人)*p(好人) / p(微笑地招手)

= p(微笑地招手 | 好人)*p(好人) / (p(微笑地招手 | 好人)*p(好人) + p(微笑地招手 | 路人)*p(路人))

= 90%*20% / (90%*20% + 15%*80%)

= 60%

小白很开心,摇着尾巴屁颠屁颠地走了过去,毕竟它有六成把握对面这个人会给他鸡腿,可没想到那人竟然走开了没给他鸡腿!小白感到很失落,转身走向下一个街道,眼角余光瞄向旁边一个面无表情的人,又开启了超算模式:

   p(好人 | 面无表情)

= p(面无表情 | 好人)*p(好人) / p(面无表情)

= p(面无表情 | 好人)*p(好人) / (p(面无表情 | 好人)*p(好人) + p(面无表情 | 路人)*p(路人))

= 10%*20% / (10%*20%+85%*80%)

= 2.86%

小白耸拉着耳朵,它知道这个面无表情的人是好人的概率只有2.86%,基本没什么希望了。突然间小白被一个东西砸了一下,定睛一看竟然是鸡腿,原来这个鸡腿是那个面无表情的人扔过来的,小白很开心,毕竟2.86%的概率都被它遇到了,简直是踩了自己shit运,运气真是太好了!

 

表达有限,希望通过简单例子解释先验、后验,说不清的地方还请见谅。