热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

原来各种滤波都是贝叶斯滤波算法的实现哦~

贝叶斯滤波三大概率先验概率似然概率后验概率离散情况下的贝叶斯滤波全概率公式:$P(T_m10.3)P(T_m10.3|T10)P(T10)+P(T_m10.3|T11)P(T11)

贝叶斯滤波三大概率

  • 先验概率
  • 似然概率
  • 后验概率

离散情况下的贝叶斯滤波

全概率公式:\(P(T_m=10.3)=P(T_m=10.3|T=10)P(T=10)+P(T_m=10.3|T=11)P(T=11)\)

其中\(P(T_m=10.3|T=10)\)是似然概率(代表传感器精度),\(P(T=10)\)是先验概率(已经开始假设了),所以\(P(T_m=10.3)\)为常数。

\(P(T_m=10.3)\)与T的取值无关,仅与T的分布律有关。T = 10,T = 11代表随机试验的一个结果,结果不会影响到分布律

所以就可以改写贝叶斯公式:

\[P(状态(因)|观测(果))=\eta P(观测|状态)P(状态) \]

\[P(T=10|T_m=10.3)=\frac {P(T_m=10.3|T=10)P(T=10)}{P(T_m=10.3)}=\eta P(T_m=10.3|T=10)P(T=10) \]

\[P(T=11|T_m=10.3)=\frac {P(T_m=10.3|T=11)P(T=11)}{P(T_m=10.3)}=\eta P(T_m=10.3|T=11)P(T=11) \]

\[………… \]

即:

\[后验 = \eta * 似然 * 先验 \]

\(\eta\)(归一化方法):

\[\sum后=\eta \sum似 * 先,并且\sum后=1,所以\eta =\frac{1}{\sum似 *先} \]

连续情况下的贝叶斯滤波

\[离散:P(X=x|Y=y)=\frac{P(Y=y|X=x)P(X=x)}{P(Y=y)} \]

\[连续:P(X

\[其中:f_{X|Y}(x|y)=\frac{f_{Y|X}(y|x)f_X(x)}{f_Y(y)}=\eta f_{Y|X}(y|x)f_X(x) \]

\(\eta\)(归一化方法):

\[\eta = \frac {1}{\int_{-\infty}^x {f_{Y|X}(y|x)f_X(x)}dx} \]

似然概率与狄拉克函数

X:状态 Y:观测

重要定理:

\(f_X(x)\rightarrow N(μ_1,\sigma^2)\)\(f_{Y|X}(y|x)\rightarrow N(μ_2,\sigma_2^2)\),则:

\[f_{X|y}(x|y)\rightarrow N(\frac {\sigma_1^2}{\sigma_1^2+\sigma_2^2}μ_2+\frac {\sigma_2^2}{\sigma_1^2+\sigma_2^2}μ_1,\frac {\sigma_1^2\sigma_2^2}{\sigma_1^2+\sigma_2^2}) \]

可继续推出:

\[若\sigma_1^2\gt\gt\sigma_2^2,后验\rightarrow N(μ_2,\sigma_2^2),倾向于“观测值(似然)” \]

\[若\sigma_1^2\lt\lt\sigma_2^2,后验\rightarrow N(μ_1,\sigma_1^2),倾向于“预测值(先验)” \]

随机过程的贝叶斯滤波

1~5讲,X先验,Y观测,仅有一个X,一个观测Y

随机过程\(X_0\rightarrow X_1 \rightarrow……\rightarrow X_k\)有一个初值\(X_0\),有k个观测值\(y_1,y_2,……,y_k\),怎么办?
  1. 所有的\(X_0, ……, X_k\)的先验概率都靠猜

    • 缺点:过于依赖观测(似然),放弃了预测(先验)信息

      例如:\(X_k=2X_{k-1}+Q_k\) \(X_k=X_{k-1}^2+Q_k\)

  2. 只有\(X_0\)的概率是猜的,\(X_1,……,X_k\)得先验概率是递推的

怎么做?
  1. 马尔科夫假设,观测独立假设
  2. 状态方程,观测方程(建模)

分两步:

  1. 预测步:上一时刻的后验\(\rightarrow\)这一时刻的先验(通过状态方程得到)
  2. 更新步:这一时刻的先验\(\rightarrow\)这一时刻的后验/下一时刻的先验

即:\(X_0\rightarrow X_1^-\rightarrow X_1^+\rightarrow X_2^- \rightarrow X_2^+……\)

贝叶斯滤波很大的缺点:从\(f_{k-1}^-\)\(f_k^-\),算\(\eta\)、期望都要进行无穷积分,大多数情况下无法得到解析解。

解决:

  1. 作假设
    • \(f(X_{k-1})、h(X_k)\)为线性,\(Q_k,R_k\)为正态高斯分布(卡尔曼滤波)
    • \(f(X_{k-1})、h(X_k)\)为非线性,\(Q_k,R_k\)为正态高斯分布(扩展卡尔曼滤波,即EKF、UKF等)
  2. 霸王硬上弓,直接对无穷积分作数值积分
    • 高斯积分(不常用)
    • 蒙特卡洛积分(粒子滤波Particle Filter)
    • 直方图滤波

贝叶斯滤波算法

原料:
  1. \(X_k=f(X_{k-1})+Q_k\)

  2. \(Y_k=h(X_k)+R_k\)

    其中:\(X_k、X_{k-1}、Y_k、Q_k、R_k\)都是随机变量

  3. 假设:\(X_0,Q_1,……,Q_k,R_1,……,R_k\)相互独立

  4. 有观测值:\(y_1,y_2,……,y_k\),设初值\(X_0->f_0(k),Q_k->f_{Q_k}(x),R_k->f_{R_k}(x)\)

  5. 重要定理:条件概率里的条件可做逻辑推导

计算步骤:

初值: \(X_0\rightarrow f_0^+(x)\)

预测:\(f_k^-(x)= \int_{-\infty} ^{+\infty} {f_Q[x-f(v)]f_{k-1}^+(v)}dv\)

更新:\(f_k^+(x)=\eta f_R[y_k-h(x)]f_k^-(x)\)

其中:\(\eta = (\int_{-\infty}^{+\infty}f_R[y_k-h(x)])^{-1}\)

估计:\(\hat x_k^+= \int_{-\infty}^{+\infty}xf_x^+(x)dx\)

贝叶斯滤波的实现之卡尔曼滤波

  1. Filter问题:请用计算机生成一个含正态噪声的信号,并用Kalman Filter滤波
  2. Sensor Fusion传感器融合:

使用matlab、C、C++、python

tips:

  1. 使用矩阵形式而不是一阶
  2. F、H可以不是方阵,阶数也可以不相同
  3. 泰勒展开

粒子滤波

应用广泛,原理最复杂,术语最多

适用环境:静态环境,动态可预测环境 。如:电池电量估算,视频跟踪,封闭环境导航(激光雷达+pf slam)

缺点:无穷积分,一般无解析解

粒子滤波完整算法:

  1. 给初值\(X_0\rightarrow N(μ,\sigma^2)\)
  2. 生成\(x_0^{(i)},w_0^{(i)}= \frac1n\)
  3. 预测步,生成\(x_1^{(i)}=f(x_0^{(i)}+v,v\)\(N(0,Q)\)的随机数,共\(n\)个;
  4. 更新步,设观测值为\(y_1\),生成\(w_1^{(i)}=f_R[y_1-h(x_1^{(i)})]*w_0^{(i)}\)
  5. \(w_1^{(i)}\)归一化,\(w_1^{(i)}=\frac {w_1^{(i)}}{\sum w_1^{(i)}}\)
  6. 此时,得到新的粒子\(x_1^{(i)}\),新的权重\(w_1^{(i)}\)
  7. 再由预测步生成\(x_2^{(i)}=f(x_1^{(i)})+v\)
  8. 再由更新步生成\(w_2^{(i)}=f_R[y_2-h(x_2^{(i)})]w_1^{(i)}\),归一化;
  9. 如此递推……

粒子滤波总结:

  1. 由大数定律,暗示了\(pdf\)可由带权重(简单地理解为平均值)的粒子表示;
  2. 粒子数量,粒子位置,粒子权重完全决定了\(cdf\)(概率分布函数),同时即决定了\(pdf\)(概率密度函数);
  3. 预测步改变粒子位置;
  4. 更新步更新粒子权重。

原来各种滤波都是贝叶斯滤波算法的实现哦~


推荐阅读
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录
    本文是2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录。文章介绍了皮亚诺曲线的概念和特点,并提供了计算皮亚诺曲线上两点距离的方法。通过给定的两个点的坐标,可以计算出它们之间沿着皮亚诺曲线走的最短距离。本文还提供了个人题解的目录,供读者参考。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
author-avatar
手机用户2602922383_687
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有