一、最大似然估计/最大后验概率估计/贝叶斯估计
首先给出贝叶斯公式:
贝叶斯公式的本质就是利用条件概率和先验概率得到后验概率。
其中表示后验(posterior)概率,即通过样本X得到参数
的概率,是基于观测对状态的推断;
casual knowledge(likehood)表示条件概率,也可称作似然函数,通常为数据集的表现;
prior knowledge表示参数的先验概率,一般是根据人的先验知识来得出的。比如人们倾向于认为抛硬币实验会符合先验分布:beta分布。当我们选择beta分布的参数
时,代表人们认为抛硬币得到正反面的概率都是0.5。
evidence:表示样本X发生的概率,是各种
条件下发生的概率的积分,为全概率公式。贝叶斯准则的分母
不依赖于
,因此
对于任何
的后验概率
都是相同的,因此
经常作为贝叶斯准则中的归一化变量,通常用
表示,为
用一个归一化符号表示最终结果必须归一为1。
1.1 最大似然估计:
即将看做未知参数,找使似然函数最大的
。其本质就是最大化观测数据的发生概率,需显示规定概率分布。求对数似然函数最大化,可以通过导数为0来求解。极大似然估计只关注当前的样本,也就是只关注当前发生的事情,不考虑事情的先验情况。由于计算简单,而且不需要关注先验知识,因此在机器学习中的应用非常广,最常见的就是逻辑回归。
1.2 最大后验概率
估计进一步考虑了的先验分布:
由于分母不影响对θ的估计,所以等同于最大化分子,其本质是最大化观测数据的后验概率,得到参数的点估计。同样为了便于计算,对两边取对数,后验概率最大化就变成了:
最大后验估计不只是关注当前的样本的情况,还关注已经发生过的先验知识。这在样本很少的时候是很有用的,因为样本很少的时候我们的观测结果很可能出现偏差,此时先验知识会把估计的结果“拉”向先验.
1.3 贝叶斯估计:
不同于最大后验概率估计输出的是一个点估计,贝叶斯估计需获得参数完整的后验概率分布(由全概率公式可推导
的先验分布)。然后如果需要点估计,可以在这个后验分布上取期望(通常取后验均值)作为
估计的<后验期望估计>,即
。但贝叶斯估计的核心在于保留整个分布。贝叶斯估计要解决的不是如何估计参数,而是用来估计新测量数据出现的概率。其本质在于根据样本信息,修正先验分布,得到后验分布。实际上,贝叶斯估计会比最大后验概估计的结果往先验结果“拉”的程度还提高了一些,从而使估计结果更靠近先验结果。
区别主要体现在,在对新样本预测时,最大似然估计使用进行预测,即
,而贝叶斯估计则使用整个后验分布进行预测,即
,贝叶斯估计的预测通常更准确,因为它对所有可能的θ进行了平均(即考虑了参数的后验不确定性)。
二、贝叶斯滤波
2.1贝叶斯递推公式
由此,我们来推导贝叶斯滤波的递推公式,首先有
;
将看做
,将
看做
,有
再由Markov属性,在 已知的情况下,
同
无关,所以:
从而我们得到贝叶斯的递推公式:
2.2 贝叶斯滤波算法
(1)算法设定
由上述推导和示例,我们可以给出贝叶斯滤波的算法,算法的输入输出设定如下。
1.系统输入:
①1到时刻的状态观测和动作:
②观测模型:
③动作的状态转移模型:
④系统状态的先验概率分布
2.期望输出
①计算状态的后延概率,称为状态的置信概率:
(2)贝叶斯滤波算法基本假设
1. Markov性假设: t时刻的状态由t−1时刻的状态和t时刻的动作决定。t时刻的观测仅同t时刻的状态相关,如图4所示:
这样的时间生成模型也称为隐马尔可夫模型(Hidden Markov Model,HMM)或者动态贝叶斯网络(Dynamic Bayes Network,DBN)。对于一阶马尔科夫模型,有:如果第时刻上的取值依赖于且仅依赖于第
时刻的取值,即
从这个式子可以看出, 仅仅与
有关,而跟他前面的都没有关系了,这就是一阶马尔科夫过程。
2. 静态环境,即对象周边的环境假设是不变的
3. 观测噪声、模型噪声等是相互独立的
(3)算法流程
其中,可见递推公式中分为两个步骤,
部分是基于
,
预测
的状态(利用运动方程),其中
为先验置信度,
则是利用运动方程进行预测;
部分是基于观测
更新状态
(利用观测方程)。详细推导见贝叶斯滤波器-CSDN博客
所以,Bayes滤波的算法流程图如图5所示。如果d是观测,则进行一次状态更新,如果d是动作,则进行一次状态预测。
上图以伪代码形式描述了基本的贝叶斯滤波。贝叶斯滤波是递归的,也就是说,时刻t的置信度由时刻t-1的置信度
来计算。其输入是时刻t-1的置信度,和最近的控制作用
及最近的一次测量
。其输出就是时刻t的置信度
。
贝叶斯滤波算法具有两个基本的步骤。在第3行,它处理控制。通过基于状态
的置信度和控制
来计算状态
的置信度。具体来说,机器人分配给状态
的置信度
通过两个分布(分配给
的置信度和由控制
引起的从
到
的转移概率)的积分(求和)得到。这种更新步骤叫做控制更新或者预测。
第二个步骤叫做测量更新。在第4行,贝叶斯滤波算法用已经观测到的测量的概率乘以置信度
。对每一个假想的后验状态
都这样做。乘积结果通常不再是一个概率,它的总和可能不为1。因此,结果需要通过归一化常数
进行归一化。
为了递归地计算后验置信度,算法需要一个时刻的初始置信度
作为边界条件。如果知道
的确定值,
应该用一个点式群体分布进行初始化,该点式群体分布将所有概率集中在
的修正值周围,而其他点的概率为0。如果将初始值
完全忽略,
可使用在
邻域上的均匀分布来进行初始化。
三、卡尔曼滤波
详细推导过程见【卡尔曼滤波】图文结合带你详细推导卡尔曼滤波(超详解)-CSDN博客,滤波笔记一:卡尔曼滤波(Kalman Filtering)详解-CSDN博客主要思想为:
贝叶斯滤波是理论框架,卡尔曼滤波则是工程实现,因此卡尔曼滤波其实就是贝叶斯滤波在高斯线性假设下的解析解,而当系统非线性时,各种卡尔曼变体(扩展卡尔曼滤波/无迹卡尔曼滤波等)是贝叶斯滤波的近似实现,两者都遵循“预测-更新”的贝叶斯闭环。工程中常用卡尔曼滤波而非广义贝叶斯滤波——核心在于计算可行性。贝叶斯滤波理论上要计算无穷维积分,而卡尔曼滤波只需要传播均值和协方差。在理想线性高斯系统中,卡尔曼滤波不仅是实用的最优估计器,同时它自然达到了理论极限PCRB。卡尔曼滤波的协方差矩阵其实就是达到PCRB的最优体现。
由贝叶斯滤波得到的公式我们可以看到,我们的目的是计算的后验概率,如果
任意分布,我们需要在
的所有可能取值点上,计算该取值的概率,这在计算上是难于实现的。这一计算问题可以有多种方法来近似,比如利用采样的方法,就是后面要讲的粒子滤波和无迹Kalman滤波。
而当假设服从Gauss分布,那么我们只需要分布的均值和方差就可以完全描述
,而无需在
的每个可能取值点上进行概率计算。这也是用高斯分布来近似
的好处,因为我们在每一个时刻,只需要计算均值
和方差
这两个数值,就可以对
完全描述,所以我们就可以推导出这两个数值的递推公式,从而在每个时刻由这两个数值的递推公式完全获得状态估计,这就是The Kalman Filter的基本思想。
3.1 正态分布(Guassian Distribution)
正态分布的特点
3.2 卡尔曼滤波
(1)模型假设
Kalman滤波所解决的问题,是对一个动态变化的系统的状态跟踪的问题,基本的模型假设包括:1)系统的状态方程是线性的;2)观测方程是线性的;3)过程噪声符合零均值高斯分布;4)观测噪声符合零均值高斯分布;从而,一直在线性变化的空间中操作高斯分布,状态的概率密度符合高斯分布。
①状态方程
②观测方程
其中过程噪声假设符合零均值高斯分布;观测噪声
假设符合零均值高斯分布。对于上述模型,我们可以用如下参数描述整个问题:
(2)具体算法
具体代码可参考
B站用户东爱北的GitHubhttps://github.com/liuchangji/2D-Kalman-Filter-Example_Dr_CAN_in_python
滤波笔记一:卡尔曼滤波(Kalman Filtering)详解-CSDN博客
卡尔曼滤波理论讲解与应用(matlab和python)_matlab+卡尔曼滤波的公式讲解和与应用-CSDN博客
参考:(一):细说贝叶斯滤波:Bayes filters - 王永才 - 博客园
(二). 细说Kalman滤波:The Kalman Filter - 王永才 - 博客园
四、扩展卡尔曼滤波
当状态(运动、过程)方程和观测方程均为非线性时,如果将高斯分布作为输入,输入到一个非线性函数中,得到的结果将不再符合高斯分布,也就将导致卡尔曼滤波器的公式不再适用。因此我们需要将上面的非线性函数转化为近似的线性函数求解。扩展卡尔曼滤波(EKF)的思路是利用泰勒级数展开将非线性系统线性化,然后采用卡尔曼滤波框架对信号进行滤波,因此它是一种次优滤波。
EKF通过泰勒级数展开,省略高阶项得到一个近似的线性系统。EKF只取到一阶导,同样也能有较好的结果。取一阶导时,状态转移方程和观测方程就近似为线性方程,高斯分布的变量经过线性变换之后仍然是高斯分布,这样就能够延用标准卡尔曼滤波的框架。
具体而言,EKF对于一般的非线性函数就是这样进行一阶展开的:
对于多元函数,也就是
其中,Df(a)叫雅可比矩阵,它是多元函数中各个因变量关于各个自变量的一阶偏导,一般记作J。
ps:在实际编程的时候可以直接调用函数计算雅克比矩阵。
4.1 扩展卡尔曼滤波计算公式
4.2 扩展卡尔曼滤波迭代过程