转载自http://blog.csdn.net/pi9nc/article/details/18655239

1,MP算法【盗用2】

MP算法是一种贪心算法(greedy),每次迭代选取与当前样本残差最接近的原子,直至残差满足一定条件。

求解方法

选择最接近残差的原子:MP里定义用向量内积原子与残差的距离,我们用R表示残差,di表示原子,则:

Max[Dist(R,di)]=max[<R,di>];

残差更新:R=R-<R,di>I;继续选择下一个,直至收敛;

需要注意的是,MP算法中要求字典原子||di||=1,上面的公式才成立。

我们用二维空间上的向量来表示,用如下的图来表述上面的过程:

上图中d1,d2,d3表示归一化的原子,红色向量r表示当前残差;

进过内积计算,<r,d3>最大,于是r分解为d3方向以及垂直于d3方向的两个向量(<r,d3>d3及r-<r,d3>d3),把d3方向的分量(<r,d3>d3)加入到已经求得的重构项中,那么绿色向量(r-<r,d3>d3)变为新的残差。然后迭代即可。

再一轮迭代得到如下:

R往d1方向投影分解,绿色向量成为新的残差。

具体算法:

收敛性

从上面的向量图我们可以清楚地看出,k+1的残差Rk+1是k步残差Rk的分量。根据直角三角形斜边大于直角边,|Rk+1|<=|Rk|,则算法收敛。

注意事项:

1.上面也讲过,字典的原子是归一化的,也就是||di||=1,因为我们选取max<R,di>时,如果di长度不统一,不能得出最好的投影。

2.如果我们的字典只有两个向量d1,d2,那么MP算法会在这两个向量间交叉迭代投影,也就是f=a1d1+a2d2+a3d1+a4d2+…..;也就是之前投影过的原子方向,之后还有可能投影(即原子有可能再次被选择)。换句话说,MP的方向选择不是最优的,是次优的。

如下图:

这也是其改进版本OMP要改进的地方。

2,什么是OMP算法

OMP算法的改进之处在于:在分解的每一步对所选择的全部原子进行正交化处理,这使得在精度要求相同的情况下,OMP算法的收敛速度更快。

在正交匹配追踪OMP中,残差是总与已经选择过的原子正交的。这意味着一个原子不会被选择两次,结果会在有限的几步收敛。另外还可以选择弱匹配追踪(后话)【3】。

MP算法的次最优性来源其残差只与当前投影方向垂直,这样在接下来的投影中,很有可能会再次投影到原来的方向。

于是,在投影时,如果我们使得残差Rk+1与x1-xk+1的所有向量垂直,则可以克服这个问题,如下:

求解方法

假设我们已经得到了第k步的最优解:

我们要继续更新到第k+1步,目标是得到:

需要注意的是,我们下一步更新时,之前原子的系数 也要更新,否则不能满足约束。

于是我们需要求得如何更新之前原子系数 ,以及如何求得下一个投影方向 。

收敛性:

同样根据勾股定理,得到如下:

于是算法收敛。

具体步骤:

最后,贴一个sparse求解的工具包,里面包含了MP,OMP算法的代码

http://spams-devel.gforge.inria.fr/

参考文献

【1】http://blog.csdn.net/scucj/article/details/7467955   MP和OMP算法及其思想

【2】http://blog.csdn.net/pi9nc/article/details/18655239  稀疏编码最优化解法

【3】https://chunqiu.blog.ustc.edu.cn/?p=634  有讲到弱匹配追踪

MP 及OMP算法解析的更多相关文章

  1. 稀疏分解中的MP与OMP算法

    MP:matching pursuit匹配追踪 OMP:正交匹配追踪 主要介绍MP与OMP算法的思想与流程,解释为什么需要引入正交? !!今天发现一个重大问题,是在读了博主的正交匹配追踪(OMP)在稀 ...

  2. MP和OMP算法

    转载:有点无耻哈,全部复制别人的.写的不错 作者:scucj 文章链接:MP算法和OMP算法及其思想 主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matchi ...

  3. MP算法和OMP算法及其思想

    主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1],这两个算法尽管在90年代初就提出来了,但作为经典的算法,国内文献(可 ...

  4. MP算法、OMP算法及其在人脸识别的应用

    主要内容: 1.MP算法 2.OMP算法 3.OMP算法的matlab实现 4.OMP在压缩感知和人脸识别的应用 一.MP(Matching Pursuits)与OMP(Orthogonal Matc ...

  5. 浅谈压缩感知(十九):MP、OMP与施密特正交化

    关于MP.OMP的相关算法与收敛证明,可以参考:http://www.cnblogs.com/AndyJee/p/5047174.html,这里仅简单陈述算法流程及二者的不同之处. 主要内容: MP的 ...

  6. 地理围栏算法解析(Geo-fencing)

    地理围栏算法解析 http://www.cnblogs.com/LBSer/p/4471742.html 地理围栏(Geo-fencing)是LBS的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界 ...

  7. KMP串匹配算法解析与优化

    朴素串匹配算法说明 串匹配算法最常用的情形是从一篇文档中查找指定文本.需要查找的文本叫做模式串,需要从中查找模式串的串暂且叫做查找串吧. 为了更好理解KMP算法,我们先这样看待一下朴素匹配算法吧.朴素 ...

  8. Peterson算法与Dekker算法解析

    进来Bear正在学习巩固并行的基础知识,所以写下这篇基础的有关并行算法的文章. 在讲述两个算法之前,需要明确一些概念性的问题, Race Condition(竞争条件),Situations  lik ...

  9. OMP算法代码学习

    正交匹配追踪(OMP)算法的MATLAB函数代码并给出单次测试例程代码 测量数M与重构成功概率关系曲线绘制例程代码 信号稀疏度K与重构成功概率关系曲线绘制例程代码   参考来源:http://blog ...

随机推荐

  1. 【MySQL锁】MySQL悲观锁和乐观锁概念

    悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念.本文将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍. 悲观锁(Pessimistic Lock) 悲观锁的 ...

  2. Python -- 标准库 文件管理 (部分os包,shutil包)

    在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令.Python标准库则允许我们从Python内部管理文件.相同的目的,我们有了两条途径.尽管在Python调用标准库的 ...

  3. /usr/lib64改名字风波

    注:本文描述请勿模仿,仅限万一遇到这种情况一试. 一不小心做了一个操作: cd /usr mv lib64 lib64-bak 然后奇异的发现: cp不能用了!ls也不能用了…… 提示信息如下: -b ...

  4. ItelliJ基于Gradle创建及发布Web项目(二)

    上一篇介绍了IteliJ创建WEB项目的过程,这一篇介绍一下和本地WEB服务器(以Tomcat为例)的关联方法和发布流程. WEB服务器的关联 1. 点击IDE右上角的一个带有三角形标识的按钮,如下图 ...

  5. unity, asset operations

    //----create asset //ref: http://wiki.unity3d.com/index.php?title=CreateScriptableObjectAsset CmyScr ...

  6. XMPP 基础 (转载)

    技术博客 http://www.cnblogs.com/ChenYilong/  新浪微博 http://weibo.com/luohanchenyilong Fullscreen XMPP   基础 ...

  7. linux Find命令教程

    find的语法: find [起始目录] 寻找条件 操作 还有种表述方式:find PATH OPTION [-exec COMMAND { } \;] 因为find命令会根据我们给的option,也 ...

  8. locatin

    //location对象 //初始url:http://www.wrox.com/WileyCDA: //将URL修改为:http://www.wrox.com/WileyCDA/#section1 ...

  9. db2 连接报错connect。 ERRORCODE=-4499, SQLSTATE=08001(转载)

    在使用data studio连接远程DB2数据库时报错如下: [jcc][Thread:main][SQLException@5b775b77] java.sql.SQLException [jcc] ...

  10. oracle 远程登录

    打开命令终端,输入命令:sqlplus /nolog 输入命令:conn sys/sys@dba as sysdba