贝叶斯推理以及贝叶斯滤波算法推导

贝叶斯推理以及贝叶斯滤波算法推导

最近重新翻了下《probability robotics》中对贝叶斯的数学推导和应用,恍然发现其大道至简,以及在卡尔曼滤波器,粒子滤波器等等的体现,以下给出相应的整理和理解以共分享和记录:

贝叶斯准则(Bayes rule):

p ( x ∣ y ) = η p ( y ∣ x ) p ( x ) p(x|y) =\eta p(y|x)p(x) p(xy)=ηp(yx)p(x)
其实这里是由两次条件概率公式推出的:
p ( x , y ) = p ( x ∣ y ) p ( y ) = p ( y ∣ x ) p ( x ) p(x,y) =p(x|y)p(y) = p(y|x)p(x) p(x,y)=p(xy)p(y)=p(yx)p(x)
所以这里的 η \eta η其实也就是 p ( y ) p(y) p(y),因为这里很多时候是一个常数,所以也称作归一化常数。贝叶斯准则说明了一个什么道理呢?就是:
后验概率 = 先验概率 × 似然概率 后验概率=先验概率\times 似然概率 后验概率=先验概率×似然概率
先验概率由以往的经验给出,似然概率又当前模型给出,贝叶斯准则简短的一行公式提供了很多工程应用指导。

贝叶斯滤波器

接下来将基于贝叶斯准则推理其应用,也就是贝叶斯滤波器:

  • 首先定义表示:
    t 时刻的状态量: x t t 时刻的观测量: z t t 时刻的控制量: u t t 时刻的转移概率: p ( x t ∣ x t − 1 , u t ) t 时刻的观测概率: p ( z t ∣ x t ) t 时刻的置信度: b e l ( x t ) = p ( x t ∣ z 1 : t , u 1 : t ) 基于 t 时刻以前的置信度 : b e l ‾ ( x t ) = p ( x t ∣ z 1 : t − 1 , u 1 : t ) t时刻的状态量:x_t \\ t时刻的观测量:z_t \\ t时刻的控制量:u_t \\ t时刻的转移概率:p(x_t|x_{t-1},u_t) \\ t时刻的观测概率:p(z_t|x_t) \\ t时刻的置信度:bel(x_t) = p(x_t|z_{1:t},u_{1:t}) \\ 基于t时刻以前的置信度: \overline{bel}(x_t) = p(x_t|z_{1:t-1},u_{1:t}) t时刻的状态量:xtt时刻的观测量:ztt时刻的控制量:utt时刻的转移概率:p(xtxt1,ut)t时刻的观测概率:p(ztxt)t时刻的置信度:bel(xt)=p(xtz1:t,u1:t)基于t时刻以前的置信度:bel(xt)=p(xtz1:t1,u1:t)
    同时给出假设:
    • 状态 x t x_t xt是完整的
    • 马尔可夫性质
      给出贝叶斯滤波算法,其实主要就是迭代两行公式:

B a y e s f i l t e r ( b e l ( x t − 1 ) , u t , z t ) : Bayes filter(bel(x_{t-1}), u_t, z_t): Bayesfilter(bel(xt1),ut,zt):
for all x t x_t xt do
b e l ‾ ( x t ) = ∫ p ( x t ∣ u t , x t − 1 ) b e l ( x t − 1 ) d x t − 1 \quad \overline{bel}(x_t) = \int p(x_t|u_t,x_{t-1})bel(x_{t-1})dx_{t-1} bel(xt)=p(xtut,xt1)bel(xt1)dxt1
b e l ( x t ) = η p ( z t ∣ x t ) b e l ‾ ( x t ) \quad bel(x_t) = \eta p(z_t|x_t)\overline{bel}(x_t) bel(xt)=ηp(ztxt)bel(xt)
end
return b e l ( x t ) bel(x_t) bel(xt)

具体来说就是系统给出了一个机器人系统上一时刻的置信度和限制的控制量和观测量,第一步预测现在的置信度也就是先验的部分,而第二部分更新结合了测量结果得到当前的后验概率。

  • 数学推导:
    同样两次条件概率公式:
    p ( x t , z t ∣ z 1 : t − 1 , u 1 : t ) = p ( x t ∣ z 1 : t , u 1 : t ) p ( z t ∣ z 1 : t − 1 , u 1 : t ) = p ( z t ∣ x t , z 1 : t − 1 , u 1 : t ) p ( x t ∣ z 1 : t − 1 u 1 : t ) p(x_t,z_t|z_{1:t-1},u_{1:t}) = p(x_t|z_{1:t},u_{1:t})p(z_t|z_{1:t-1},u_{1:t}) \\ \quad\quad\quad\quad\quad\quad\quad\quad =p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1}u_{1:t}) p(xt,ztz1:t1,u1:t)=p(xtz1:t,u1:t)p(ztz1:t1,u1:t)=p(ztxt,z1:t1,u1:t)p(xtz1:t1u1:t)
    所以有了: p ( x t ∣ z 1 : t , u 1 : t ) = p ( z t ∣ x t , z 1 : t − 1 , u 1 : t ) p ( x t ∣ z 1 : t − 1 u 1 : t ) p ( z t ∣ z 1 : t − 1 , u 1 : t ) = η p ( z t ∣ x t , z 1 : t − 1 , u 1 : t ) p ( x t ∣ z 1 : t − 1 u 1 : t ) p(x_t|z_{1:t},u_{1:t}) =\frac{p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1}u_{1:t})}{p(z_t|z_{1:t-1},u_{1:t})} \\ =\eta p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1}u_{1:t}) p(xtz1:t,u1:t)=p(ztz1:t1,u1:t)p(ztxt,z1:t1,u1:t)p(xtz1:t1u1:t)=ηp(ztxt,z1:t1,u1:t)p(xtz1:t1u1:t)
    由于之前的假设,x状态是完整的,所以我们可以有: p ( z t ∣ x t , z 1 : t − 1 , u 1 : t ) = p ( z t ∣ x t ) p(z_t|x_t,z_{1:t-1},u_{1:t}) = p(z_t|x_t) p(ztxt,z1:t1,u1:t)=p(ztxt)
    所以简化为:
    p ( x t ∣ z 1 : t , u 1 : t ) = η p ( z t ∣ x t ) p ( x t ∣ z 1 : t − 1 u 1 : t ) 即 : b e l ( x t ) = η p ( z t ∣ x t ) b e l ‾ ( x t ) p(x_t|z_{1:t},u_{1:t}) = \eta p(z_t|x_t)p(x_t|z_{1:t-1}u_{1:t}) \\ 即: bel(x_t) = \eta p(z_t|x_t)\overline{bel}(x_t) p(xtz1:t,u1:t)=ηp(ztxt)p(xtz1:t1u1:t):bel(xt)=ηp(ztxt)bel(xt)
    那么 b e l ‾ ( x t ) \overline{bel}(x_t) bel(xt)怎么由已知条件得到呢?由全概率公式推广: b e l ‾ ( x t ) = p ( x t ∣ z 1 : t − 1 u 1 : t ) = ∫ p ( x t ∣ x t − 1 , z 1 : t − 1 , u 1 : t ) p ( x t − 1 ∣ z 1 : t − 1 u 1 : t ) d x t − 1 \overline{bel}(x_t) = p(x_t|z_{1:t-1}u_{1:t})=\int p(x_t|x_{t-1},z_{1:t-1},u_{1:t})p(x_{t-1}|z_{1:t-1}u_{1:t})dx_{t-1} bel(xt)=p(xtz1:t1u1:t)=p(xtxt1,z1:t1,u1:t)p(xt1z1:t1u1:t)dxt1
    又一次因为知道 x t − 1 x_{t-1} xt1的完整状态,有: p ( x t ∣ x t − 1 , z 1 : t − 1 , u 1 : t ) = p ( x t ∣ x t − 1 , u t ) p(x_t|x_{t-1},z_{1:t-1},u_{1:t})=p(x_t|x_{t-1},u_t) p(xtxt1,z1:t1,u1:t)=p(xtxt1,ut),同时后一项也可以安全的省掉 u t u_t ut x t − 1 的估计 x_{t-1}的估计 xt1的估计,所以有了:
    b e l ‾ ( x t ) = ∫ p ( x t ∣ x t − 1 , u t ) p ( x t − 1 ∣ z 1 : t − 1 , u 1 : t − 1 ) d x t − 1 = ∫ p ( x t ∣ x t − 1 , u t ) b e l ( x − 1 ) d x t − 1 \overline{bel}(x_t)=\int p(x_t|x_{t-1},u_t)p(x_{t-1}|z_{1:t-1},u_{1:t-1})dx_{t-1} \\ = \int p(x_t|x_{t-1},u_t) bel(x-1) dx_{t-1} bel(xt)=p(xtxt1,ut)p(xt1z1:t1,u1:t1)dxt1=p(xtxt1,ut)bel(x1)dxt1
    也就是当前时刻的状态置信度由上一时刻的置信度以及状态转移概率给出。值得一提的是,还需要知道初始的置信度,这样便可以不断迭代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值