卡尔曼滤波(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其实是有一定的联系的。
二、Kalman和HMM之间的关系
其实,讲到这里,我就想说一下我理解的Kalman与HMM的关系,事实上,他们解决的问题模型都是如上图所示,只不过一个是利用最小均方误差准则进行估计,一个是利用最大后验进行估计。事实上,HMM的预测问题中,就是一个最大的后验概率作为其似然函数,然后通过viterbi算法解的这个似然函数。
当然上面都是我的私货,比较标准的答案:《Advanced Digital Signal Processing and Noise Reduction 4th Edition》
稍微翻译下:
相同点:
- 马尔科夫性:两种都是基于马尔科夫过程,当前时刻的状态只与上一时刻有关系,譬如,当前时刻的位置只与上一时刻的位置有关;
- 高斯观测:两者的量测值都符合高斯分布;
不同点:
- 状态的连续性:Kalman的状态是连续值,而HMM的状态是可数的(类似于一个是线性回归、一个是逻辑回归,或者说一个是回归问题、一个是分类问题);
- 马尔科夫状态模型:Kalman用状态转移矩阵+高斯的过程噪声演化马尔科夫过程,而HMM只有状态转移矩阵;
- 隐藏层状态:Kalman的隐状态由于噪声的原因不可观察,而HMM由于隐层状态的转化没有噪声,也就是说,由观测值可推断HMM的隐藏层的状态,但是不能推断Kalman的状态究竟是哪一个;
三、Kalman滤波公式
事实上,Kalman滤波的递推公式并不复杂,只要真正理解了最小均方误差估计,其递推公式就很好掌握了。
首先是最基本的两个方程:
W符合N(0,Q),V符合N(0,R)。
然后可以看到,Kalman滤波的五个基本的滤波方程:
对于这个方程组的推导:
证明到这里,可以看到,上面的式子是由公式(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)最小。
然后,可以简单的推导一下其中的K的求法
求:
由于:
求导得到:
求得K,如公式(5)所示:
事实上,对于上面求Pt+1的 公式和求导公式两者结合,可以消除0项,即化简得到公式(4).
以上即为Kalman滤波公式的简单推导过程。
四、α-β滤波器
如上根据Kalman滤波的递推公式,可以看到,为了求卡尔曼增益,消耗了大部分的工作量,为了减少计算量,必须改变增益矩阵的计算方法,因此人们提出了常增益滤波器,此时的增益的计算不再与协方差有关系,因而,可以在滤波过程中离线计算卡尔曼增益,这样就大大减少了计算量,有利于工程实现。α-β滤波器是针对匀速运动目标模型的一种常增益滤波器。
α-β滤波器主要针对的是匀速运动目标模型,目标模型的状态向量只包含位置和速度两项。其增益表现如下:
其中,α、β为无量纲的值,分别为目标状态的位置和速度分分量的常滤波增益,其中T为采样间隔。对于具体的取值,可以通过《雷达数据处理及应用》书中有给出两个值的具体取值。下面给出工程上的应用方法:
如上,可以通过k,即采样时刻来确定两个的值,对于α来说,从k=1开始,而β从k=2开始,滤波从k=3开始。可以看到他们的关系如下图,对于一些应用可以让两者小到一定程度不在改变。
五、线性滤波与非线性滤波
5.1 扩展卡尔曼滤波(EKF)
如上都是讲的是线性模型,即状态方程和量测方程都是线性方程的情况。而实际上,有些传感器得到的是非线性模型,即观测数据与目标动态参数的关系是非线性的。对于非线性滤波,本文简单的介绍一下扩展卡尔曼滤波(EKF)。
对于非线性滤波,至今未得到完善的解法,通常的处理方法是利用线性化技巧将非线性滤波问题转化为一个近似的线性滤波问题,套用线性滤波理论得到求解原非线性滤波问题的次优滤波算法,其中最常用的线性化方法是泰勒级数展开,得到的滤波方法即为扩展卡尔曼滤波。对于二阶EKF,其滤波性能远比一阶的要好,但是二阶以上的效果提升就不明显了,所以一般就是用一阶、二阶,但是二阶计算量比较大,一般都用一阶的。
5.2 泰勒展开
泰勒公式是将一个在x=x0处具有n阶导数的函数f(x)利用关于(x-x0)的n次多项式来逼近函数的方法。
函数的麦克劳林展开指上面泰勒公式中x0取0的情况,即是泰勒公式的特殊形式,若f(x)在x=0处n阶连续可导,则下式成立:
六、Kalman与最小二乘
6.1 线性回归(LinearRegression)
在机器学习中,回归算法是一种有监督的算法,用来建立变量和量测值之间的关系。回归算法的最终结果是一个连续的数据值。既然讲到了Kalman,此处也顺便简单讲解一下这种线性回归问题。
线性回归的一个例子:租房价格问题
对于线性回归,通常构造y = θx + ε 的模型,如果有多个特征,y = θ1x + θ2x + ... +ε ,即:
参考:线性回归的基本假设
然后可以通过最大似然估计,获得损失函数,损失函数的求解,可以通过最小二乘法和梯度下降的方法求解。
参考: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滤波的效果产生影响,而不会对最小二乘滤波产生影响,而改变最小二乘的阶数会对其产生影响。
卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系的更多相关文章
- 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!
DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!——和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别, ...
- Deep Learning中的Large Batch Training相关理论与实践
背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在分布式训练时,提高计算通信占比是提高计算加速比的有效手段,当网络通信优化到一 ...
- 整理CSS引发的相关理论的梳理
写在前面 因为原先项目中的CSS样式乱得不行,所以领导决定要花大时间整理一下样式,也为了后续维护起来方便.其实也苦了自己,想想也是一件多烦的事情,烦的原因并非是说这件事情做起来没有意义,而是觉得这样的 ...
- 关于卡尔曼滤波(Kalman Filter)的很好讲解
http://bilgin.esme.org/BitsAndBytes/KalmanFilterforDummies C#代码: double[] Data = new double[] { 0.39 ...
- Angularjs相关理论
1.AngularJS的工作流程: (1)浏览器载入HTML,然后把它解析成DOM (2)浏览器载入angularjs脚本 (3)AngularJS等到DOMContentLoaded事件触发 (4) ...
- vue相关理论知识
es6常用语法简介 es是js的规范标准 let 特点: 1.有全局和函数作用域,以及块级作用域(用{}表示块级作用域范围) 2.不会存在变量提升 3.变量不能重复声明 const 特点: 1.有块级 ...
- RabbitMQ 相关理论部分
集群配置方式 RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel cluster: 不支持跨网段,用于同一个网段内的局域网 可以随意的动态 ...
- PyQt学习随笔:Qt中Model/View相关的主要类及继承关系
View相关类类继承关系: Model相关类类继承关系:
- java中关于Collection和Map相关的类&接口之间的关系
上图(引用自)
随机推荐
- python 基础数据类型之str
1.字符串去除空格 # S.strip(self, chars=None) #去除字符串两端空格# S.lstrip(self, chars=None) #去除字符串左端空格# S.rstrip(se ...
- shell脚本中自定义日志记录到文件
自定义日志函数和前期变量 # adirname - return absolute dirname of given file adirname() { odir=`pwd`; cd `dirname ...
- JDBC编程示例
package com.lovo.test; import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLE ...
- JAVA记录-JSP指令
JSP中有三种类型的指令标签 - 序号 指令 说明 1 <%@ page ... %> 定义页面相关属性,如脚本语言,错误页面和缓冲要求. 2 <%@ include ... %&g ...
- MYSQL——root密码更换
方法1: 用SET PASSWORD命令mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass') ...
- 翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化
翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化 翻译自: Exploring GLSL – Normal Visualizer with Geometry Shaders (Shader ...
- 机器学习算法整理(七)支持向量机以及SMO算法实现
以下均为自己看视频做的笔记,自用,侵删! 还参考了:http://www.ai-start.com/ml2014/ 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还 ...
- jenkins设置CSRF 协议(CRUMB值设置)
在关闭“”调用出现Error 403 No valid crumb was included in the request 第一种解决方式是 关闭 csrf,如上图,去掉勾就可以,但是并不推荐. 第二 ...
- 解决 phpmyadmin #2002 无法登录 MySQL 服务器
将 “phpMyAdmin/libraries”文件夹下的config.default.php文件中的 $cfg['Servers'][$i]['host'] = 'localhost'; 修改为 $ ...
- HttpClient与HttpUrlConnection下载速度比较
Android有两套http的API,刚开始使用网络编程时多少有些迷惑到底用哪个好呢?其实孰优孰劣无需再争论,google已经指出HttpUrlConnection是Android更优的选择,并在SD ...