精华内容
下载资源
问答
  • 主要介绍了Python推导式,结合简单实例形式分析了Python列表推导式、字典推导式与集合推导式基本使用方法,需要的朋友可以参考下
  • 卡尔曼滤波 -- 从推导到应用(一)

    万次阅读 多人点赞 2013-12-30 01:26:46
    卡尔曼滤波器是在估计线性系统状态的过程中,以最小均方差为目的而推导出的几个递推数学等式,也可以从贝叶斯推断的角度来推导。 本文将分为两部分: 第一部分,结合例子,从最小均方差的角度,直观地介绍卡尔曼...

    前言

              卡尔曼滤波器是在估计线性系统状态的过程中,以最小均方误差为目的而推导出的几个递推数学等式,也可以从贝叶斯推断的角度来推导。

              本文将分为两部分:

    第一部分,结合例子,从最小均方误差的角度,直观地介绍卡尔曼滤波的原理,并给出较为详细的数学推导。

    第二部分,通过两个例子给出卡尔曼滤波的实际应用。其中将详细介绍一个匀加速模型,并直观的对比系统状态模型的建立对滤波的影响。


    第一部分

    先看一个对理解卡尔曼滤波能起到作用的的笑话:

    一片绿油油的草地上有一条曲折的小径,通向一棵大树.一个要求被提出:从起点沿着小径走到树下.

    “很简单.” A说,于是他丝毫不差地沿着小径走到了树下.

    现在,难度被增加了:蒙上眼。

    “也不难,我当过特种兵。” B说,于是他歪歪扭扭地走到了树旁。“唉,好久不练,生疏了。” (只凭自己的预测能力)

    “看我的,我有 DIY 的 GPS!” C说,于是他像个醉汉似地歪歪扭扭的走到了树旁。“唉,这个 GPS 没做好,漂移太大。”(只依靠外界有很大噪声的测量)

    “我来试试。” 旁边一也当过特种兵的拿过 GPS, 蒙上眼,居然沿着小径很顺滑的走到了树下。(自己能预测+测量结果的反馈)

    “这么厉害!你是什么人?”
    “卡尔曼 ! ”
    “卡尔曼?!你就是卡尔曼?”众人大吃一惊。
    “我是说这个 GPS 卡而慢。”

    此段引用自 highgear 的 《授之以渔:卡尔曼滤波器...大泄蜜...》 (点击可跳转到该网页)

    这个小笑话很有意思的指出了卡尔曼滤波的核心,预测+测量反馈,记住这种思想。

    -----------------------------------------------------------分割线-----------------------------------------------------------------------

    在介绍卡尔曼滤波前,简单说明几个在学卡尔曼过程中要用到的概念。即什么是协方差,它有什么含义,以及什么叫最小均方误差估计,什么是多元高斯分布。如果对这些有了了解,可以跳过,直接到下面的分割线。

       均方误差:它是"误差"的平方的期望值误差就是每个估计值与真实值的差),也就是多个样本的时候,均方误差等于每个样本的误差平方再乘以该样本出现的概率的和。

       方差:方差是描述随机变量的离散程度,是变量离期望值的距离。

    注意两者概念上稍有差别,当你的样本期望值就是真实值时,两者又完全相同。最小均方误差估计就是指估计参数时要使得估计出来的模型和真实值之间的误差平方期望值最小。

          两个实变量之间的协方差

                                                 

    它表示的两个变量之间的总体误差,当Y=X的时候就是方差。下面说说我对协方差的通俗理解,先抛去公式中的期望不谈,即假设样本X,Y发生的概率就是1,那么协方差的公式就变成了:

                                                                  

    这就是两个东西相乘,马上联想到数值图像里的相关计算。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。协方差矩阵只不过就是元素多了组成了矩阵,其中协方差矩阵的对角线就是方差,具体公式形式请见wiki。

       其实,这种相乘的形式也有点类似于向量投影,即两个向量的内积。再远一点,联想到傅里叶变换里频谱系数的确定,要确定一个函数f(x)在某个频率w上的频谱,就是<f(x),cos(wt)>,< ,>表示向量内积,通俗的讲是将f(x)投影到cos(wt)上,要讲清傅里叶的本质需要另写一篇博文,这里提到这些只是觉得有益于对知识的相互理解。 

    高斯分布:概率密度函数图像如下图,四条曲线的方差各不相同,方差决定了曲线的胖瘦高矮。(图片来源:维基百科)

    多元高斯分布:就是高斯分布的低维向高维的扩展,图像如下。


    对应多元高斯分布的公式也请自行谷歌,以前高斯公式中的方差也变成了协方差,对应上面三张图的协方差矩阵分别如下:

                 

    注意协方差矩阵的主对角线就是方差,反对角线上的就是两个变量间的协方差。就上面的二元高斯分布而言,协方差越大,图像越扁,也就是说两个维度之间越有联系。

    -----------------------------------------------------------分割线---------------------------------------------------------------------

           这部分每讲一个数学性的东西,接着就会有相应的例子和直观的分析帮助理解。

           首先假设我们知道一个线性系统的状态差分方程为

                                                       

    其中x是系统的状态向量,大小为n*1列。A为转换矩阵,大小为n*n。u为系统输入,大小为k*1。B是将输入转换为状态的矩阵,大小为n*k。随机变量w为系统噪声。注意这些矩阵的大小,它们与你实际编程密切相关。

           看一个具体的匀加速运动的实例。

           有一个匀加速运动的小车,它受到的合力为 ft , 由匀加速运动的位移和速度公式,能得到由 t-1 到 t 时刻的位移和速度变化公式:

                                                     

    该系统系统的状态向量包括位移和速度,分别用 xt 和 xt的导数 表示。控制输入变量为u,也就是加速度,于是有如下形式:

                                               

    所以这个系统的状态的方程为:

                                             

    这里对应的的矩阵A大小为 2*2 ,矩阵B大小为 2*1。 

          貌似有了这个模型就能完全估计系统状态了,速度能计算出,位移也能计算出。那还要卡尔曼干嘛,问题是很多实际系统复杂到根本就建不了模。并且,即使你建立了较为准确的模型,只要你在某一步有误差,由递推公式,很可能不断将你的误差放大A倍(A就是那个状态转换矩阵),以至于最后得到的估计结果完全不能用了。回到最开始的那个笑话,如果那个完全凭预测的特种兵在某一步偏离了正确的路径,当他站在错误的路径上(而他自己以为是正确的)做下一步预测时,肯定走的路径也会错了,到最后越走越偏。

         既然如此,我们就引进反馈。从概率论贝叶斯模型的观点来看前面预测的结果就是先验,测量出的结果就是后验。

         测量值当然是由系统状态变量映射出来的,方程形式如下:

                                           

    注意Z是测量值,大小为m*1(不是n*1,也不是1*1,后面将说明),H也是状态变量到测量的转换矩阵。大小为m*n。随机变量v是测量噪声。

         同时对于匀加速模型,假设下车是匀加速远离我们,我们站在原点用超声波仪器测量小车离我们的距离。

                                                

    也就是测量值直接等于位移。可能又会问,为什么不直接用测量值呢?测量值噪声太大了,根本不能直接用它来进行计算。试想一个本来是朝着一个方向做匀加速运动的小车,你测出来的位移确是前后移动(噪声影响),只根据测量的结果,你就以为车子一会往前开一会往后开。

    对于状态方程中的系统噪声w和测量噪声v,假设服从如下多元高斯分布,并且w,v是相互独立的。其中Q,R为噪声变量的协方差矩阵。

                                   

    看到这里自然要提个问题,为什么噪声模型就得服从高斯分布呢?请继续往下看。

          对于小车匀加速运动的的模型,假设系统的噪声向量只存在速度分量上,且速度噪声的方差是一个常量0.01,位移分量上的系统噪声为0。测量值只有位移,它的协方差矩阵大小是1*1,就是测量噪声的方差本身。

    那么:

                                             

    Q中,叠加在速度上系统噪声方差为0.01,位移上的为0,它们间协方差为0,即噪声间没有关联。

         

          理论预测(先验)有了,测量值(后验)也有了,那怎么根据这两者得到最优的估计值呢?首先想到的就是加权,或者称之为反馈。

          我们认定是预测(先验)值,是估计值,为测量值的预测,在下面的推导中,请注意估计和预测两者的区别,不混为一谈。由一般的反馈思想我们得到估计值:

                                           

                                                                     

    其中,称之为残差,也就是预测的和你实际测量值之间的差距。如果这项等于0,说明预测和测量出的完全吻合。这种反馈递推的形式又让我联想到数值分析里用来求解线性方程组时的一种迭代方法,Gauss-Seidel迭代法,有兴趣的可以看看。

          现在的关键就是求取这个K。这时最小均方误差就起到了作用,顺便在这里回答为什么噪声必须服从高斯分布,在进行参数估计的时候,估计的一种标准叫最大似然估计,它的核心思想就是你手里的这些相互间独立的样本既然出现了,那就说明这些样本概率的乘积应该最大(概率大才出现嘛)。如果样本服从概率高斯分布,对他们的概率乘积取对数ln后,你会发现函数形式将会变成一个常数加上样本最小均方误差的形式。因此,看似直观上很容易理解的最小均方误差理论上来源就出于那里(详细过程还请自行谷歌,请原谅,什么都讲的话就显得这边文章没有主次了)。

         先看估计值和真实值间误差的协方差矩阵,提醒一下协方差矩阵的对角线元素就是方差,求这个协方差矩阵,就是为了利用他的对角线元素的和计算得到均方差.    

                                 

    这里请注意ek是向量,它由各个系统状态变量的误差组成。如匀加速运动模型里,ek便是由位移误差和速度误差,他们组成的协方差矩阵。表示如下:

                                     

    其中,Serr代表位移误差,Verr代表速度误差,对角线上就是各自的方差。

    把前面得到的估计值代入这里能够化简得:

                                                           (1)式

    同理,能够得到预测值和真实值之间误差的协方差矩阵:

                                       

    注意到系统状态x变量和测量噪声之间是相互独立的。于是展开(1)式可得:

                                        

    最后得到:

                                 

    继续展开:

                         

    接下来最小均方差开始正式登场了,回忆之前提到的,协方差矩阵的对角线元素就是方差。这样一来,把矩阵P的对角线元素求和,用字母T来表示这种算子,他的学名叫矩阵的迹。

                                      

    最小均方差就是使得上式最小,对未知量K求导,令导函数等于0,就能找到K的值。

                             

                             

    注意这个计算式K,转换矩阵H式常数,测量噪声协方差R也是常数。因此K的大小将与预测值的误差协方差有关。不妨进一步假设,上面式子中的矩阵维数都是1*1大小的,并假设H=1,不等于0。那么K可以写成如下:

                              

    所以越大,那么K就越大,权重将更加重视反馈,如果等于0,也就是预测值和真实值相等,那么K=0,估计值就等于预测值(先验)。

    将计算出的这个K反代入Pk中,就能简化Pk,估计协方差矩阵Pk的:

                                     

    因此递推公式中每一步的K就计算出来了,同时每一步的估计协方差也能计算出来。但K的公式中好像又多了一个我们还未曾计算出来的东西,他称之为预测值和真实值之间误差的协方差矩阵。它的递推计算如下:

     请先注意到预测值的递推形式是:     

     

            

            

    由于系统状态变量和噪声之间是独立,故可以写成:

         

                                                 

    由此也得到了的递推公式。因此我们只需设定最初的,就能不断递推下去。

    这里总结下递推的过程,理一下思路:

    首先要计算预测值、预测值和真实值之间误差协方差矩阵。

                        

    有了这两个就能计算卡尔曼增益K,再然后得到估计值,

                         

    最后还要计算估计值和真实值之间的误差协方差矩阵,为下次递推做准备。

                         

    至此,卡尔曼滤波的理论推导到此结束。还有一些如实际应用中状态方程建立不正确,预测结果会怎样等这样的细节问题,以及一些总结留到第二部分讨论。


    (转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于商业用途)


    reference:

    1.Greg Welch & Gary Bishop. << An Introduction to the Kalman Filter >>
    2.Tony Lacey. << Tutorial:The Kalman Filter >>.

    3.Ramsey Faragher. << Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation >>

    4.highgear . 《授之以渔:卡尔曼滤波器...大泄蜜...》 

    5.很多概念定义来自维基百科

    展开全文
  • python的各种推导式(列表推导式、字典推导式、集合推导式)
    展开全文
  • 主要介绍了Python列表推导式、字典推导式与集合推导式用法,结合实例形式分析了Python三种推导式的概念、使用方法及相关注意事项,需要的朋友可以参考下
  • 直接推导,直接运用规则进行的推导 间接推导、n次推导 有两种符号 第一种是,表示多次运用直接推导 第二种是,表示零次或多次运用直接推导 n表示中间的步骤数 规范推导 其实就是最右推导 转载于:...

    直接推导,直接运用规则进行的推导

     

     

    间接推导、n次推导

    有两种符号

    第一种是,表示多次运用直接推导

    第二种是,表示零次或多次运用直接推导

    n表示中间的步骤数

     

    规范推导

    其实就是最右推导

    转载于:https://www.cnblogs.com/Asterism12/p/11493246.html

    展开全文
  • 推导式创建序列: 列表推导式:

    推导式创建序列:

     

    列表推导式:

    练习:

    字典推导式:

    字典的推导式生成字典对象,格式如下:

    练习:

     

    集合推导式:

     

    生成器推导式(生成元组):

    可见第二次迭代已经没有了

     

    展开全文
  • 本节我们看一下列表推导式、集合推导式、字典推导式,你可能好奇是否有元组推导式,当你试图写一个元组推导式的时候其实结果是一个生成器,生成器可以参考python实现生成器。1、列表推导式[表达式 for ...
  • 1. Fisher判别分析 2 Logistic 推导(二分类) 3 支持向量机推导(硬间隔) 转载于:https://www.cnblogs.com/zfc888/p/10274434.html
  • 推导式是python独有的,提供了一种简明扼要的方法来创建列表、字典或集合。 基本语法:我们将列表推导式写在一个方括号内,就会生成一个列表。如: 只要支持for循环进行迭代的对象,都可以使用列表推导式。 带判断的...
  • 列表推导、字典推导、集合推导就是用更简单、简洁的方法生成列表、字典、集合。 1.列表推导(List Comprehension) """列表推导 list""" sl=[1,2,3,4,5] rl=[x+5 for x in sl] print rl #[6, 7, 8, 9, 10] ...
  • xgBoost推导

    2020-01-04 23:20:50
    xgboost推导 (损失函数推导与泰勒展开,目标函数推导,决策树推导
  • 使用推导式可以快速生成列表、元组、字典以及集合类型的数据,因此推导式又可细分为列表推导式、元组推导式、字典推导式以及集合推导式。 Python列表推导式 列表推导式可以利用 range 区间、元组、列表、字典和集合...
  • 列表推导式与字典推导式,滚雪球学 Python

    千次阅读 多人点赞 2021-03-03 21:50:58
    列表推导式、字典推导式、集合推导式、生成器初识
  • 推导

    2021-01-17 23:32:39
    推导式有三种: 列表推导式 字典推导式 集合推导式 列表推导式 列表推导式又叫列表生成式,就是用一个表达式创建或控制一个有规律的列表,作用是减少生成列表的代码量 以生成一个1-10的列表为例: 首先用循环...
  • 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共有三种推导,在Python2和Python3中都有支持: 列表(list)推导式 字典(dict)推导式 ...
  • 型别推导

    2020-07-28 10:38:15
    第一章 型别推导条款2:理解auto型别推导 条款2:理解auto型别推导 在一般情况下,auto和模板型别推导一致;在auto采用大括号初始化时,表达式代表一个std::initializer_list,但模板不会 在函数返回值或者lambda式的...
  • python列表推导式、字典推导式、集合推导式python列表推导式、字典推导式、集合推导式列表推导式生成list格式示例一:输出为==表达式==示例二:输出为==函数(有返回值)==生成generator字典推导式示例一:把字典中的...
  • 梯度下降法的推导(非常详细、易懂的推导

    万次阅读 多人点赞 2018-07-05 19:48:40
    没关系,接下来我将以通俗的语言来详细解释梯度下降算法公式的数学推导过程。下山问题假设我们位于黄山的某个山腰处,山势连绵不绝,不知道怎么下山。于是决定走一步算一步,也就是每次沿着当前位置最陡峭最易下山的...
  • 类型推导

    2020-02-13 19:19:23
    类型推导 auto 类型推导运算符(根据赋值的值的类型来决定变量的类型) 类型推导的规则 为什么要掌握类型推导规则:推导原则帮助我们使用更好 类型推导的作用:使代码更加灵活,通用性好 使用场景: 模板 auto ...
  • 推导式comprehensions(又称解析式),是python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共有三种推导,在python2和3中都有支持:.列表(list)推导式.字典(dict)推导式.集合...
  • 编译原理之最左推导和最右推导

    万次阅读 多人点赞 2018-04-20 21:15:13
    最左推导:任何一步α =&gt; β都是对阿尔法中的最左非终结符进行替换 左右推导:任何一步α =&gt; β都是对阿尔法中的最右非终结符进行替换 2.抛出一个小栗子 文法G(E)为: E -&gt; T | E + T |E ...
  • 包含多层感知器(MLPNN)、LeNet(CNN)、RNN的反向传播推导
  • 共有三种推导,在Python2和3中都有支持:列表(list)推导式字典(dict)推导式集合(set)推导式一、列表推导式1、使用[]生成list基本格式[表达式for变量in列表]或者[表达式for变量in列表if条件]例1...
  • 共有三种推导,在Python2和3中都有支持:列表(list)推导式字典(dict)推导式集合(set)推导式一、列表推导式1、使用[]生成list基本格式variable = [out_exp_res for out_exp in input_list if...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,318
精华内容 25,727
关键字:

推导