精华内容
下载资源
问答
  • 各种滤波分析

    2018-07-09 10:42:08
    针对RSSI的几种滤波方法进行比较,高斯滤波、卡尔曼滤波、均值滤波
  • HMM 模型适用于隐变量是离散的值的时候,对于连续隐变量的 HMM,常用线性动态系统描述线性高斯模型的态变量,使用粒子滤波来表述非高斯非线性变量。 LDS 又叫卡尔曼滤波,其中,线性体现在上一时刻和这一时刻的隐...

    线性动态系统

    动态系统两大问题:
    { L e a r n i n g I n f e r e n c e : p ( Z ∣ X )   { d e c o d i n g → H M M         ( 维特比 ) p r o b   o f   e v i d e n c e → p ( O ∣ λ )                 ( 前向/后向 ) f i l t e r i n g :      p ( z t ∣ x 1 , x 2 , ⋯   , x t ) s m o o t h i n g :        p ( z t ∣ x 1 , x 2 , ⋯   , x T )       ( 给定所有数据 ) p r e d i c t i o n : { p ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) p ( x t ∣ x 1 , x 2 , ⋯   , x t − 1 ) \left\{\begin{aligned}&Learning\\ &Inference:p(Z|X)\ \left\{ \begin{aligned} &decoding\to HMM\qquad\qquad\qquad\;\;\; _{(\text{维特比})} \\ &prob\ of\ evidence\to p(O|\lambda)\ \ \ \ \ \ \ \ \ \ \ \ \ \ _{(\text{前向/后向})} \\ &filtering:\quad\;\; p(z_t|x_1,x_2,\cdots,x_t)\\ &smoothing:\;\;\;p(z_t|x_1,x_2,\cdots,x_T)\ \ \ \ _{(\text{给定所有数据})}\\ &prediction:\left\{\begin{aligned}p(z_t|x_1,x_2,\cdots,x_{t-1})\\ p(x_t|x_1,x_2,\cdots,x_{t-1})\end{aligned}\right. \end{aligned}\right. \end{aligned}\right. LearningInference:p(ZX) decodingHMM(维特比)prob of evidencep(Oλ)              (前向/后向)filtering:p(ztx1,x2,,xt)smoothing:p(ztx1,x2,,xT)    (给定所有数据)prediction:{p(ztx1,x2,,xt1)p(xtx1,x2,,xt1)

    模型定义

    HMM 模型适用于隐变量是离散的值的时候,对于连续隐变量的 HMM,常用线性动态系统描述线性高斯模型的状态变量,使用粒子滤波来表述非高斯非线性变量。

    LDS 又叫卡尔曼滤波,其线性体现在上一时刻与当前时刻隐变量以及隐变量与观测变量之间:
    z t = A ⋅ z t − 1 + B + ε x t = C ⋅ z t + D + δ }   线性+噪声 ε ∼ N ( 0 , Q )   δ ∼ N ( 0 , R ) } 高斯分布噪声 \begin{aligned} &\left. \begin{aligned} z_t&=A\cdot z_{t-1}+B+\varepsilon\\ x_t&=C\cdot z_t+D+\delta \end{aligned} \right\}\color{blue}\ _\text{线性+噪声}\\ &\left. \begin{aligned} \varepsilon&\sim\mathcal{N}(0,Q)\ \\ \delta&\sim\mathcal{N}(0,R) \end{aligned} \right\}\color{blue}\quad_\text{高斯分布噪声} \end{aligned} ztxt=Azt1+B+ε=Czt+D+δ} 线性+噪声εδN(0,Q) N(0,R)}高斯分布噪声

    由线性高斯模型的性质可知:
    p ( z t ∣ z t − 1 ) ∼ N ( A ⋅ z t − 1 + B , Q ) p ( x t ∣ z t ) ∼ N ( C ⋅ z t + D , R ) z 1 ∼ N ( μ 1 , Σ 1 ) \begin{aligned} p(z_t|z_{t-1})&\sim\mathcal{N}(A\cdot z_{t-1}+B,Q)\\ p(x_t|z_t)&\sim\mathcal{N}(C\cdot z_t+D,R)\\ z_1&\sim\mathcal{N}(\mu_1,\Sigma_1) \end{aligned} p(ztzt1)p(xtzt)z1N(Azt1+B,Q)N(Czt+D,R)N(μ1,Σ1)

    LDS 滤波

    递推公式

    LDS 更关心滤波问题:边缘后验概率分布 p ( z t ∣ x 1 , x 2 , ⋯   , x t ) p(z_t|x_1,x_2,\cdots,x_t) p(ztx1,x2,,xt)。类似 HMM 中的前向算法,可以找一个递推关系

    x 1 , x 2 , ⋅ , x t x_1,x_2,\cdot,x_t x1,x2,,xt 的简化表示为 x 1 : t x_{1:t} x1:t ,有:
    p ( z t ∣ x 1 : t ) = p ( x 1 : t , z t ) p ( x 1 : t ) ∝ p ( x 1 : t , z t ) = p ( x t ∣ x 1 : t − 1 , z t ) p ( x 1 : t − 1 , z t ) = p ( x t ∣ z t ) p ( x 1 : t − 1 , z t ) = p ( x t ∣ z t ) p ( z t ∣ x 1 : t − 1 ) ⏟ P r e d i c t i o n p ( x 1 : t − 1 ) ⏟ 常数 ∝ p ( x t ∣ z t ) p ( z t ∣ x 1 : t − 1 )   \begin{aligned} \color{blue} p(z_t|x_{1:t})&=\frac{p(x_{1:t},z_t)} {\sout {p(x_{1:t})}}\\[12pt] &\propto{\color{blue}p(x_{1:t},z_t)} =p(x_t|x_{1:t-1},z_t)p(x_{1:t-1},z_t)\\ &=p(x_t|z_t)p(x_{1:t-1},z_t)\\ &=p(x_t|z_t)\underbrace{p(z_t|x_{1:t-1})}_{\color{blue}Prediction}\underbrace{p(x_{1:t-1})}_{\color{blue}\text{常数}}\\ &\propto p(x_t|z_t)p(z_t|x_{1:t-1})\ \end{aligned} p(ztx1:t)=p(x1:t)p(x1:t,zt)p(x1:t,zt)=p(xtx1:t1,zt)p(x1:t1,zt)=p(xtzt)p(x1:t1,zt)=p(xtzt)Prediction p(ztx1:t1)常数 p(x1:t1)p(xtzt)p(ztx1:t1) 

    对于上式中的 p r e d i c t i o n prediction prediction 项:
    p ( z t ∣ x 1 : t − 1 ) = ∫ z t − 1 p ( z t , z t − 1 ∣ x 1 : t − 1 ) d z t − 1 = ∫ z t − 1 p ( z t ∣ z t − 1 , x 1 : t − 1 ) p ( z t − 1 ∣ x 1 : t − 1 ) d z t − 1 = ∫ z t − 1 p ( z t ∣ z t − 1 ) p ( z t − 1 ∣ x 1 : t − 1 ) d z t − 1 \begin{aligned} p(z_t|x_{1:t-1})&=\int_{z_{t-1}}p(z_t,z_{t-1}|x_{1:t-1})dz_{t-1}\\ &=\int_{z_{t-1}}p(z_t|z_{t-1},x_{1:t-1})p(z_{t-1}|x_{1:t-1})dz_{t-1}\\ &=\int_{z_{t-1}}p(z_t|z_{t-1}){\color{blue}p(z_{t-1}|x_{1:t-1})}dz_{t-1} \end{aligned} p(ztx1:t1)=zt1p(zt,zt1x1:t1)dzt1=zt1p(ztzt1,x1:t1)p(zt1x1:t1)dzt1=zt1p(ztzt1)p(zt1x1:t1)dzt1

    至此,得到了关于 p ( z t ∣ x 1 : t ) \color{blue} p(z_t|x_{1:t}) p(ztx1:t) 的递推公式,总体上可分为两个部分

    • p ( z t − 1 ∣ x 1 : t − 1 ) \color{blue} p(z_{t-1}|x_{1:t-1}) p(zt1x1:t1) 可看作 u p d a t e update update
    • p ( z t ∣ x 1 : t − 1 ) \color{blue} p(z_t|x_{1:t-1}) p(ztx1:t1) 可看作 p r i d i c t i o n pridiction pridiction

    这其实是一个 Online 的过程:
    t = 1   { p ( z 1 ∣ x 1 ) ⟶ u p d a t e p ( z 2 ∣ x 1 ) ⟶ p r i d i c t i o n t = 2   { p ( z 2 ∣ x 1 , x 2 ) ⟶ u p d a t e p ( z 3 ∣ x 1 , x 2 ) ⟶ p r i d i c t i o n ⋮ t = T   { p ( z T ∣ x 1 , ⋯   , x T ) ⟶ u p d a t e p ( z T + 1 ∣ x 1 , ⋯   , x T ) ⟶ p r i d i c t i o n \begin{aligned} &t=1\ \left\{ \begin{aligned} &p(z_1|x_1)\longrightarrow update\\ &p(z_2|x_1)\longrightarrow pridiction \end{aligned} \right.\\[12pt] &t=2\ \left\{ \begin{aligned} &p(z_2|x_1,x_2)\longrightarrow update\\ &p(z_3|x_1,x_2)\longrightarrow pridiction \end{aligned} \right.\\ &\quad \vdots\\ & t=T\ \left\{ \begin{aligned} &p(z_T|x_1,\cdots,x_T)\longrightarrow update\\ &p(z_{T+1}|x_1,\cdots,x_T)\longrightarrow pridiction \end{aligned} \right. \end{aligned} t=1 {p(z1x1)updatep(z2x1)pridictiont=2 {p(z2x1,x2)updatep(z3x1,x2)pridictiont=T {p(zTx1,,xT)updatep(zT+1x1,,xT)pridiction

    Prediction

    对于线性高斯假设,可以得到解析解:

    p ( z t ∣ x 1 : t − 1 ) = ∫ z t − 1 p ( z t ∣ z t − 1 ) p ( z t − 1 ∣ x 1 : t − 1 ) d z t − 1 = ∫ z t − 1 N ( A z t − 1 + B , Q ) N ( μ t − 1 , Σ t − 1 ) d z t − 1 \begin{aligned} p(z_t|x_{1:t-1})&=\int_{z_{t-1}}p(z_t|z_{t-1})p(z_{t-1}|x_{1:t-1})dz_{t-1}\\ &=\int_{z_{t-1}}\mathcal{N}(Az_{t-1}+B,Q)\mathcal{N}(\mu_{t-1},\Sigma_{t-1})dz_{t-1} \end{aligned} p(ztx1:t1)=zt1p(ztzt1)p(zt1x1:t1)dzt1=zt1N(Azt1+B,Q)N(μt1,Σt1)dzt1

    其中第二个高斯分布是上一步的 Update 过程,所以根据线性高斯模型性质:
    p ( x ) = N ( x ∣ μ ,   Λ − 1 ) p ( y ∣ x ) = N ( y ∣ A x + b ,   L − 1 ) p ( y ) = N ( y ∣ A μ + b ,   L − 1 + A Λ − 1 A T ) \boxed{\begin{aligned} p(x)&=\mathcal N(x|\mu,\ \Lambda^{-1})\\ p(y|x)&=\mathcal N(y|Ax+b,\ L^{-1})\\ p(y)&=\mathcal N(y|A\mu+b,\ L^{-1}+A\Lambda^{-1}A^T) \end{aligned}} p(x)p(yx)p(y)=N(xμ, Λ1)=N(yAx+b, L1)=N(yAμ+b, L1+AΛ1AT)

    可直接写出该积分: p ( z t ∣ x 1 : t − 1 ) = N ( A μ t − 1 + B , Q + A Σ t − 1 A T ) p(z_t|x_{1:t-1})=\mathcal{N}(A\mu_{t-1}+B,Q+A\Sigma_{t-1}A^T) p(ztx1:t1)=N(Aμt1+B,Q+AΣt1AT)

    Update

    p ( z t ∣ x 1 : t ) ∝ p ( x t ∣ z t ) p ( z t ∣ x 1 : t − 1 ) p(z_t|x_{1:t})\propto p(x_t|z_t)p(z_t|x_{1:t-1}) p(ztx1:t)p(xtzt)p(ztx1:t1) 同样可以利用线性高斯模型的性质直接写出这个高斯分布。

    参考文献

    【1】线性动态系统
    【2】详解卡尔曼滤波原理
    【3】How a Kalman filter works, in pictures
    【4】线性动态系统与卡尔曼滤波
    【5】隐马尔科夫模型(HMM)与线性动态系统(LDS)
    【6】贝叶斯视角下的卡尔曼滤波
    【7】机器学习中的高斯分布
    【8】[易懂]如何理解那个把嫦娥送上天的卡尔曼滤波算法Kalman filter?

    展开全文
  • HMM 模型适用于隐变量是离散的值的时候,对于连续隐变量的 HMM,常用卡尔曼滤波(Kalman Filtering)描述线性高斯模型的态变量,使用粒子滤波(Particle Filter)来表述非高斯非线性的态变量。 线性体现在上一时刻和...

    一、概述

    HMM 模型适用于隐变量是离散的值的时候,对于连续隐变量的 HMM,常用卡尔曼滤波(Kalman Filtering)描述线性高斯模型的态变量,使用粒子滤波(Particle Filter)来表述非高斯非线性的态变量。

    线性体现在上一时刻和这一时刻的隐变量以及隐变量和观测变量之间,它们的关系可以表示为:

    z t = A ⋅ z t − 1 + B + ε x t = C ⋅ z t + D + δ ε ∼ N ( 0 , Q ) δ ∼ N ( 0 , R ) z_{t}=A\cdot z_{t-1}+B+\varepsilon \\ x_{t}=C\cdot z_{t}+D+\delta \\ \varepsilon \sim N(0,Q)\\ \delta \sim N(0,R) zt=Azt1+B+εxt=Czt+D+δεN(0,Q)δN(0,R)

    类比HMM中几个参数,我们也可以写出类似初始概率、转移概率或发射概率的形式:

    P ( z t ∣ z t − 1 ) ∼ N ( A ⋅ z t − 1 + B , Q ) P ( x t ∣ z t ) ∼ N ( C ⋅ z t + D , R ) z 1 ∼ N ( μ 1 , Σ 1 ) P(z_{t}|z_{t-1})\sim N(A\cdot z_{t-1}+B,Q)\\ P(x_{t}|z_{t})\sim N(C\cdot z_{t}+D,R)\\ z_{1}\sim N(\mu _{1},\Sigma _{1}) P(ztzt1)N(Azt1+B,Q)P(xtzt)N(Czt+D,R)z1N(μ1,Σ1)

    所有的参数为:

    θ = ( A , B , C , D , Q , R , μ 1 , Σ 1 ) \theta =(A,B,C,D,Q,R,\mu _{1},\Sigma _{1}) θ=(A,B,C,D,Q,R,μ1,Σ1)

    二、Filtering问题

    在多个inference问题中,卡尔曼滤波更关心Filtering问题,即求边缘概率:

    P ( z t ∣ x 1 , x 2 , ⋯   , x t ) P(z_{t}|x_{1},x_{2},\cdots ,x_{t}) P(ztx1,x2,,xt)

    类似HMM的前向算法,我们需要找到一个递推关系:

    P ( z t ∣ x 1 , x 2 , ⋯   , x t ) = P ( x 1 , x 2 , ⋯   , x t , z t ) P ( x 1 , x 2 , ⋯   , x t ) ∝ P ( x 1 , x 2 , ⋯   , x t , z t ) = P ( x t ∣ x 1 , x 2 , ⋯   , x t − 1 , z t ) ⏟ P ( x t ∣ z t ) ⋅ P ( x 1 , x 2 , ⋯   , x t − 1 , z t ) = P ( x t ∣ z t ) ⋅ P ( x 1 , x 2 , ⋯   , x t − 1 , z t ) = P ( x t ∣ z t ) ⋅ P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ p r e d i c t i o n 问 题 ⋅ P ( x 1 , x 2 , ⋯   , x t − 1 ) ∝ P ( x t ∣ z t ) ⋅ P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) P(z_{t}|x_{1},x_{2},\cdots ,x_{t})\\ =\frac{P(x_{1},x_{2},\cdots ,x_{t},z_{t})}{P(x_{1},x_{2},\cdots ,x_{t})}\\ \propto P(x_{1},x_{2},\cdots ,x_{t},z_{t})\\ =\underset{P(x_{t}|z_{t})}{\underbrace{P(x_{t}|x_{1},x_{2},\cdots ,x_{t-1},z_{t})}}\cdot P(x_{1},x_{2},\cdots ,x_{t-1},z_{t})\\ =P(x_{t}|z_{t})\cdot P(x_{1},x_{2},\cdots ,x_{t-1},z_{t})\\ =P(x_{t}|z_{t})\cdot \underset{prediction问题} {\underbrace{P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1})}}\cdot P(x_{1},x_{2},\cdots ,x_{t-1})\\ \propto P(x_{t}|z_{t})\cdot P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1}) P(ztx1,x2,,xt)=P(x1,x2,,xt)P(x1,x2,,xt,zt)P(x1,x2,,xt,zt)=P(xtzt) P(xtx1,x2,,xt1,zt)P(x1,x2,,xt1,zt)=P(xtzt)P(x1,x2,,xt1,zt)=P(xtzt)prediction P(ztx1,x2,,xt1)P(x1,x2,,xt1)P(xtzt)P(ztx1,x2,,xt1)

    上式结果中, P ( x t ∣ z t ) P(x_{t}|z_{t}) P(xtzt)已知,而另一项可做以下转化:

    P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) = ∫ z t − 1 P ( z t , z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) d z t − 1 = ∫ z t − 1 P ( z t ∣ z t − 1 , x 1 , x 2 , ⋯   , x t − 1 ) ⏟ P ( z t ∣ z t − 1 ) ⋅ P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ F i l t e r i n g 问 题 d z t − 1 = ∫ z t − 1 P ( z t ∣ z t − 1 ) ⋅ P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) d z t − 1 P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1})\\ =\int _{z_{t-1}}P(z_{t},z_{t-1}|x_{1},x_{2},\cdots ,x_{t-1})\mathrm{d}z_{t-1}\\ =\int _{z_{t-1}}\underset{P(z_{t}|z_{t-1})}{\underbrace{P(z_{t}|z_{t-1},x_{1},x_{2},\cdots ,x_{t-1})}}\cdot \underset{Filtering问题}{\underbrace{P(z_{t-1}|x_{1},x_{2},\cdots ,x_{t-1})}}\mathrm{d}z_{t-1}\\ =\int _{z_{t-1}}P(z_{t}|z_{t-1})\cdot P(z_{t-1}|x_{1},x_{2},\cdots ,x_{t-1})\mathrm{d}z_{t-1} P(ztx1,x2,,xt1)=zt1P(zt,zt1x1,x2,,xt1)dzt1=zt1P(ztzt1) P(ztzt1,x1,x2,,xt1)Filtering P(zt1x1,x2,,xt1)dzt1=zt1P(ztzt1)P(zt1x1,x2,,xt1)dzt1

    因此,我们找到了Filtering问题的递推式:

    P ( z t ∣ x 1 , x 2 , ⋯   , x t ) = C ⋅ P ( x t ∣ z t ) ⋅ ∫ z t − 1 P ( z t ∣ z t − 1 ) ⋅ P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) d z t − 1 {\color{Red}{P(z_{t}|x_{1},x_{2},\cdots ,x_{t})}}=C\cdot P(x_{t}|z_{t})\cdot \int _{z_{t-1}}P(z_{t}|z_{t-1})\cdot {\color{Red}{P(z_{t-1}|x_{1},x_{2},\cdots ,x_{t-1})}}\mathrm{d}z_{t-1} P(ztx1,x2,,xt)=CP(xtzt)zt1P(ztzt1)P(zt1x1,x2,,xt1)dzt1

    因此,我们可以确定求解Filtering问题的步骤如下:

    t = 1 { P ( z 1 ∣ x 1 ) → u p d a t e P ( z 2 ∣ x 1 ) → p r e d i c t i o n t = 2 { P ( z 2 ∣ x 1 , x 2 ) → u p d a t e P ( z 3 ∣ x 1 , x 2 ) → p r e d i c t i o n ⋮ t { P ( z t ∣ x 1 , x 2 , ⋯   , x t ) → u p d a t e P ( z t + 1 ∣ x 1 , x 2 , ⋯   , x t ) → p r e d i c t i o n t=1\left\{\begin{matrix} P(z_{1}|x_{1})\rightarrow update\\ P(z_{2}|x_{1})\rightarrow prediction \end{matrix}\right.\\ t=2\left\{\begin{matrix} P(z_{2}|x_{1},x_{2})\rightarrow update\\ P(z_{3}|x_{1},x_{2})\rightarrow prediction \end{matrix}\right.\\ \vdots \\ t\left\{\begin{matrix} P(z_{t}|x_{1},x_{2},\cdots ,x_{t})\rightarrow update\\ P(z_{t+1}|x_{1},x_{2},\cdots ,x_{t})\rightarrow prediction \end{matrix}\right. t=1{P(z1x1)updateP(z2x1)predictiont=2{P(z2x1,x2)updateP(z3x1,x2)predictiont{P(ztx1,x2,,xt)updateP(zt+1x1,x2,,xt)prediction

    很明显这是一个online的过程。

    三、Filtering问题求解

    通过上述转化我们可以确定Filtering问题的计算是通过以下两步迭代计算进行的:

    Step1 Prediction:
    P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) = ∫ z t − 1 P ( z t ∣ z t − 1 ) ⋅ P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) d z t − 1 P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1})=\int _{z_{t-1}}P(z_{t}|z_{t-1})\cdot P(z_{t-1}|x_{1},x_{2},\cdots ,x_{t-1})\mathrm{d}z_{t-1} P(ztx1,x2,,xt1)=zt1P(ztzt1)P(zt1x1,x2,,xt1)dzt1
    Step2 Update:
    P ( z t ∣ x 1 , x 2 , ⋯   , x t ) = C ⋅ P ( x t ∣ z t ) ⋅ P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) P(z_{t}|x_{1},x_{2},\cdots ,x_{t})=C\cdot P(x_{t}|z_{t})\cdot P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1}) P(ztx1,x2,,xt)=CP(xtzt)P(ztx1,x2,,xt1)

    我们可以确定的是几个高斯分布经过相乘或者积分运算后仍然是高斯分布,所以我们假设:

    P r e d i c t i o n : P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) = N ( z t ∣ μ t ∗ , Σ t ∗ ) U p d a t e : P ( z t ∣ x 1 , x 2 , ⋯   , x t ) = N ( z t ∣ μ t , Σ t ) Prediction:P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1})=N(z_{t}|\mu _{t}^{*},\Sigma _{t}^{*})\\ Update:P(z_{t}|x_{1},x_{2},\cdots ,x_{t})=N(z_{t}|\mu _{t},\Sigma _{t}) Prediction:P(ztx1,x2,,xt1)=N(ztμt,Σt)Update:P(ztx1,x2,,xt)=N(ztμt,Σt)

    代入高斯分布的形式可以得到:

    P r e d i c t i o n : N ( z t ∣ μ t ∗ , Σ t ∗ ) = ∫ z t − 1 N ( z t ∣ A ⋅ z t − 1 + B , Q ) ⋅ N ( z t − 1 ∣ μ t − 1 , Σ t − 1 ) ⋅ d z t − 1 U p d a t e : N ( z t ∣ μ t , Σ t ) = C ⋅ N ( x t ∣ C ⋅ z t + D , R ) ⋅ N ( z t ∣ μ t ∗ , Σ t ∗ ) Prediction:N(z_{t}|\mu _{t}^{*},\Sigma _{t}^{*})=\int _{z_{t-1}}N(z_{t}|A\cdot z_{t-1}+B,Q)\cdot N(z_{t-1}|\mu _{t-1},\Sigma _{t-1})\cdot \mathrm{d}z_{t-1} \\ Update:N(z_{t}|\mu _{t},\Sigma _{t})=C\cdot N(x_{t}|C\cdot z_{t}+D,R)\cdot N(z_{t}|\mu _{t}^{*},\Sigma _{t}^{*}) Prediction:N(ztμt,Σt)=zt1N(ztAzt1+B,Q)N(zt1μt1,Σt1)dzt1Update:N(ztμt,Σt)=CN(xtCzt+D,R)N(ztμt,Σt)

    接下来的求解需要用到高斯分布|机器学习推导系列(二)第六部分内容中我们得到的结论,即已知 P ( x ) P(x) P(x) P ( y ∣ x ) P(y|x) P(yx)来求 P ( y ) P(y) P(y) P ( x ∣ y ) P(x|y) P(xy),这里我们直接套用公式即可。

    首先,在Prediction过程中:

    P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ P ( y ) = ∫ z t − 1 P ( z t ∣ z t − 1 ) ⏟ P ( y ∣ x ) ⋅ P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ P ( x ) d z t − 1 \underset{P(y)}{\underbrace{P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1})}}=\int _{z_{t-1}}\underset{P(y|x)}{\underbrace{P(z_{t}|z_{t-1})}}\cdot \underset{P(x)}{\underbrace{P(z_{t-1}|x_{1},x_{2},\cdots ,x_{t-1})}}\mathrm{d}z_{t-1} P(y) P(ztx1,x2,,xt1)=zt1P(yx) P(ztzt1)P(x) P(zt1x1,x2,,xt1)dzt1

    代入计算 P ( y ) P(y) P(y)的公式可得:

    μ t ∗ = A μ t − 1 + B Σ t ∗ = Q + A Σ t − 1 A T \mu _{t}^{*}=A\mu _{t-1}+B\\ \Sigma _{t}^{*}=Q+A\Sigma _{t-1}A^{T} μt=Aμt1+BΣt=Q+AΣt1AT

    在update过程中:

    P ( z t ∣ x 1 , x 2 , ⋯   , x t ) ⏟ P ( x ∣ y ) = C ⋅ P ( x t ∣ z t ) ⏟ P ( y ∣ x ) ⋅ P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ P ( x ) \underset{P(x|y)}{\underbrace{P(z_{t}|x_{1},x_{2},\cdots ,x_{t})}}=C\cdot \underset{P(y|x)}{\underbrace{P(x_{t}|z_{t})}}\cdot \underset{P(x)}{\underbrace{P(z_{t}|x_{1},x_{2},\cdots ,x_{t-1})}} P(xy) P(ztx1,x2,,xt)=CP(yx) P(xtzt)P(x) P(ztx1,x2,,xt1)

    代入计算 P ( x ∣ y ) P(x|y) P(xy)的的公式也可以得出结果,过程比较复杂,所以省略。

    注意这里将 x 1 , x 2 , ⋯   , x t − 1 x_{1},x_{2},\cdots ,x_{t-1} x1,x2,,xt1看做已知即可,然后再套用 p ( x ) p(x) p(x) p ( y ∣ x ) p(y|x) p(yx)等形式。

    另外这里只需要根据公式直接套用得出结果即可,具体的得出的Prediction和Update计算公式并没有用到。

    展开全文
  • 粒子滤波算法学习

    2018-07-08 21:38:06
    粒子滤波作为前期信号和数据处理的需要,能使得机器学习的数据更加精确
  • 滤波算法程序

    2017-09-14 21:31:41
    为初级者提供了简单的滤波,详细的用C语言编写了10滤波波算法,实现了原理向代码的转换,滤波算法程序简单易懂。
  • 协方差矩阵状态协方差矩阵传递状态协方差的更新Matlab 实现Matlab效果测试代码测试效果【原创】Liu_LongPo ...而且由于观测包含系统的噪声和干扰的影响,所以最优估计也可看做是滤波过程。卡尔曼滤波器的核心内容就...
    
    


    【原创】Liu_LongPo 转载请注明出处 
    【CSDN】http://blog.csdn.net/llp1992

    卡尔曼滤波器是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。而且由于观测包含系统的噪声和干扰的影响,所以最优估计也可看做是滤波过程。

    卡尔曼滤波器的核心内容就是5条公式,计算简单快速,适合用于少量数据的预测和估计。

    下面我们用一个例子来说明一下卡尔曼算法的应用。

    假设我们想在有一辆小车,在 t 时刻其速度为 Vt ,位置坐标为 Pt,ut 表示 t 时刻的加速度,那么我们可以用Xt表示 t 时刻的状态,如下:


    则我们可以得到,由t-1 时刻到 t 时刻,位置以及速度的转换如下:


    用向量表示上述转换过程,如下:


    如下图:


    那么我们可以得到如下的状态转移公式:


     (1)

    其中矩阵 F 为状态转移矩阵,表示如何从上一状态来推测当前时刻的状态,B 为控制矩阵,表示控制量u如何作用于当前矩阵,上面的公式 x 有顶帽子,表示只是估计值,并不是最优的。

    有了状态转移公式就可以用来推测当前的状态,但是所有的推测都是包含噪声的,噪声越大,不确定越大,协方差矩阵用来表示这次推测带来的不确定性

    协方差矩阵

    假设我们有一个一维的数据,这个数据每次测量都不同,我们假设服从高斯分布,那么我们可以用均值和方差来表示该数据集,我们将该一维数据集投影到坐标轴上,如下图:


    可以看到,服从高斯分布的一维数据大部分分布在均值附近。

    现在我们来看看服从高斯分布的二维数据投影到坐标轴的情况,如下图:


    二维数据比一维数据稍微复杂一点,投影后有3种情况,分别是: 
    左图:两个维的数据互不相关; 
    中图:两个维的数据正相关,也就是 y 随着 x 的增大而增大(假设两个维分别为 x 和 y) 
    右图:两个维的数据负相关,也就是 y 随着 x 的增大而减小。

    那怎么来表示两个维的数据的相关性呢?答案就是协方差矩阵。


    状态协方差矩阵传递

    在公式(1)之中,我们已经得到了状态的转移公式,但是由上面可知,二维数据的协方差矩阵对于描述数据的特征是很重要的,那么我们应该如何更新或者说传递我们的二维数据的协方差矩阵呢?假如我们用 P 来表示状态协方差,即


    那么加入状态转换矩阵 F ,得到


     (2)

    也即:


    因此我们便得到了协方差的转换公式。

    现在我们得到了两个公式,运用这两个公式能够对现在状态进行预测。按照我们的正常思路来理解,预测结果不一定会对嘛,肯定有误差。而且在我们大多数回归算法或者是拟合算法中,一般思路都是先预测,然后看看这个预测结果跟实际结果的误差有多大,再根据这个误差来调整预测函数的参数,不断迭代调整参数直到预测误差小于一定的阈值。

    卡尔曼算法的迭代思想也类似,不过这里根据误差调整的是状态 X 。

    在这里,我们的实际数据就是 Z, 如下图:


    其中,矩阵 H 为测量系统的参数,即观察矩阵,v 为观测噪声, 其协方差矩阵为R

    那么我们的状态更新公式如下:


    其中K 为卡尔曼系数, Z-Hx 则为残差,也就是我们说的,预测值与实际值的误差。

    K的作用:

    1.K 权衡预测协方差P和观察协方差矩阵R那个更加重要,相信预测,残差的权重小,相信观察,残差权重大,由 K 的表达是可以退出这个结论 
    2,将残差的表现形式从观察域转换到状态域(残差与一个标量,通过K 转换为向量),由 状态 X 的更新公式可得到该结论。

    至此,我们已经得到了 t 状态下的最优估计值 Xt。但为了能让我们的迭代算法持续下去,我们还必须更新状态协方差的值。

    状态协方差的更新


    以上就是卡尔曼滤波算法的思想,只有简单的 5 条公式,总结如下:


    Matlab 实现

    function kalmanFiltering
    %%
    clc
    close all
    
    %%
    %
    %   Description : kalmanFiltering
    %   Author : Liulongpo
    %   Time:2015-4-29 16:42:34
    %
    
    %%
    Z=(1:2:200); %观测值  汽车的位置  也就是我们要修改的量
    noise=randn(1,100); %方差为1的高斯噪声
    Z=Z+noise;
    X=[0 ; 0 ]; %初始状态
    P=[1 0;0 1]; %状态协方差矩阵
    F=[1 1;0 1]; %状态转移矩阵
    Q=[0.0001,0;0 , 0.0001]; %状态转移协方差矩阵
    H=[1,0]; %观测矩阵
    R=1; %观测噪声协方差矩阵
    figure;
    hold on;
    for i = 1:100
    %基于上一状态预测当前状态  
    X_ = F*X;
    % 更新协方差  Q系统过程的协方差  这两个公式是对系统的预测
    P_ = F*P*F'+Q;
    % 计算卡尔曼增益
    K = P_*H'/(H*P_*H'+R);
    % 得到当前状态的最优化估算值  增益乘以残差
    X = X_+K*(Z(i)-H*X_);
    %更新K状态的协方差
    P = (eye(2)-K*H)*P_;
    scatter(X(1), X(2),4); %画点,横轴表示位置,纵轴表示速度
    end
    
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    Matlab效果


    其中 x 轴为位置,y轴为速度。 
    在代码中,我们设定x的变化是 1:2:200,则速度就是2,可以由上图看到,值经过几次迭代,速度就基本上在 2 附近摆动,摆动的原因是我们加入了噪声。

    接下来来看一个实际例子。

    我们的数据为 data = [149.360 , 150.06, 151.44, 152.81,154.19 ,157.72]; 
    这是运用光流法从视频中获取角点的实际x轴坐标,总共有6个数据,也就是代表了一个点的连续6帧的x轴坐标。接下来这个例子,我们将实现用5帧的数据进行训练,然后预测出第6帧的x轴坐标。

    在上一个matlab例子中,我们的训练数据比较多,因此我们的初始状态设置为[0,0],也就是位置为0,速度为0,在训练数据比较多的情况下,初始化数据为0并没有关系,因为我们在上面的效果图中可以看到,算法的经过短暂的迭代就能够发挥作用。

    但在这里,我们的训练数据只有5帧,所以为了加快训练,我们将位置状态初始化为第一帧的位置,速度初始化为第二帧与第一帧之差。

    测试代码:

    KF.m

    function [predData,dataX] = KF(dataZ)
    
    %%
    %
    %   Description : kalmanFiltering
    %   Author : Liulongpo
    %   Time:2015-4-29 16:42:34
    %
    %%
    Z = dataZ';
    len = length(Z);
    %Z=(1:2:200); %观测值  汽车的位置  也就是我们要修改的量
    noise=randn(1,len); %方差为1的高斯噪声
    dataX = zeros(2,len);
    Z=Z+noise;
    X=[Z(1) ; Z(2)-Z(1) ]; %初始状态  分别为 位置 和速度
    P=[1 0;0 1]; %状态协方差矩阵
    F=[1 1;0 1]; %状态转移矩阵
    Q=[0.0001,0;0 , 0.0001]; %状态转移协方差矩阵
    H=[1,0]; %观测矩阵
    R=1; %观测噪声协方差矩阵
    %figure;
    %hold on;
    for i = 1:len
    %基于上一状态预测当前状态  
    % 2x1  2x1
    X_ = F*X;
    % 更新协方差  Q系统过程的协方差  这两个公式是对系统的预测
    %   2x1  2x1  1x2  2x2
    P_ = F*P*F'+Q;
    % 计算卡尔曼增益
    K = P_*H'/(H*P_*H'+R);
    % 得到当前状态的最优化估算值  增益乘以残差
    X = X_+K*(Z(i)-H*X_);
    %更新K状态的协方差
    P = (eye(2)-K*H)*P_;
    dataX(:,i) = [X(1);X(2)];
    %scatter(X(1), X(2),4); %画点,横轴表示位置,纵轴表示速度
    end
    predData = F*X;
    end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    testKF.m

    function testKF
    %% 
    clc
    close all
    %%
    %data = load('D:\\a.txt');
    %data = [149.360 , 150.06, 151.44, 152.81,154.19,157.72,157.47,159.33,153.66];
    data = [149.360 , 150.06, 151.44, 152.81,154.19 ,157.72];
    [predData , DataX] = KF(data');
    error = DataX(1,:) - data;
    
    i = 1:length(data);
    figure
    subplot 311
    scatter(i,data,3),title('原始数据')
    subplot 312
    scatter(i,DataX(1,:),3),title('预测数据')
    subplot 313
    scatter(i,error,3),title('预测误差')
    predData(1)
    %{
    scatter(i,error,3);
    figure
    scatter(i,data,3)
    figure
    scatter(i,predData(1,:),3)
    %}
    end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    测试效果:


    预测结果为: 155.7493 ,跟实际结果 157.72 仅有1.9 的误差,可以看到,卡尔曼滤波器算法对于少量数据的预测效果还是挺不错的。当然,预测位置的同时,我们也得到了预测速度。

    参考文献: 视频: 卡尔曼滤波的原理以及在MATLAB中的实现

    展开全文
  • Kalman 滤波根据线性高斯模型可求得解析解,但是在非线性、非高斯的情况下无法得到解析解,对这类一般的情况,则要采用粒子滤波的方法 对于复杂的概率分布,可以通过一个简单的概率分布 q(z)q(z)q(z) 作为桥梁进行...

    Particle Filter

    Kalman 滤波根据线性高斯模型可求得解析解,但是在非线性、非高斯的情况下无法得到解析解,对这类一般的情况,则要采用粒子滤波的方法

    对于复杂的概率分布,可以通过一个简单的概率分布 q ( z ) q(z) q(z) 作为桥梁进行采样(重要性采样),求得概率分布函数积分值(期望):
    E [ f ( z ) ] = ∫ z f ( z ) p ( z ) d z = ∫ z f ( z ) p ( z ) q ( z ) q ( z ) d z = 1 N ∑ i = 1 N f ( z i ) p ( z i ) q ( z i ) → w e i g h t \begin{aligned} \mathbb{E}[f(z)]&=\int_zf(z)p(z)dz=\int_zf(z)\frac{p(z)}{q(z)}q(z)dz\\&=\frac1N\sum\limits_{i=1}^Nf(z_i)\boxed{\frac{p(z_i)}{q(z_i)} }\color{blue}\to weight \end{aligned} E[f(z)]=zf(z)p(z)dz=zf(z)q(z)p(z)q(z)dz=N1i=1Nf(zi)q(zi)p(zi)weight

    通过对 q ( z ) q(z) q(z) 采样,然后对每一个采样的样本应用权重就得到了期望的近似,为了概率分布的特性,还需要对权重进行归一化。

    在滤波问题中,需要求解 p ( z t ∣ x 1 : t ) p(z_t|x_{1:t}) p(ztx1:t),其权重为:
    w t i = p ( z t i ∣ x 1 : t ) q ( z t i ∣ x 1 : t ) , i = 1 , 2 , ⋯   , N w_t^i=\frac{p(z_t^i|x_{1:t})}{q(z_t^i|x_{1:t})},i=1,2,\cdots,N wti=q(ztix1:t)p(ztix1:t),i=1,2,,N

    若每一个时刻 t t t 都需要采样 N N N 个点,则每个时刻都要计算 N N N个权重,使得计算较为繁杂,希望找到一个关于权重的递推公式,于是就引入了序列重要性采样(SIS)。

    SIS

    在 SIS (sequential importance sampling filter)中,解决的问题是 p ( z 1 : t ∣ x 1 : t ) p(z_{1:t}|x_{1:t}) p(z1:tx1:t) w t i ∝ p ( z 1 : t ∣ x 1 : t ) q ( z 1 : t ∣ x 1 : t ) w_t^i\propto\frac{p(z_{1:t}|x_{1:t})}{q(z_{1:t}|x_{1:t})} wtiq(z1:tx1:t)p(z1:tx1:t)

    根据 LDS 中的推导可以得到上式分子的递推式:
    p ( z 1 : t ∣ x 1 : t ) ∝ p ( x 1 : t , z 1 : t ) = p ( x t ∣ z 1 : t , x 1 : t − 1 ) p ( z 1 : t , x 1 : t − 1 ) = p ( x t ∣ z t ) p ( z t ∣ x 1 : t − 1 , z 1 : t − 1 ) p ( x 1 : t − 1 , z 1 : t − 1 ) = p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( x 1 : t − 1 , z 1 : t − 1 ) ∝ p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z 1 : t − 1 ∣ x 1 : t − 1 ) \begin{aligned}{\color{blue}p(z_{1:t}|x_{1:t})}\propto p(x_{1:t},z_{1:t})&=p(x_t|z_{1:t},x_{1:t-1})p(z_{1:t},x_{1:t-1})\\ &=p(x_t|z_t)p(z_t|x_{1:t-1},z_{1:t-1})p(x_{1:t-1},z_{1:t-1})\\ &=p(x_t|z_t)p(z_t|z_{t-1})p(x_{1:t-1},z_{1:t-1})\\ &\propto p(x_t|z_t)p(z_t|z_{t-1})\color{blue}p(z_{1:t-1}|x_{1:t-1}) \end{aligned} p(z1:tx1:t)p(x1:t,z1:t)=p(xtz1:t,x1:t1)p(z1:t,x1:t1)=p(xtzt)p(ztx1:t1,z1:t1)p(x1:t1,z1:t1)=p(xtzt)p(ztzt1)p(x1:t1,z1:t1)p(xtzt)p(ztzt1)p(z1:t1x1:t1)

    对于分母(指定的提议分布),直接分解为:
    q ( z 1 : t ∣ x 1 : t ) = q ( z t ∣ z 1 : t − 1 , x 1 : t ) q ( z 1 : t − 1 ∣ x 1 : t − 1 ) q(z_{1:t}|x_{1:t})=q(z_t|z_{1:t-1},x_{1:t})q(z_{1:t-1}|x_{1:t-1}) q(z1:tx1:t)=q(ztz1:t1,x1:t)q(z1:t1x1:t1) 所以有: w t i ∝ p ( z 1 : t ∣ x 1 : t ) q ( z 1 : t ∣ x 1 : t ) ∝ p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z 1 : t − 1 ∣ x 1 : t − 1 ) q ( z t ∣ z 1 : t − 1 , x 1 : t ) q ( z 1 : t − 1 ∣ x 1 : t − 1 ) = p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) q ( z t ∣ z 1 : t − 1 , x 1 : t ) w t − 1 i {\color{blue}w_t^i}\propto\frac{p(z_{1:t}|x_{1:t})}{q(z_{1:t}|x_{1:t})}\propto \frac{p(x_t|z_t)p(z_t|z_{t-1})\color{blue}p(z_{1:t-1}|x_{1:t-1})}{q(z_t|z_{1:t-1},x_{1:t})\color{blue}q(z_{1:t-1}|x_{1:t-1})}=\frac{p(x_t|z_t)p(z_t|z_{t-1})}{q(z_t|z_{1:t-1},x_{1:t})}\color{blue}w_{t-1}^i wtiq(z1:tx1:t)p(z1:tx1:t)q(ztz1:t1,x1:t)q(z1:t1x1:t1)p(xtzt)p(ztzt1)p(z1:t1x1:t1)=q(ztz1:t1,x1:t)p(xtzt)p(ztzt1)wt1i

    得到计算权重的的步骤

    • t − 1 t-1 t1 时刻,采样完成并计算得到权重
    • t t t 时刻,根据 q ( z t ∣ z 1 : t − 1 , x 1 : t ) q(z_t|z_{1:t-1},x_{1:t}) q(ztz1:t1,x1:t) 进行采样得到 z t i z_t^i zti,然后计算得到 N N N 个权重
    • 最后对权重归一化

    SIS 算法会出现权值退化的情况,在一定时间后,可能会出现大部分权重很小,极少数较大,这是高维空间容易出现的情况,解决方法:

    • 重采样,以权重作为概率分布,重新在已经采样的样本中采样,然所有样本赋予相同权重。这个方法的思路是将权重作为概率分布,然后得到累积密度函数,在累积密度上取点(阶梯函数)
    • 选择合适的提议分布 q ( z t ∣ z 1 : t − 1 , x 1 : t ) = p ( z t ∣ z t − 1 ) q(z_t|z_{1:t-1},x_{1:t})=p(z_t|z_{t-1}) q(ztz1:t1,x1:t)=p(ztzt1),即:直接选择其状态转移概率分布,粒子 z t i ∼ p ( z t ∣ z t − 1 i ) z^{i}_t\sim p(z_t|z^{i}_{t-1}) ztip(ztzt1i),这也称为生成与测试方法: w t i ∝ p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z t ∣ z t − 1 ) w t − 1 i = p ( x t ∣ z t ) w t − 1 i w_t^i\propto\frac{p(x_t|z_t)\cancel{p(z_t|z_{t-1})}}{\cancel{p(z_t|z_{t-1})}}{\color{blue}w_{t-1}^i }=p(x_t|z_t){\color{blue}w_{t-1}^i } wtip(ztzt1) p(xtzt)p(ztzt1) wt1i=p(xtzt)wt1i

    采用重采样的 SIS 算法就是基本的粒子滤波算法。若选择上述提议分布,则称之为 SIR 算法。

    参考文献

    【1】粒子滤波
    【2】粒子滤波算法
    【3】Particle Filter Tutorial 粒子滤波:从推导到应用(四)
    【4】粒子滤波(Particle filter)算法简介及MATLAB实现
    【5】Particle Filter Tutorial 粒子滤波:从推导到应用(一)到( 四 )

    展开全文
  • 文章目录前言一、参赛经过二、深度学习技术在心电图智能分析中的应用三、机器学习技术在心电图智能分析中的应用1.引入库2.读入数据四、结果及讨论 前言   2019年夏天我参加了清华大学主办的首届中国心电智能大赛...
  • 机器学习-线性动态系统-卡尔曼滤波.pdf
  • 相关滤波推荐算法

    2019-03-30 09:31:49
    使用协同滤波算法实现推荐系统,代码使用python。在mxnet平台下实现
  • 在开始这个博客之前,首先要感谢一下徐老师。... 言归正传,该博文里面的所有符号体系都是徐老师所用的符号,在此记录一下徐老师最后留下的作业,并且根据徐老师给出的demo,结合kalman的推导进行简单的分析。...
  • 卡尔曼滤波,扩展卡尔曼滤波,无迹卡尔曼滤波程序matlab,注释详细!适合新手!中位值平均滤波(防脉冲干扰平均滤波法)纯属看心情附赠哈哈,单独需要的可以看我的博文...
  • 相比上两篇文章的逆滤波解法,tensorflow的最优化解法更加高效、简明,往往构建出滤波最优化公式就可以让tensorflow自动最优化,逆向得到目标逆滤波图像。tensorflow逆滤波的实现原理可以参考【图像处理】时域最小...
  • 关于机器学习、深度学习及计算机视觉入门论文和书籍阅读笔记。机器学习 3 监督学习 3 回归 3 分类 4 无监督学习 4 聚类 4 深度学习 4 计算机视觉 14 入门基础与图像相关 14 图像预处理 16 坐标变换 16 灰度映射 16 ...
  • 一、背景 动态模型 = 图 + 时间 动态模型有三种:HMM、线性动态系统(kalman filter)、particle filter 线性动态系统与HMM的区别是假设相邻隐变量之间满足线性高斯分布,观测变量与隐变量之间满足线性高斯分布...
  • 简单说,时间是有序的量,构成了时序模式识别任务中学习过程的重要成分。 对于动态神经网络来说,它必须以一种或另一种形式给定短期记忆。完成这已修改的一个简单途径是利用时间延迟,时间延迟可以在网络内部的突触...
  • 程序是一个基于RTS平滑的正弦信号滤波平滑算法的对比,Matlab中运行main.m文件即可。具体算法可以参考博客 https://blog.csdn.net/weixin_42647783/article/details/106035691。
  • 机器学习-线性动态系统-卡尔曼滤波(Kalman Filtering) Dynamic Model 观测值:设有一系列观测值y1,y2⋯yny_1,y_2 \cdots y_ny1​,y2​⋯yn​,不可以互换顺序,观测之间是相关的,有联系的。 状态空间模型(state-...
  • 滤波相关学习

    2020-10-11 17:16:28
    文章目录滤波基本概念状态状态转移概率测量概率置信度贝叶斯滤波高斯滤波卡尔曼滤波扩展卡尔曼滤波UKF滤波信息滤波非参数滤波直方图滤波粒子滤波 滤波 为什么叫做滤波滤波一词来源于通信理论,它是从含有干扰的...
  • 1.机器学习方法原理及编程实现–01.K近邻法(实现MNIST数据分类). 2.机器学习方法原理及编程实现–02.决策树. 3.机器学习方法原理及编程实现–03.朴素贝叶斯分类器(实现MNIST数据分类) . 4.机器学习方法原理及编程...
  • 什么是滤波?举个最直观的简单例子:臭水沟里舀一大勺水,需要过滤成干净水怎么办?,,,用滤网(网孔可根据需要选择大小孔)过滤。 在电路方面波形的高低通滤波原理类似; 图像上的噪声点各种中值滤波等类似的...
  • 基本理论图像滤波的目的:去除图像噪声,修复图像损坏,改变图像分布。 均值滤波(Mean Filter)求取NxN像素范围内的均值作为中心点的像素值,N为核大小 例:核为3 核越大,噪声消除效果越好,但图像也会越...
  • Python 机器学习经典实例

    万次阅读 多人点赞 2018-04-12 10:44:15
    本书首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网络,等等。 用最火的 Python 语言、通过各种各样的...
  • 点云滤波算法学习

    千次阅读 2019-12-11 17:29:33
    本文参考如下博客内容,在此对原博客作者表示感谢。 点云滤波简介: https://www.cnblogs.com/zhaobinyouth/p/6196358.html ...1 点云滤波和信号处理滤波 点云滤波是点云处理的基本步骤,也是进行 high leve...
  • 信号处理深度学习机器学习 机器学习性能与两种关键信号处理算法(快速傅里叶变换和最小均方预测)的有趣对比。 (A fun comparison of machine learning performance with two key signal processing algorithms — the...
  • 我认为,卡尔曼滤波就是把统计学应用到了滤波算法上. 算法的核心思想是,根据当前的仪器"测量值" 和上一刻的 “预测量” 和 “误差”,计算得到当前的最优量. 再 预测下一刻的量, 里面比较突出的是观点是. 把误差纳入...
  • 机器学习之平滑技术

    千次阅读 2020-02-07 20:59:58
    拉普拉斯平滑(Laplace smoothing) 也就是参数为1时的贝叶斯估计,当某个分量在总样本某个分类中(观察样本库/训练集)从没出现过,会导致整个实例的计算结果为0。为了解决这个问题,使用拉普拉斯平滑/加1平滑进行...
  • 1.原理 滤波操作的原理是卷积运算 2.代码展示

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,856
精华内容 5,542
关键字:

机器学习滤波