从贝叶斯滤波到卡尔曼滤波(一)

这要从随机试验开始谈起,毕竟这是基于概率论和数理统计的

首先,什么是随机试验,有哪些特点?

随机试验(random experiment)是在相同条件下对某随机现象进行的大量重复观测。概率统计需要对某随机现象进行大量的重复观测,或在相同条件下重复试验,观察其结果,才能获得统计规律性的认识。任何随机试验都包含试验条件和试验结果两个方面。试验条件必须相同,而试验结果具有随机性。所以,随机试验具有以下特点:

1.可重复性:试验在相同条件下可重复进行;

2.可知性:每次试验的可能结果不止一个,并且事先能明确试验所有可能的结果;

3.不确定性:进行一次试验之前不能确定哪一个结果会出现,但必然会出现结果中的一个。

具有以上三个特点的试验称为随机试验,一般用E来表示。

 说白了就是:能重复进行、结果随机且位于已知范围内

其次,什么是随机过程?

随机过程,是依赖于参数的一组随机变量的全体,参数通常是时间。随机变量是随机现象的数量表现,其取值随着偶然因素的影响而改变。例如,某商店在从时间t0到时间tK这段时间内接待顾客的人数,就是依赖于时间t的一组随机变量,即随机过程。一般来说,把一组随机变量定义为随机过程

这里我们一般选择时间t作为这个参数,那么每个时刻的值都是不确定的但又应该大概会处于某个范围内(基于猜测和数学模型方程之类的),所以可以看做是随机过程,每个时刻出现的结果都可以看做是随机变量,即X0,X1,X2,X3...Xn

最后,这些随机变量怎么统计他的值以及确定期望?

既然每个时刻的值都属于随机变量,那每个时刻的随机变量要符合某个分布律吧,要不然很难有研究的价值(一般既然是研究的某个运动过程,表面看似没有规律,但都可以通过建模让其符合某种规律的)。这样一来,我们就有了X1 ~ f1,X2 ~ f2,...,Xn ~ fn,共n个分布律。那这些分布律怎么知道呢?或许你会说不就是通过建模近似的吗,但这个显然不是我们想要的,因为建模有时候很难很符合,除非是那种预先对每个时刻都做了很多次实验然后归纳分布律,或许会相对准确。但是,这个是实时动态的,没办法让你先做无数次实验统计规律——这里恰恰体现出贝叶斯滤波的优势:属于实时滤波的,而不是要先提前做出很多实验再统计出规律的。贝叶斯滤波是这样做的:建模还是要建模的,只不过要求没有那么高——只需要结合你的以往经验、知识等做一个简单“猜测”,后面还要结合观测到的数据进行修正呢。

 

 

 这样:横向看,是随机过程中的各个时刻的随机变量X0,X1,...,Xn,是代表而非具体取值。纵向看,使我们假设的能够对各个随机变量做的随机试验,每个随机变量对应的实验都重复了m次,进而希望能统计出它对应的分布律(但实际上是无法进行的)(注意:这里,X0,X1...表示的是随机变量,而X00,X01...这种格式的表示的是具体的取值,这个在单个点的贝叶斯和多个点的贝叶斯中要格外留意)。假设现在我们想知道X0随机变量的最可能的分布律,用贝叶斯滤波该怎么做?通常我们是这样做的:

1.单个点、离散随机变量的贝叶斯滤波

我们可以以测温度为例,先只针对某一个时刻点的温度,比如说,现在是0时刻,那么0时刻的温度是一个随机变量——它的值是在已知范围内的且随机(至于重复性,我们认为只要能保证周围的环境不变就算能够重复试验,千万别纠结“它已经不是0时刻了,所以不能重复”)。贝叶斯滤波核心:主观概率+外部观测=相对客观的概率。对于0时刻的温度,其实,我们可以现根据自身的经验、感觉、分析等做一个主观猜测(建模),猜一下他可能的温度,比如,我们认为:温度是10度的概率是0.8,温度是11度的概率是0.2,即P(T=10)=0.8,P(T=11)=0.2。注意,这里的T表示的真值!!因为我们是在猜测真实温度:T猜测 = T真实。——这个概率分布就是我们根据自身经验做的一个建模(猜测),相当于我们的主观概率,也就是我们在做实验(正式测量)得到的概率,所以也叫先验概率(先于实验之前的)。但是我们知道,靠主观猜测难免不准,因此我们就需要借助温度计测一下实际温度,评估一下我们的主观概率的准确度到底如何。比如,温度计测得Tm=10.3度,和10是比较接近的。但是,我们要知道温度计测量是有误差的,要是没误差的话我们也就没必要折腾这些滤波了。这时候,我们就面临了选择:模型(猜测)和测量(温度计)相信哪一个?——两者进行融合,按方差大小分配在最终值中所占的比重。融合后的结果或者说对主观概率修正后的结果就是“相对客观的概率”即后验概率(实验之后得到的概率),对概率分布求均值,我们就用后验的均值来正式表示真值。后验概率的计算:

P(T=10|Tm=10.3)=\frac{P(Tm=10.3|T=10)P(T=10)}{P(Tm=10.3)}

这里引出了贝叶斯滤波中的三个概率:

后验概率:即P(T=10 | Tm=10.3)—— 在测量值为10.3度(测过了,实验过了)的前提下,真值T=10的概率。也就是说在做过试验后,还有多大概率确定真值是10度。或者从因果角度说:综合考虑下测量值Tm=10.3有多大概率是因为当前真值T=10而导致的(或者T=10对Tm=10.3这个结果贡献了多大程度)。总之就是,做过试验后,你还有多大把握相信你之前做的猜测(主观概率)

先验概率:即P(T=10)—— 在做实验之前你凭借经验做的猜测

似然概率:即P(Tm=10.3 | T=10)—— 在真值为10的情况下,温度计测出的值Tm=10.3的概率 —— 是不是反应的是温度计的测量精度?(这个似乎不太适合因果解释)当真值T=10时,如果温度计有很大的概率(把握)测出来的值是10.3度,那么显然,这个温度计在侧很多次温度时,和真实值之间的差距大概就是0.3度了,也就是说他的精度是0-0.3度。所以说,这个似然概率其实就是表示的温度计的测量精度,是温度计的固有属性,是个常数。至于这个似然概率的分布律是什么样的(即温度计的测量误差分布情况),我们可以有不同的模型对其进行刻画,不过一般大多数情况认为他是正态分布,即测量误差是正态分布的,其中的均值和方差参数则根据温度计性质进行确定(这个是可以事先确定的)。这样的话我们就能借助似然概率的正态分布模型来求解似然概率了(显然,正态分布适用于连续型随机变量的似然概率模型的求解,这个地方的是离散型的,应该是用不了正态分布的,能用的也只能是离散型的似然概率分布模型——由经验以及传感器精度决定的)。

分母用全概率公式求:

P(Tm=10.3)=P(Tm=10.3|T=10)P(T=10) +P(Tm=10.3|T=11)P(T=11)

可以看到,P(Tm=10.3|T=10)表示的是温度计精度,是常数;P(T=10)是主观概率中的,是确定好的,也是常数。这样一来的话,这个P(Tm=10.3)就是一个常数

于是,令

\eta =\frac{1}{P(Tm=10.3)}

则贝叶斯滤波公式为:

P(T=10|Tm=10.3)=\eta P(Tm=10.3|T=10)P(T=10)

P(T=11|Tm=10.3)=\eta P(Tm=10.3|T=11)P(T=11)

后验概率 = 系数 * 似然概率 * 先验概率  (其中系数就用全概率公式求即可)

这个就是贝叶斯进行融合、修正单个随机变量的具体过程

2.多个点、离散随机变量的贝叶斯滤波(实际上是连续型随机变量的简化版)

这里针对的就不再是单个点温度(单个点相当于静态的),而是各个时刻点的温度了(相当于动态过程了),如果按照上面的操作,我们需要对每个时刻对应的随机变量X0,X1,X2,...,Xn进行上述的操作:先分别猜测各个随机变量的主观概率分布(即要猜n个主观概率),然后再分别计算各自对应的系数、似然概率,最后得到后验概率(即对主观概率修正后的结果)。例如:

对0时刻的X0随机变量进行贝叶斯滤波以使其接近真值(即上述):

先猜测得到主观概率,然后根据温度计测得的值以及温度计精度得到似然概率,再求系数,最后得到随机变量X0的后验概率分布,再求其均值即可

接着对1时刻的随机变量X1进行贝叶斯滤波以使其接近自己的真值:

同样是测温,例如:猜测:1时刻T=10的概率是0.6,T=9的概率是0.4,即P(T=10)=0.6,P(T=9)=0.4;外部观测是Tm=9.8,温度计精度保持不变;把主观概率和外部观测用贝叶斯滤波结合起来就得到了后验概率分布:

P(T=10|Tm=9.8)=\frac{P(Tm=9.8|T=10)P(T=10)}{P(Tm=9.8)}

P(T=9|Tm=9.8)=\frac{P(Tm=9.8|T=9)P(T=9)}{P(Tm=9.8)}

选择合适的似然概率模型来描述传感器精度,得到似然概率的值;用全概率公求出P(Tm=9.8);

后面时刻对应的随机变量都按照这个流程来:要先主观猜测,再结合温度计的测量值、温度计精度、全概率公式对其进行修正以得到后验概率分布,从而更接近真实值

但是,对每个时刻都要先进行猜测(n个时刻就要猜测n次),这也太麻烦了吧。而且每个时刻的都猜,修正也就只用对应时刻测得的一个数据修正,精度很欠缺的,基本上就是依靠测量值了。难道各个随机变量之间就没有某种关系式?这里就涉及到了对:独立、无关、没有影响这些说法的区分了。不过,我们要明确的一点是:两个变量之间存在函数关系式,但这两个变量仍旧可能是独立的。其中一个例子是:

设N(u,p^2),从此分布中抽取n个独立样本X1,X2,...,Xn,独立同分布,则随机变量\bar{X}=\frac{X1+X2+...+Xn}{n}  与  S^{2}=\frac{1}{n-1}\sum (Xi-\bar{X})^{2} 是相互独立的(来自数理统计课本,这只是举个例子,不代表只有这种情况才符合)

我们可以认为这些随机变量之间存在函数关系式并且是相互独立的——其实,可以这样想,假设你得到了每个时刻的真值,是不是很明显就可以通过函数关系式把他们拟合出来,这不就表示着实际上这些量是存在关系的;而相互独立则是一种前提假设,实际上随机变量之间似乎的确没啥影响,关系式固然可以基于前面的数据做一定的预测,预测就是针对“不确定、随机的事件”。(这一部分有点欠缺,解释的不够好,后续我再查查资料补上来)总之,先接受:各个随机变量之间是相互独立的并且具备一定的函数关系式。(至于为什么需要独立,以及为什么独立了还具备函数关系式,后续再做详细的解释)

马尔科夫过程,视需要看看吧,

随机过程中,有一类具有“无后效性质”,即当随机过程在某一时刻 t0 所处的状态已知的条件下,过程在时刻 t>t0 时所处的状态只和 t0 时刻有关,而与 t0 以前的状态无关,则这种随机过程称为马尔科夫过程。

 当有了这个结论后,会发生什么?

我们可以这样描述这个结论:

X(k)=f(X(k-1))+Q

这里X(k)和X(k-1)表示的是随机变量而非具体取值(虽然到实际应用中,其实就是具体取值),Q是存在的噪声,一般是根据你对自己所找的这个关系式(或者说法则f)的把握程度来确定的,把握大的话,这个Q噪声就小点;反之就大一点,Q反应的是对这个关系式的信任程度

然后,通过这个关系式,我们就可以根据前一个的值来推测当前时刻的值了!!!——这个推测不就是我们的主观概率吗,只不过之前是我们根据其他的经验甚至说没啥经验就“随便猜测”,作为主观概率;现在我们是根据前一个时刻的值进行“有依据的猜测了”,猜出当前时刻的主观概率,接着在当前时刻,我们还能从传感器那里观测到数据即得到外部观测,传感器精度也知道,这样一来,就可以用贝叶斯滤波作用于当前时刻了,得到当前时刻的后验概率分布,进而得到后验值即最优值。然后呢,当前时刻这个最优值正好作为下一个时刻的“猜测依据”——根据关系式,用当前时刻的最优值(后验值)可以预测下一时刻的即得到了下一时刻的先验概率(毕竟下一时刻的实验还没做),然后结合下一时刻的实验观测,用贝叶斯滤波得到下一时刻的后验概率分布,进一步得到后验值,如此不断的递推迭代下去就行了。

发现没,这样一来,后面随机变量的先验概率分布都是靠前面的数据来推测出的,而不再是之前的挨个的“猜测了”。既减少了工作量,同时也“猜测”的比之前更有理有据了。所以说,只有随机变量X0的先验概率分布是猜测的,后面的随机变量X1,X2,X3,...,Xn的先验概率分布都是递推的

有个问题:X0的分布律是猜测的,随即变量之间的关系式也是猜测的,所以是有两部分是明显猜测的?(而单个点的时候显然只有一个猜测的部分)

的确是有两部分是明显是猜测的,每个猜测都会有对应的方差用于衡量其猜测的可信程度:Q用于衡量关系式,X0的方差值用于衡量自身猜测的可信度。

另外,注意一点,我们上面一直只是在说“概率分布”,要是到了连续型的随机变量中,这个“概率分布”就主要体现在了“均值和方差上面了”,因此到那边公式也主要是在计算、预测、观测、滤波这两个值了。

上面这些阐述中,如果不小心哪个地方涉及到了连续型分布的,可能是我和连续型随机变量的贝叶斯滤波搞混了,应该调整为离散型的就行了(或许可以)

3.小结:简单给出滤波流程

1.预测步:上一时刻的后验值+状态方程   可以预测出 这一时刻的先验值

2.更新步:这一时刻的先验值 + 观测方程  可以修正先验值以得到后验值

3.迭代:这一时刻得到的后验值作为下一时刻先验值的得到依据

状态方程:其实就是上面那个反应各个随即变量之间关系的式子

观测方程:反应状态是如何引起传感器的读数(后续再解释吧)

以上内容大多是我根据看的教程再加上自己的理解写的,可能有些地方还不太准确或者有错误,请大家多多指正

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
粒子滤波(Particle Filter)和卡尔曼滤波(Kalman Filter)是两种常用的滤波算法,它们在处理不确定性问题时有一些区别。 1. 工作原理: - 粒子滤波:粒子滤波是一种基于蒙特卡洛方法的非参数滤波算法。它通过使用一组随机样本(粒子)来表示系统的状态,并根据测量数据对这些粒子进行重采样和更新,从而逼近真实的状态分布。 - 卡尔曼滤波卡尔曼滤波是一种基于贝叶斯滤波理论的线性高斯滤波算法。它通过对系统的状态进行预测和更新,利用系统的动态模型和测量数据来估计系统的状态。 2. 适用范围: - 粒子滤波:粒子滤波适用于非线性、非高斯的系统,可以处理任意分布的状态变量和观测变量。由于其非参数化的特性,粒子滤波在处理非线性问题时更加灵活。 - 卡尔曼滤波卡尔曼滤波适用于线性、高斯的系统,对于非线性问题需要进行线性化处理。由于其基于高斯假设,卡尔曼滤波对于高斯噪声和线性系统有较好的效果。 3. 计算复杂度: - 粒子滤波:粒子滤波的计算复杂度与粒子数目成正比,随着粒子数目的增加,计算量也会增加。在高维状态空间和大样本量的情况下,粒子滤波可能会面临计算困难。 - 卡尔曼滤波卡尔曼滤波的计算复杂度较低,只需要计算系统的协方差矩阵和卡尔曼增益。对于线性系统和高斯噪声,卡尔曼滤波具有较高的计算效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值