最小二乘与卡尔曼滤波
卡尔曼滤波,上次看到还是在opencv学习中的光流算法吧应该,反正是预测一个动态轨迹的地方,这次看到果断点进来重温一下原文
前几段概述写的太精髓,我直接贴出来
给定关于参数 X 的观测 Z ,试估计 X 。解决这一问题最常用(同时也最通用)的方法就是最小二乘估计,实施这一方法甚至不需要知道任何关于 X 和 Z 的统计信息。当然,如果可以获取到关于 Z 的统计信息并且知道 X 与 Z 之间的关系,就可以对最小二乘估计的优良性进行考察。如果上述就是所知道的全部信息,那么利用最小二乘估计得到的结果还是令人满意的。
在实际应用中,将待估计参数 X 看作随机变量(而不是常量)可能更贴近实际情况。如果可以知道一些关于 X 的统计信息,就可以使用Bayes估计的方法获得 X 的更精确的估计。出于直观以及计算方便的考虑,往往选取均方误差损失函数,这就导出了后面要讲到的最小方差估计。但是,Bayes估计要求完全知道 X 和 Z 的分布,这一要求过于苛刻。
为了降低对先验知识的要求,转而在线性估计类中寻找能最小化均方误差损失函数的估计,这就是后面要讲到的线性最小方差估计。只需要知道 X 和 Z 的一阶及二阶统计信息,就可以计算 X 的线性最小方差估计。更令人振奋的是,如果 X 和 Z 服从Gauss分布,线性最小方差估计同时也是最小方差估计。
然而,线性最小方差估计在有些情况下仍然不能满足实际应用需求,尤其是在处理时序信号的时候,即 X 和 Z 分别是由不同时刻的系统参数和观测组成的向量。获取所有时刻的一阶和二阶统计信息仍然是困难的事情。当然,可以假设 X 和 Z 都是平稳的,这就是Wiener滤波所做的事情。毫无疑问,平稳性假设妨碍了Wiener滤波的广泛应用(当然还有计算问题)。
Kalman滤波本质上也是线性最小方差估计,其之所以既没有假设所有时刻的一阶及二阶统计信息均已知,也没有假设信号平稳,是因为它引入了状态方程来描述参数 X 随时间的变化。所以没有免费的午餐,Kalman滤波通过限制问题的类型来使自己变得可用(好用),又恰巧很多问题都可以用状态方程来描述,所以Kalman滤波才大行其道。
线性最小方差估计是最小方差估计的特例,其估计为观测量的线性函数
Wiener滤波
Wiener滤波所要解决的问题是:求出一个物理可实现的线性定常系统的单位脉冲响应 ,使滤波器的实际输出与理想输出 I(t) 的误差 ϵ(t)=I(t)−y(t) 的均方值达到最小
看不太懂?
好不容易看到比较完整的算法描述,直接把公式复制一下,以后说不定用到
Kalman滤波
线性最小方差估计具有一定的实用性,不同时刻的观测信息利用得越多,估计的精度就越高。但这种算法使用了被估计量与观测量的一阶和二阶矩,对于非平稳过程,必须确切知道这种一、二阶矩的变化规律,这种要求是十分苛刻的,一般是无法办到的。
卡尔曼滤波特点:
1)算法是递推的,且使用状态空间法在时域内设计滤波器。所以Kalman滤波适用于多维随机过程的估计。
2)采用动力学方程,即状态方程,描述待估计量的动态变化规律,待估计量的动态统计信息由激励白噪声的统计信息和动力学方程确定。由于激励白噪声是平稳过程,动力学方程已知,所待估计量即可以是平稳的,也可以是非平稳的,即Kalman滤波也适用于非平稳过程。
#### Kalman滤波基本方程
设 tk 时刻的待估计状态参数 Xk 受系统噪声序列 Wk−1 驱动,驱动机理由下述状态方程描述
Xk=ϕk−1Xk−1+Γk−1Wk−1
对 Xk 的观测满足线性关系,观测方程为
Zk=HkXk+Vk
式中 ϕk−1 为 tk−1 时刻至 tk 时刻的一步转移矩阵, Γk−1 为系统噪声驱动矩阵, Hk 为观测矩阵, Vk 为观测噪声, Wk−1 为系统激励噪声。
同时, Wk 和 Vk 满足
E(Wk)=0 , Cov(Wk,Wj)=E(WkWjT)=Qkδkj
E(Vk)=0 , Cov(Vk,Vj)=E(VkVjT)=Rkδkj
Cov(Wk,Vj)=E(WkVjT)=0
式中 Qk 为系统噪声的方差矩阵,假定为非负定矩阵; Rk 为观测噪声的方差矩阵,假设为正定矩阵。
Kalman滤波基本方程的直观推导
1.一步预测方程推导
2. 状态估计方程推导
3. 滤波增益矩阵和估计均方误差矩阵的推导
4. 一步预测均方误差矩阵的推导
Kalman滤波方程的正交投影推导 (这部分实在没看懂。。。)
定理 1 X 在 Z (此处的 Z 把所有时刻的观测摞在了一起)上的正交投影即为 X 在 Z 上的线性最小方差估计,反之亦然,即
A1Z+b1=E∗(X | Z) |
定理 2 (更新信息定理)设 Xk 为随机向量, Zk 为第 k 次测量, Z¯k−1 和 Z¯k 分别为前 k−1 此观测和前 k 此观测。则…