滤波算法(一阶滤波算法)
贝叶斯滤波(三)贝叶斯滤波算法推导
状态估计根据可获取的 量测 数据 估算 动态系统内部状态的方法。
贝叶斯滤波也就是在已知 观测 和可选的 控制输入 的概率分布下,估计出的 状态 概率分布。
状态随着时间变化,我们将时间设定为离散的,即 ,
相对应的,我们的观测为 ,控制输入为 ,状态 ( 为初始状态)
隐马尔可夫模型 (Hidden Markov Model; 缩写: HMM )的两个基本假设:
简单来说,就是当前状态仅取决于先前的状态和当前输入。
比如某个人在骑自行车,那么他 下一刻的速度 , 仅仅 取决于当前的速度和下一刻他蹬了多大力气,与他昨天骑自行车到哪条道路把车停在哪里都无关。或者说他当前的速度仅仅取决于上一刻的速度和当前他蹬了多大力气。
我们把时间分为3个点:上一刻(t-1)、现在(t)、下一刻(t+1),
那么根据马尔可夫假设,现在的状态 仅仅取决于上一刻的状态 和当前的控制输入 ,下一刻的状态 仅仅取决于现在的状态 和下一刻的控制输入 。
? ? ? ? ??
这里的 其实说的是条件概率,意思是 在 这一堆条件下发生的概率, 等价 于 在 条件下发生的概率。
是指任一时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关。
? ? ? ? ??
同样地,这里的 指的也是条件概率,意思是 在 这一堆条件下发生的概率, 等价 于 在 条件下发生的概率。
这两个假设非常重要,其实我们可以简单 理解其为化简 ,把繁杂的公式进行了极大的简化。根据马尔科夫假设,我们才能推导出递归贝叶斯的更新公式。
? ? ? ??
顺便推导一下多条件下的贝叶斯公式,后面的推导需要使用到这一个结论,
? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
令 为 条件下 的概率密度函数,即:
? ? ? ??
把 看成一个整体,那么 ,根据我们上面的多条件下的贝叶斯公式进行展开可得:
? ? ? ??
根据观测独立假设, , 只依赖于t时刻的马尔科夫链的状态 ,可得
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
根据全概率公式,或者说是 边缘概率密度函数 ,此处我们把 看成是两个二维随机变量,求 也就是求边缘概率密度函数了,可得:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
根据齐次马尔可夫假设, , 仅仅取决于t-1时刻的状态 和当前t时刻控制输入 ,可得:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
根据齐次马尔可夫假设,我们观察一下 中, 仅仅取决于t-2时刻的状态 和当前t-1时刻控制输入 ,与 无关,可得:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
仔细观察 ,会发现这个式子就等于 ,所以原式等于:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
至此,贝叶斯滤波推导完毕:
? ? ? ??
式中 为后面所有项的广义积分的倒数,即
? ? ? ??
? ? ? ??
书本上将
定义为 后验概率(posterior) :指某件事已经发生,想要计算这件事发生的原因是由某个因素引起的概率,是 根据结果推测原因 。
定义为 先验概率(prior) :指根据以往经验和分析。在实验或采样前就可以得到的概率。
定义为 似然概率(likelihood) :是 根据原因推测该原因导致结果发生的概率 。
(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运,运气真是太好了!
表达有限,希望通过简单例子解释先验、后验,说不清的地方还请见谅。

卡尔曼滤波算法是什么?
卡尔曼滤波是一个滤波算法,应用非常广泛,它是一种结合先验经验、测量更新的状态估计算法,卡尔曼滤波器是在估计线性系统状态的过程中,以最小均方误差为目的而推导出的几个递推数学等式。
卡尔曼过程中要用到的概念。即什么是协方差,它有什么含义,以及什么叫最小均方误差估计,什么是多元高斯分布。如果对这些有了了解,可以跳过,直接到下面的分割线。
均方误差:
它是"误差"的平方的期望值(误差就是每个估计值与真实值的差),也就是多个样本的时候,均方误差等于每个样本的误差平方再乘以该样本出现的概率的和。
方差:
方差是描述随机变量的离散程度,是变量离期望值的距离。
注意:
两者概念上稍有差别,当你的样本期望值就是真实值时,两者又完全相同。最小均方误差估计就是指估计参数时要使得估计出来的模型和真实值之间的误差平方期望值最小。
什么叫频谱滤波算法
在时域上叠加在一起的几个信号占用相同频带时,波束形成利用来自不同方向的信号所具有的空域分离性来实现信号空域处理的一种算法,就叫做频谱滤波算法。
基于频谱滤波的多纹理提取算法,研究了一种在有多种纹理叠加的复杂图像中进行单一纹理提取的算法。
频谱滤波算法原理
离散信号分析和处理的主要手段是利用计算机去实现,然而序列f(n)的离散时间傅里叶变换是频率的连续函数,并且其逆变换为积分运算无法直接用计算机实现。显然,要在计算机上完成这些变换必须要将连续函数转换为离散数据,同时将求和范围从无限宽收缩至一个有限区间。
对于离散傅里叶级数,无论是在时域还是在频域,只对有限项求和,故而可以利用计算机计算。因此借助于离散傅里叶级数的概念,把有限长的序列作为周期性离散序列的一个周期来处理,从而定义了离散傅里叶变换。
这样,在允许一定程度近似的条件下,有限长序列的离散时间傅里叶变换可由计算机实现。亦即,可由计算机计算有限长序列的频谱。
卡尔曼滤波算法的功能是什么
卡尔曼滤波是用来进行数据滤波用的,就是把含噪声的数据进行处理之后得出相对真值。卡尔曼滤波也可进行系统辨识。卡尔曼滤波一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
什么是滤波算法?
卡尔曼滤波器(Kalman Filter)是一个最优化自回归数据处理算法(optimal recursive data processing algorithm)。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。
现设线性时变系统的离散状态防城和观测方程为:
X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1)
Y(k) = H(k)·X(k)+N(k)
其中
X(k)和Y(k)分别是k时刻的状态矢量和观测矢量
F(k,k-1)为状态转移矩阵
U(k)为k时刻动态噪声
T(k,k-1)为系统控制矩阵
H(k)为k时刻观测矩阵
N(k)为k时刻观测噪声
则卡尔曼滤波的算法流程为:
预估计X(k)^= F(k,k-1)·X(k-1)
计算预估计协方差矩阵
C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'
Q(k) = U(k)×U(k)'
计算卡尔曼增益矩阵
K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)
R(k) = N(k)×N(k)'
更新估计
X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^]
计算更新后估计协防差矩阵
C(k)~ = [I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)'
X(k+1) = X(k)~
C(k+1) = C(k)~