卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系

卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系

 

一、什么是卡尔曼滤波

  在雷达目标跟踪中,通常会用到Kalman滤波来形成航迹,以前没有学过机器学习相关知识,学习Kalman时,总感觉公式看完就忘,而且很多东西云里雾里并不能深入理解,最后也就直接套那几个递推公式了。通过上一篇CRF,我们可以顺便回顾一下HMM,事实上,这几种算法和Kalman之间是有联系的,这个联系,据说是在PRML这本书的第13章里讲的线性动态系统(LDS)讲的,有机会一定好好拜读一下!那么什么是Kalman滤波呢?

  首先,简单的理解就是:对于一个目标,它会具有一定的速度,如果是机动的,还会有加速度,不过这都不重要,重要是的,这个目标各个时刻的位置是我们需要关心的。对于目标的找寻,尊寻方程:

X(k)=A X(k-1)+B U(k)+W(k)               状态方程

Z(k)=H*X(k)+V(k)                               量测方程

  卡尔曼滤波用到的线性离散状态和观测方程则如上,A表示的是状态转移矩阵,H表示的是观测矩阵,W和V都是满足高斯白噪声的分布,并且W和V是独立的,即E{w*vT} = 0。而Kalman滤波的总体思路就是,我们用k-1时刻的估计值X^去预测k时刻的Z,然后用预测的值和实际观测到的值进行比对,用误差修正k+1时刻的估计方法。其实讲到这里,可以回顾HMM模型,看以看到,模型中白圈代表了状态,而蓝圈代表了观测值,因此,可以看到Kalman和HMM其实是有一定的联系的。

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 二、Kalman和HMM之间的关系

  其实,讲到这里,我就想说一下我理解的Kalman与HMM的关系,事实上,他们解决的问题模型都是如上图所示,只不过一个是利用最小均方误差准则进行估计,一个是利用最大后验进行估计。事实上,HMM的预测问题中,就是一个最大的后验概率作为其似然函数,然后通过viterbi算法解的这个似然函数。

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 

  参考:参数估计     、  HMM

   当然上面都是我的私货,比较标准的答案:《Advanced Digital Signal Processing and Noise Reduction 4th Edition》

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  稍微翻译下:

  相同点:

  • 马尔科夫性:两种都是基于马尔科夫过程,当前时刻的状态只与上一时刻有关系,譬如,当前时刻的位置只与上一时刻的位置有关;
  • 高斯观测:两者的量测值都符合高斯分布;

  不同点:

  • 状态的连续性:Kalman的状态是连续值,而HMM的状态是可数的(类似于一个是线性回归、一个是逻辑回归,或者说一个是回归问题、一个是分类问题);
  • 马尔科夫状态模型:Kalman用状态转移矩阵+高斯的过程噪声演化马尔科夫过程,而HMM只有状态转移矩阵;
  • 隐藏层状态:Kalman的隐状态由于噪声的原因不可观察,而HMM由于隐层状态的转化没有噪声,也就是说,由观测值可推断HMM的隐藏层的状态,但是不能推断Kalman的状态究竟是哪一个;

      

 三、Kalman滤波公式

  事实上,Kalman滤波的递推公式并不复杂,只要真正理解了最小均方误差估计,其递推公式就很好掌握了。

  首先是最基本的两个方程:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  W符合N(0,Q),V符合N(0,R)。

  然后可以看到,Kalman滤波的五个基本的滤波方程:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 

  对于这个方程组的推导:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  证明到这里,可以看到,上面的式子是由公式(2)得到的。公式(2)包含一个新的定义:新息,实际上就是量测值与预测值的差嘛,在我们这个kalman滤波中,它反映了过程噪声和测量噪声综合对测量状态值的影响,即w和v两者共同作用于新息的影响。假设一个数值c由两部分内容a和b组成,通常两者关系的表达方法有两种:相加和比重。

  • c = a+b(相加)
  • a = n*c   ;  b = (1-n)*c  (比重)

  这样的话,公式(2)中,如果我们想要得到归于状态转移的影响,则可以用a = n*c来表示,n就是式子中的K(被称为卡尔曼增益)。

  如上公式,表示估计值与实际值之间的差,根据最小均方误差准则,应该是E(e^2)最小。

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  然后,可以简单的推导一下其中的K的求法

  求:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  由于:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  求导得到:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 

  求得K,如公式(5)所示:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 

  事实上,对于上面求Pt+1的 公式和求导公式两者结合,可以消除0项,即化简得到公式(4).

  以上即为Kalman滤波公式的简单推导过程。

 四、α-β滤波器

  如上根据Kalman滤波的递推公式,可以看到,为了求卡尔曼增益,消耗了大部分的工作量,为了减少计算量,必须改变增益矩阵的计算方法,因此人们提出了常增益滤波器,此时的增益的计算不再与协方差有关系,因而,可以在滤波过程中离线计算卡尔曼增益,这样就大大减少了计算量,有利于工程实现。α-β滤波器是针对匀速运动目标模型的一种常增益滤波器。

  α-β滤波器主要针对的是匀速运动目标模型,目标模型的状态向量只包含位置和速度两项。其增益表现如下:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  其中,α、β为无量纲的值,分别为目标状态的位置和速度分分量的常滤波增益,其中T为采样间隔。对于具体的取值,可以通过《雷达数据处理及应用》书中有给出两个值的具体取值。下面给出工程上的应用方法:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  如上,可以通过k,即采样时刻来确定两个的值,对于α来说,从k=1开始,而β从k=2开始,滤波从k=3开始。可以看到他们的关系如下图,对于一些应用可以让两者小到一定程度不在改变。

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 

 

 

五、线性滤波与非线性滤波

5.1  扩展卡尔曼滤波(EKF) 

  如上都是讲的是线性模型,即状态方程和量测方程都是线性方程的情况。而实际上,有些传感器得到的是非线性模型,即观测数据与目标动态参数的关系是非线性的。对于非线性滤波,本文简单的介绍一下扩展卡尔曼滤波(EKF)。

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  对于非线性滤波,至今未得到完善的解法,通常的处理方法是利用线性化技巧将非线性滤波问题转化为一个近似的线性滤波问题,套用线性滤波理论得到求解原非线性滤波问题的次优滤波算法,其中最常用的线性化方法是泰勒级数展开,得到的滤波方法即为扩展卡尔曼滤波。对于二阶EKF,其滤波性能远比一阶的要好,但是二阶以上的效果提升就不明显了,所以一般就是用一阶、二阶,但是二阶计算量比较大,一般都用一阶的。

5.2  泰勒展开

  泰勒公式是将一个在x=x0处具有n阶导数的函数f(x)利用关于(x-x0)的n次多项式来逼近函数的方法。

  <span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 

   函数的麦克劳林展开指上面泰勒公式中x0取0的情况,即是泰勒公式的特殊形式,若f(x)在x=0处n阶连续可导,则下式成立:

 <span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

 

 六、Kalman与最小二乘

6.1  线性回归(LinearRegression)

  在机器学习中,回归算法是一种有监督的算法,用来建立变量和量测值之间的关系。回归算法的最终结果是一个连续的数据值。既然讲到了Kalman,此处也顺便简单讲解一下这种线性回归问题。

  线性回归的一个例子:租房价格问题

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  对于线性回归,通常构造y = θx + ε 的模型,如果有多个特征,y = θ1x + θ2x + … +ε ,即:

<span>卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系</span>

  参考:线性回归的基本假设

  然后可以通过最大似然估计,获得损失函数,损失函数的求解,可以通过最小二乘法和梯度下降的方法求解。

  参考:https://www.cnblogs.com/pinking/p/8722342.html

     案例:https://www.cnblogs.com/pinking/p/8970983.html

   因此,线性回归是一类问题的概念,而最小二乘估计、最小均方误差估计是参数估计方法,最小二乘法和Kalman都是参数优化方法,包括梯度下降之类的。对于解决类似上面房价预测问题,可以通过最大似然估计进行参数估计,然后根据似然函数构造损失函数,在通过最小二乘法、梯度下降之类的进行求解;当然参数估计也可以利用最小二乘估计,然后通过最小二乘法或梯度下降求具体参数。对于雷达航迹问题,也可以利用最小二乘法求解,当然也可以利用kalman滤波,这是因为我们对于系统模型比较了解。

6.2  Kalman与最小二乘法

   最小二乘(Least Square)是优化方法中的一种特殊情况,而卡尔曼滤波又是最小二乘法的一种特殊情况。 古典最小二乘中,假设了每一次测量的权重相同,但事实上这样并不合理,后来演化为加权最小二乘法,至此最小二乘估计所做的都是批处理(Batch),这样比较占内存,不符合动态系统状态估计的需要,即每一次更新输入时,都要从新计算之前所有的记录值。而后,提出递推最小二乘法,模型就不用每次都重新计算了。与递归最小二乘相似,卡尔曼滤波加入了系统内部变化的考虑。即利用process model对系统在下一时刻的状态进行预测。 

  当对于系统不够了解时,使用最小二乘法比较合适,而对于系统了解比较多时,可以采用Kalman滤波。改变量测噪声、系统噪声都会对Kalman滤波的效果产生影响,而不会对最小二乘滤波产生影响,而改变最小二乘的阶数会对其产生影响。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119452.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用户态与内核态之间切换详解[通俗易懂]

    用户态与内核态之间切换详解[通俗易懂]用户态切换到内核态CPU中有一个标志字段,标志着线程的运行状态。用户态和内核态对应着不同的值,用户态为3,内核态为0.每个线程都对应着一个用户栈和内核栈,分别用来执行用户方法和内核方法。用户方法就是普通的操作。内核方法就是访问磁盘、内存分配、网卡、声卡等敏感操作。当用户尝试调用内核方法的时候,就会发生用户态切换到内核态的转变。切换流程:1、每个线程都对应这一个TCB,TCB中有一个TSS字段,存储着线程对应的内核栈的地址,也就是内核栈的栈顶指针。2、因为从用户态切换到内核态时,需要将用户态.

    2022年9月17日
    0
  • npm和cnpm(windows)安装步骤

    npm和cnpm(windows)安装步骤一、什么是npm和cnpmnpm(nodepackagemanager):nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等)cnpm:因为npm安装插件是从国外服务器下载,受网络的影响比较大,可能会出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。来自官网:“这是一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频……………

    2022年10月16日
    0
  • mac安装vue开发环境_vue项目有几个环境

    mac安装vue开发环境_vue项目有几个环境一、前言因工作缘故,需要做一个移动端app,面对2016下半年至今webapp最流行的三个技术React,angular,vue,三选一,如何先,经过前期的技术选型,最后决定使用vue。具体查看本人之前的blog移动app技术选型,react,angular,vue二、vue开发环境的搭建由于本人使用的是mac,所以环境是windows的下面可以忽略……通过下面一张图对Vue的整体开发环境有

    2022年10月21日
    0
  • pycharm安装包错误

    pycharm安装包错误安装jieba(结巴)是出错显示如上图;解决方法:按win+r,打开cmd然后输入命令:pipinstallpandas-ihttps://pypi.douban.com/simple,等待安装完成后,重新打开pycharm下载包就可以了

    2022年5月17日
    55
  • SSR服务器端渲染(Next.js总结和豆瓣电影项目)「建议收藏」

    SSR服务器端渲染(Next.js总结和豆瓣电影项目)「建议收藏」一.前言先解释一下Nuxt.js和Next.js虽然只有一个字母之差,但它们是不同的两个服务端渲染框架.什么是Next.js?引用Next中文官网的一句话:Next.js是一个轻量级的React服务端渲染应用框架。Next.js带来了很多好的特性:默认服务端渲染模式,以文件系统为基础的客户端路由(注意:没有专门路由)代码自动分割使页面加载更快以webpack的热替换(HMR…

    2025年6月12日
    0
  • Okio库的使用

    Okio库的使用Okio库是一个由square公司开发的,其官方简介为,Okiocomplementsjava.ioandjava.niotomakeitmucheasiertoaccess,store,andprocessyourdata.。它补充了java.io和java.nio的不足以更方便的访问、存储及处理数据。1.最新版本及Gradle引用     comp

    2022年6月10日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号