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

基追踪(basis pursuit)算法是一种用来求解未知参量L1范数最小化的等式约束问题的算法。
基追踪是通常在信号处理中使用的一种对已知系数稀疏化的手段。将优化问题中的L0范数转化为L1范数的求解就是基追踪的基本思想。
比如我原先有一个优化问题:
min ||x||_0(就是L0范数的最小值)subject to y=Ax。
这个||x||_0,就是表示x中有多少个非零元素;那么我们要求min ||x||_0,就是想知道含有最多0元素的那个解x是什么。
但是呢,L0范数有非凸性,不怎么好求解,这时我们就转而求解L1范数的优化问题。
那么,基追踪算法就是转而求解
min||x||_1(就是L1范数的最小值)subject to||y-Ax||_2=0(2范数)
这个||x||_1,就是x的绝对值;那么我们要求min||x||_1,就是求绝对值最小的那个解x是什么。
更通俗一点来讲,比如我要求一个线性方程组
Ax=b
x就是我们要求的未知量。这个A矩阵不是个方阵,是个欠定矩阵,那么就导致这个线性方程组会有若干组解。那么我们到底要哪组解好呢?
如果在一般情况下,可以直接用最小二乘法来获得一组最小二乘解,就是x=(A’A)^(-1)A’b。但是我们现在利用基追踪,就是想要来获得一组含0元素最多的解。
那么我们为什么希望我们获得的解里面0元素越多越好呢?这就要谈到“稀疏化”了。所谓稀疏化,就是希望我获得的这个解放眼望去全是0,非0元素稀稀疏疏的。这样在大样本或者高维数的情况下,计算速度不会太慢,也不会太占计算机的内存。当然,所谓稀疏解是有一定精度误差的,想要提高计算速度,必然会损失一点精度,这是不可避免的。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 :

压缩感知重构算法之基追踪(Basis Pursuit, BP).基追踪并不能称为一个具体的算法,而是一种最优化准则,可以有很多实现方式,我认为指的是L0可以变为L1的准则_第6张图片
        工具箱中给出了专门针对(P1)的代码l1eq_pd.m,使用方法可以参见l1eq_example.m,说明文档的3.1节也进行了介绍。

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

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

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

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

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

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

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

        这里,文献【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】:

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

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

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

求得最优化解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 should be a column vector  
    end 
    p = size(Phi,2);
    %according to section 3.1 of the reference
    c = 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)图:

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

2)Command Windows

Optimization terminated.

Elapsed time is 0.304111 seconds.

恢复残差:

ans =

  6.5455e-010

6、结束语

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

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

        本文实现方法基于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

文章最后发布于: 2016-07-21 21:03:19

你可能感兴趣的:(CS,for,Convex,Relaxation)