题目:压缩感知重构算法之基追踪(Basis Pursuit, BP)

除匹配追踪类贪婪迭代算法之外,压缩感知重构算法另一大类就是凸优化算法或最优化逼近方法,这类方法通过将非凸问题转化为凸问题求解找到信号的逼近,其中最常用的方法就是基追踪(Basis Pursuit, BP),该方法提出使用l1范数替代l0范数来解决最优化问题,以便使用线性规划方法来求解[1]。本篇我们就来讲解基追踪方法。

理解基追踪方法需要一定的最优化知识基础,可参见最优化方法分类中的内容。

1、l1范数和l0范数最小化的等价问题

在文献【2】的第4部分,较为详细的证明了l1范数与l0范数最小化在某条件下等价。证明过程是一个比较复杂的数学推导,这里尽量引用文献中的原文来说明。

首先,在文献【2】的4.1节,给出了(P1)问题,并给出了(P1)的线性规划等价形式(LP),这个等价关系后面再详叙。

然后在文献【2】的4.2节直接谈到l1l0最小化的关系,先是定义了压缩感知要解决的(P0)问题,然后指出“当(P0)有一个稀疏解,(P1)会找到这个解”,若并在Theorem 8中以定理形式指出“(P0)和(P1)都有相同的惟一解”。

接下来是一段为了证明Theorem 8过渡性的描述,里面提到l1l0最小化的等价问题已经有很多文献了。

为了证明Theorem 8,引入了一个引理Lemma4.1 :

证明完Lemma 4.1后,开始证明Theorem 8 :

证明过程还是比较复杂的,有兴趣的好好学习研究一下吧。

2、基追踪实现工具箱l1-MAGIC

若要谈基追踪方法的实现,就必须提到l1-MAGIC工具箱(工具箱主页:http://users.ece.gatech.edu/~justin/l1magic/),在工具箱主页有介绍:L1-MAGIC is a collection of MATLAB routines for solving the convexoptimization programs central to compressive sampling. The algorithms are basedon standard interior-point methods, and are suitable for large-scale problems.

另外,该工具箱专门有一个说明文档《l1-magic: Recovery of Sparse Signals via Convex Programming》,可以在工具箱主页下载。

该工具箱一共解决了七个问题,其中第一个问题即是Basis Pursuit :

        工具箱中给出了专门针对(P1)的代码l1eq_pd.m,使用方法可以参见l1eq_example.m,说明文档的3.1节也进行了介绍。

在附录A中,给出了将(P1)问题转化为线性规划问题的过程,但这个似乎并不怎么容易看明白:

3、如何将(P1)转化为线性规划问题?

尽管在l1-MAGIC给出了一种基追踪的实现,但需要基于它的l1eq_pd.m文件,既然基追踪是用线性规划求解,那么就应该可以用MATLAB自带的linprog函数求解,究竟该如何将(P1)转化为标准的线性规划问题呢?我们来看文献【3】的介绍:

这里,文献【3】的转化说明跟文献【2】中4.1节的说明差不多,但对初学者来说仍然会有一定的困难,下面我们就以文献【3】中的符号为准来解读一下。

首先,式(3.1)中的变量a没有非负约束,所以要将a变为两个非负变量u和v的差a=u-v,由于u可以大于也可以小于v,所以a可以是正的也可以是负的[4]。也就是说,约束条件Φa=s要变为Φ(u-v)=s,而这个还可以写为[Φ,-Φ][u;v]=s,更清晰的写法如下:

然后,根据范数的定义,目标函数可进一点写为:

目标函数中有绝对值,怎么去掉呢?这里得看一下文献【5】:

到现在一切应该都清晰明白了,总结如下:

问题可以转化为线性规划问题,其中:

求得最优化解x0后可得变量a的最优化解a0=x0(1:p)-x0(p+1:2p) 。

4、基于linprog的基追踪MATLAB代码(BP_linprog.m)

function [ alpha ] = BP_linprog( s,Phi )
%BP_linprog(Basis Pursuit with linprog) Summary of this function goes here
%Version: 1.0 written by jbb0523 @2016-07-21
%Reference:Chen S S, Donoho D L, Saunders M A. Atomic decomposition by
%basis pursuit[J]. SIAM review, 2001, 43(1): 129-159.(Available at:
%http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.4272&rep=rep1&type=pdf)
%   Detailed explanation goes here
%   s = Phi * alpha (alpha is a sparse vector)
%   Given s & Phi, try to derive alpha[s_rows,s_columns] = size(s);  if s_rows<s_columns  s = s';%s should be a column vector  end p = size(Phi,2);%according to section 3.1 of the referencec = ones(2*p,1);A = [Phi,-Phi];b = s;lb = zeros(2*p,1);x0 = linprog(c,[],[],A,b,lb);alpha = x0(1:p) - x0(p+1:2*p);
end

5、基追踪单次重构测试代码(CS_Reconstuction_Test.m)

测试代码与OMP测试单码相同,仅仅是修改了重构函数。

%压缩感知重构算法测试
clear all;close all;clc;
M = 64;%观测值个数
N = 256;%信号x的长度
K = 10;%信号x的稀疏度
Index_K = randperm(N);
x = zeros(N,1);
x(Index_K(1:K)) = 5*randn(K,1);%x为K稀疏的,且位置是随机的
Psi = eye(N);%x本身是稀疏的,定义稀疏矩阵为单位阵x=Psi*theta
Phi = randn(M,N);%测量矩阵为高斯矩阵
A = Phi * Psi;%传感矩阵
y = Phi * x;%得到观测向量y
%% 恢复重构信号x
tic
theta = BP_linprog(y,A);
x_r = Psi * theta;% x=Psi * theta
toc
%% 绘图
figure;
plot(x_r,'k.-');%绘出x的恢复信号
hold on;
plot(x,'r');%绘出原信号x
hold off;
legend('Recovery','Original')
fprintf('\n恢复残差:');
norm(x_r-x)%恢复残差 

运行结果如下:(信号为随机生成,所以每次结果均不一样)

1)图:

2)Command Windows

Optimization terminated.

Elapsed time is 0.304111 seconds.

恢复残差:

ans =

6.5455e-010

6、结束语

值得一提的是,基追踪并不能称为一个具体的算法,而是一种最优化准则,文献【3】对此进行了明确的说明,基追踪实现方法可以使用单纯形法(simplex algorithm),也可以使用内点法(interior-pointmethods), 因此,有些文献里说凸松弛算法包括基追踪、内点法等,个人感觉这是不恰当的,因为内点法只是基追踪的一种实现形式而己,再说了,内点法也有很多种实现方法……

本文实现方法基于MATLAB自带的线性规划函数linprog,当然也可以采用l1-magic中的l1eq_pd.m,有兴趣的可以做一下对比。

7、参考文献

【1】李珅, 马彩文, 李艳, 等. 压缩感知重构算法综述[J]. 红外与激光工程, 2013, 42(S01): 225-232.

【2】Donoho D L. Compressedsensing[J]. IEEE Transactions on information theory, 2006, 52(4):1289-1306. (Available at: http://www.signallake.com/innovation/CompressedSensing091604.pdf)

【3】Chen S S, Donoho D L,Saunders M A.Atomicdecomposition by basis pursuit[J]. SIAM review, 2001, 43(1): 129-159. (Availableat:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.4272&rep=rep1&type=pdf)

【4】孙文瑜, 徐成贤, 朱德通.最优化方法(第二版)[M]. 北京:高等教育出版社, 2010:49-51.

【5】L1范数优化的线性化方法如何证明? 链接:http://www.zhihu.com/question/21427075

压缩感知重构算法之基追踪(Basis Pursuit, BP)相关推荐

  1. 压缩感知重构算法之基追踪(Basis Pursuit, BP).基追踪并不能称为一个具体的算法,而是一种最优化准则,可以有很多实现方式,我认为指的是L0可以变为L1的准则

    基追踪(basis pursuit)算法是一种用来求解未知参量L1范数最小化的等式约束问题的算法. 基追踪是通常在信号处理中使用的一种对已知系数稀疏化的手段.将优化问题中的L0范数转化为L1范数的求解 ...

  2. 压缩感知重构算法之迭代软阈值(IST)

    题目:压缩感知重构算法之迭代软阈值(IST) 看懂本篇需要有以下两篇作为基础: (1)软阈值(Soft Thresholding)函数解读 (2)Majorization-Minimization优化 ...

  3. 压缩感知重构算法之广义正交匹配追踪(gOMP)

    压缩感知重构算法之广义正交匹配追踪(gOMP) 转载自彬彬有礼的专栏 题目:压缩感知重构算法之广义正交匹配追踪(gOMP) 广义正交匹配追踪(Generalized OMP, gOMP)算法可以看作为 ...

  4. 压缩感知重构算法之正交匹配追踪(OMP)

    题目:压缩感知重构算法之正交匹配追踪(OMP) 前面经过几篇的基础铺垫,本篇给出正交匹配追踪(OMP)算法的MATLAB函数代码,并且给出单次测试例程代码.测量数M与重构成功概率关系曲线绘制例程代码. ...

  5. 浅谈压缩感知(二十一):压缩感知重构算法之正交匹配追踪(OMP)

    主要内容: OMP的算法流程 OMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.OMP的算法流程 二.OMP的MATL ...

  6. 【老生谈算法】matlab实现压缩感知重构算法之正则化正交匹配追踪(ROMP)——ROMP

    matlab压缩感知重构算法之正则化正交匹配追踪(ROMP) 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]贪婪算法中ROM ...

  7. 浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)

    浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP) 主要内容: gOMP的算法流程 gOMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.g ...

  8. 压缩感知重构算法综述-学习笔记

    论文信息:李珅,马彩文,李艳,陈萍.压缩感知重构算法综述[J].红外与激光工程,2013,42(S1):225-232. 目录 文章工作: 问题一:压缩感知涉及三个比较重要的层面 问题二:压缩感知理论 ...

  9. 压缩感知重构算法之IHT算法python实现

    压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...

最新文章

  1. 世界公认最好的记忆方法_全球公认最好的12个教育孩子的方法,值得每个家长收藏学习!...
  2. 批量处理文件,除了 Python,不妨试试 VIM!
  3. 拦截请求并记录相应信息-springboot
  4. Hadoop 开源调度系统zeus(二)
  5. Retrofit的网络框架介绍
  6. linux mail使用笔记
  7. NUC1372 Bull Math【大数】
  8. 《原神》游戏设计分析
  9. 伺服电机功率计算选型与伺服电机惯量匹配
  10. 香橙派python编程_香橙派4B Python3.7安装OpenCV
  11. 【UVM基础】uvm_agent 中的 is_active 变量释义
  12. pdf怎么压缩文件到最小?如何将pdf压缩到指定大小?压缩pdf文件大小怎么压缩?如何压缩pdf大小?
  13. 逻辑回归损失函数推导及其模型的推导
  14. 旅途——Python基本的“生存技能”
  15. 定时任务组件Quartz
  16. 非关系型数据库 之 图数据库Neo4j的使用(Python3)
  17. (HDU)1718 -- Rank (段位)
  18. 计算机网路络课设_学生宿舍网络规划与设计
  19. Nodejs影院售票管理系统的设计和实现(含论文)
  20. MeeGo系统和SDK升级发布

热门文章

  1. uniapp 使用editor编辑器实现 发布文章的功能
  2. vue循环生成元素_Vue循环中多个input绑定指定v-model实例
  3. CSDN:可在Markdown随意插入的表情符号集大全,简单复制粘贴法,2种在线实时检索法,釜底抽薪的快捷键法
  4. k8s-资源控制器RC、RS 、deployment
  5. ai怎么做波普风圆点_AI教程:教你绘制波普艺术风格人像
  6. 项目管理 | 项目成本估算都有哪些方法?
  7. struts2 web应用框架的简单搭建步骤
  8. 父亲节借势营销,品牌应该如何策划?
  9. web开发第三方登陆之QQ登陆
  10. 关于TLC2272CDR