IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 贝叶斯角度推导卡尔曼滤波 -> 正文阅读

[数据结构与算法]贝叶斯角度推导卡尔曼滤波

运动、观测概念

什么是运动:考虑从k-1时刻到k时刻,位置x如何变化
什么是观测:在k时刻 x k x_k xk?处探测一个路标 y j y_j yj?

运动方程:
x k = f ( x k ? 1 , u k , w k ) x_k=f(x_{k-1},u_k,w_k) xk?=f(xk?1?,uk?,wk?)
u k u_k uk?表示传感器的读数, w k w_k wk?表示噪声

观测方程:在 x k x_k xk?处看到某个路标点 y j y_j yj?,产生一个观测数据 z k , j z_{k,j} zk,j?
z k , j = h ( y j , x k , v k , j ) z_{k,j}=h(y_j,x_k,v_{k,j}) zk,j?=h(yj?,xk?,vk,j?)
v k , j v_{k,j} vk,j?是观测 的噪声

多元高斯分布

高斯分布有两种表达方式:

  • 协方差矩阵+均值
  • 信息矩阵+信息矢量

协方差矩阵+均值的方式比较常见,如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

左边常数项记为 η η η p ( x ) p(x) p(x)可以记为:

在这里插入图片描述

其中对称正定矩阵 Σ Σ Σ为随机变量x的协方差矩阵,μ为x的均值,简记为
在这里插入图片描述

信息矩阵+信息矢量的形式可以由上式推导而来

在这里插入图片描述

现在定义信息矩阵 Ω = Σ ? 1 Ω=Σ^{?1} Ω=Σ?1 ,信息矢量 ξ = Σ ? 1 μ = Ω μ ξ=Σ^{?1}μ=Ωμ ξ=Σ?1μ=Ωμ,则

在这里插入图片描述

卡尔曼滤波推导过程

卡尔曼滤波中的条件独立:

  • 当给定某个时刻的状态变量 x n x_n xn?,该时刻的观测变量 z n z_n zn?与之前的任意观测变量条件独立
    p ( z k ∣ x k , z k ? 1 , . . . , z 1 ) = p ( z k ∣ x k ) (1) {\color{Red} p(z_k|x_k,z_{k-1},...,z_1)=p(z_k|x_k) } \tag{1} p(zk?xk?,zk?1?,...,z1?)=p(zk?xk?)(1)

    根据卡尔曼滤波模型的假设,当我们知道了状态变量的取值时,那么对应的观测变量的分布就确定了,它与更早之前的观测无关(事实上与更早之前的任意状态变量也无关),状态变量的取值就是所需的全部信息。

  • 当给定某一时刻的状态变量 x k ? 1 x_{k-1} xk?1?,下一时刻的状态变量 x k x_k xk?与之前的任意观测变量条件独立
    p ( x k ∣ x k ? 1 , z k ? 1 , . . . , z 1 ) = p ( x k ∣ x k ? 1 ) (2) {\color{Red} p(x_k|x_{k-1},z_{k-1},...,z_1) = p(x_k|x_{k-1})} \tag{2} p(xk?xk?1?,zk?1?,...,z1?)=p(xk?xk?1?)(2)

    根据卡尔曼滤波模型的假设,当我们知道了上一时刻状态变量t的取值时,那么下一时刻状态变量的分布就确定了,它与更早之前的观测无关(事实上与更早之前的任意状态变量也无关),前一时刻状态变量的取值就是所需的全部信息。

在推到卡尔曼滤波过程中,都是为了“凑出”运动变量、观测变量的条件概率 p ( x k ∣ x k ? 1 ) p(x_k|x_{k-1}) p(xk?xk?1?) p ( z k ∣ x k ) p(z_k|x_k) p(zk?xk?),基于以上两点,应用贝叶斯定理:
p ( x k ∣ z k , z k ? 1 , . . . , z 1 ) = p ( z k ∣ x k , z k ? 1 , . . . , z 1 ) p ( x k ∣ z k ? 1 , . . . , z 1 ) p ( z k ∣ z k ? 1 , . . . , z 1 ) = p ( z k ∣ x k ) p ( x k ∣ z k ? 1 , . . . , z 1 ) p ( z k ∣ z k ? 1 , . . . , z 1 ) (3) {\color{Red} \begin{aligned} p(x_k|z_k,z_{k-1},...,z_1)&= \frac{p(z_k|x_k,z_{k-1},...,z_1)p(x_k|z_{k-1},...,z_1)}{p(z_k|z_{k-1},...,z_1)} \\ &= \frac{p(z_k|x_k)p(x_k|z_{k-1},...,z_1)}{p(z_k|z_{k-1},...,z_1)} \tag{3} \end{aligned}} p(xk?zk?,zk?1?,...,z1?)?=p(zk?zk?1?,...,z1?)p(zk?xk?,zk?1?,...,z1?)p(xk?zk?1?,...,z1?)?=p(zk?zk?1?,...,z1?)p(zk?xk?)p(xk?zk?1?,...,z1?)??(3)
上式用到式(1)的条件独立性,已经凑出观测变量的条件概率: p ( z k ∣ x k ) p(z_k|x_k) p(zk?xk?),为了推到出目标表达式,分子的第二项着手,引入 x k ? 1 x_{k-1} xk?1?,对其积分得:
p ( x k ∣ z k ? 1 , . . . , z 1 ) = ∫ x k ? 1 p ( x k ∣ x k ? 1 , z k ? 1 , . . . , x 1 ) p ( x k ? 1 ∣ z k ? 1 , . . . , z 1 ) d x k ? 1 = ∫ x k ? 1 p ( x k ∣ x k ? 1 ) α ^ ( x k ? 1 ) d x k ? 1 (4) {\color{Red} \begin{aligned} p(x_k|z_{k-1},...,z_1) &= \int_{x_{k-1}}^{}p(x_k|x_{k-1},z_{k-1},...,x_1)p(x_{k-1}|z_{k-1},...,z_1) dx_{k-1}\\ & = \int_{x_{k-1}}^{}p(x_k|x_{k-1})\hat {\alpha }(x_{k-1})dx_{k-1} \tag{4} \end{aligned}} p(xk?zk?1?,...,z1?)?=xk?1??p(xk?xk?1?,zk?1?,...,x1?)p(xk?1?zk?1?,...,z1?)dxk?1?=xk?1??p(xk?xk?1?)α^(xk?1?)dxk?1??(4)
上式用到式(2)的条件独立性,又凑出 p ( x k ∣ x k ? 1 ) p(x_k|x_{k-1}) p(xk?xk?1?),将式(4)带入式(3)得:

α ^ ( x k ) = p ( z k ∣ x k ) ∫ x k ? 1 p ( x k ∣ x k ? 1 ) α ^ ( x k ? 1 ) d x k ? 1 p ( z k ∣ z k ? 1 , . . . , z 1 ) (5) {\color{Red} \begin{aligned} \hat {\alpha }(x_{k})=\frac{p(z_k|x_k)\int_{x_{k-1}}^{}p(x_k|x_{k-1})\hat {\alpha }(x_{k-1})dx_{k-1}}{p(z_k|z_{k-1},...,z_1)} \tag{5} \end{aligned}} α^(xk?)=p(zk?zk?1?,...,z1?)p(zk?xk?)xk?1??p(xk?xk?1?)α^(xk?1?)dxk?1???(5)

因为在卡尔曼滤波模型中,观测模型和状态转移概率模型都是线型高斯分布,因此基于此推导出的所有概率分布也是高斯分布。高斯分布由均值向量和协方差矩阵表示,接下来就是要把(5)式关于概率分布的递推式转换为关于均值向量和协方差矩阵的递推式,这样才能用计算机实现。 为此,需要引入另一个预备知识:

高斯分布的贝叶斯定理
已知一个多维高斯分布:
p ( x ) ~ N ( x ∣ μ , Λ ? 1 ) p(x) \sim N(x| \mu, \Lambda ^{-1}) p(x)N(xμ,Λ?1)
另一个多维随机变量[公式]在已知[公式]的条件下也服从高斯分布,且其均值为[公式]的线性变换,即
p ( x ) ~ N ( y ∣ A x + b , L ? 1 ) p(x) \sim N(y| Ax+b,L ^{-1}) p(x)N(yAx+b,L?1)
其中, A A A b b b是线性变换参数, L L L Λ \Lambda Λ是信息矩阵(协方差的逆矩阵)
p ( y ∣ x ) p(y|x) p(yx)定义了一个线性高斯模型,则 p ( y ) p(y) p(y) p ( x ∣ y ) p(x|y) p(xy)也服从高斯分布,均值和方差分别为:
E ( y ) = A μ + b c o v ( y ) = L ? 1 + A Λ ? 1 A T (6) E(y)=A\mu +b \\ cov(y)=L^{-1}+A \Lambda ^{-1}A^T \tag{6} E(y)=Aμ+bcov(y)=L?1+AΛ?1AT(6)
E ( x ∣ y ) = ( Λ + A T L A ) ? 1 ( A T L ( y ? b ) + Λ μ ) c o v ( x ∣ y ) = ( Λ + A T L A ) ? 1 (7) E(x|y)= (\Lambda +A^T LA)^{-1}(A^TL(y-b)+\Lambda \mu) \\ cov(x|y)= (\Lambda +A^TLA)^{-1} \tag{7} E(xy)=(Λ+ATLA)?1(ATL(y?b)+Λμ)cov(xy)=(Λ+ATLA)?1(7)
结论:已知一个随机变量的高斯分布及其条件高斯分布,求另一个随机变量的高斯分布及其条件高斯分布。

α ^ \hat {\alpha } α^的均值和方差为 μ k \mu_k μk? V k V_k Vk?,有:
α ^ ( x k ) = N ( x k ∣ μ k , V k ) (8) \color{Red} \hat {\alpha } (x_k)= N(x_k|\mu_k,V_k) \tag{8} α^(xk?)=N(xk?μk?,Vk?)(8)

转化为问题:已知一个随机变量的高斯分布及其条件高斯分布,求另一个随机变量的高斯分布
∫ x k ? 1 p ( x k ∣ x k ? 1 ) α ^ ( x k ? 1 ) d x k ? 1 = N ( x k ∣ A μ k ? 1 , P k ? 1 ) (9) \color{Red} \int_{x_{k-1}}^{}p(x_k|x_{k-1})\hat \alpha (x_{k-1})dx_{k-1}=N(x_k|A\mu_{k-1},P_{k-1}) \tag{9} xk?1??p(xk?xk?1?)α^(xk?1?)dxk?1?=N(xk?Aμk?1?,Pk?1?)(9)
其中:
P k ? 1 = L ? 1 + A V k ? 1 A T (10) \color{Red} P_{k-1}= L^{-1} +AV_{k-1}A^T \tag{10} Pk?1?=L?1+AVk?1?AT(10)

贝叶斯公式:
p ( x k ∣ z k ) = p ( z k ∣ x k ) p ( x k ) p ( z k ) (11) p(x_k|z_k)=\frac{p(z_k|x_k)p(x_k)}{p(z_k)} \tag{11} p(xk?zk?)=p(zk?)p(zk?xk?)p(xk?)?(11)

p ( x k ∣ z k , z k ? 1 , . . . , z 1 ) = α ^ ( x k ) = p ( z k ∣ x k ) . N ( x k ∣ A μ k ? 1 , P k ? 1 ) p ( z k ∣ z k ? 1 , . . . , z 1 ) (12) {\color{Red} \begin{aligned} p(x_k|z_k,z_{k-1},...,z_1) &=\hat {\alpha }(x_{k})=\frac{p(z_k|x_k).N(x_k|A\mu_{k-1},P_{k-1})}{p(z_k|z_{k-1},...,z_1)} \tag{12} \end{aligned}} p(xk?zk?,zk?1?,...,z1?)?=α^(xk?)=p(zk?zk?1?,...,z1?)p(zk?xk?).N(xk?Aμk?1?,Pk?1?)??(12)
对比贝叶斯公式(11)和式(12),(9)~(10)式的结果相当于我们已经求出了其中的 p ( x k ) p(x_k) p(xk?)。通过观察,这又是“已知一个随机变量的高斯分布及其条件高斯分布,求另一个随机变量的高斯分布”的问题,只不过此时变量的对应关系变为:

x … … x k y … … z k μ … … A μ k ? 1 Λ ? 1 … … P k ? 1 A … … C b … … 0 L ? 1 … … ∑ x……x_k\\ y……z_k\\ \mu……A\mu_{k-1}\\ \Lambda^{-1}……P_{k-1}\\ A……C\\ b……0\\ L^{-1}……\sum xxk?yzk?μAμk?1?Λ?1Pk?1?ACb0L?1
根据(7)式可以直接写出:
μ k = ( P k ? 1 ? 1 + C T ∑ ? 1 C ) ? 1 z k + P k ? 1 ? 1 A μ k ? 1 V k ? 1 = ( P k ? 1 ? 1 + C T ∑ ? 1 C ) ? 1 (13) \color{Red} \mu_k =(P^{-1}_{k-1} + C^T\sum{}{}^{-1} C)^{-1}z_k+P_{k-1}^{-1}A\mu_{k-1} \\ V_{k-1}=(P_{k-1}^{-1}+C^T\sum{}{}^{-1}C)^{-1} \tag{13} μk?=(Pk?1?1?+CT?1C?1zk?+Pk?1?1?Aμk?1?Vk?1?=(Pk?1?1?+CT?1C)?1(13)

上式为卡尔曼滤波公式的原始形式,对该式继续变形:

Woodbury等式
( A + B D ? 1 C ) ? 1 = A ? 1 ? A ? 1 B ( D + C A ? 1 B ) ? 1 C A ? 1 (14) (A+BD^{-1}C)^{-1} = A^{-1}-A^{-1}B(D+CA^{-1}B)^{-1}CA^{-1} \tag{14} (A+BD?1C)?1=A?1?A?1B(D+CA?1B)?1CA?1(14)

依式(14)对式(13)变形:
V k = ( P k ? 1 ? 1 + C T ∑ ? 1 C ) ? 1 = P k ? 1 ? P k ? 1 C T ( ∑ + C P k ? 1 C T ) ? 1 C P k ? 1 (15) V_k =(P^{-1}_{k-1}+C^T\sum{}{}^{-1}C)^{-1} \\ = P_{k-1}-P_{k-1}C^T(\sum{}{}+CP_{k-1}C^T)^{-1}CP_{k-1} \tag{15} Vk?=Pk?1?1?+CT?1C)?1=Pk?1??Pk?1?CT(+CPk?1?CT)?1CPk?1?(15)

记卡尔曼增益 K k = P k ? 1 C T ( ∑ + C P k ? 1 C T ) ? 1 K_k=P_{k-1}C^T(\sum{}{}+CP_{k-1}C^T)^{-1} Kk?=Pk?1?CT(+CPk?1?CT)?1
从而:
V k = ( P k ? 1 ? 1 + C T ∑ ? 1 C ) ? 1 = P k ? 1 ? K k C P k ? 1 = ( I ? K k C ) P k ? 1 (16) V_k =(P^{-1}_{k-1}+C^T\sum{}{}^{-1}C)^{-1} \\ = P_{k-1}-K_kCP_{k-1} \tag{16} = (I-K_kC)P_{k-1} Vk?=Pk?1?1?+CT?1C)?1=Pk?1??Kk?CPk?1?=(I?Kk?C)Pk?1?(16)

将(16)式带入(13)式整理得:
在这里插入图片描述

此即为后验分布的均值向量的最终形式,第二个等号对矩阵和相乘做展开,关键的技巧在于第三个等号,通过对第一项乘以一个单位阵 I = ( C P k ? 1 C T + ∑ ) ? 1 ( C P k ? 1 C T + ∑ ) I=(CP_{k-1}C^T+\sum)^{-1}(CP_{k-1}C^T+\sum) I=(CPk?1?CT+)?1(CPk?1?CT+)凑出 K k K_k Kk?,后面就是简单的乘法展开、求和与合并同类项了。

参考:https://zhuanlan.zhihu.com/p/69534520

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:47:47  更:2022-03-12 17:48:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:55:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码