您的位置:首页 > 产品设计 > UI/UE

压缩感知重构算法之基追踪降噪(Basis Pursuit De-Noising, BPDN)

2016-08-03 11:45 543 查看
题目:压缩感知重构算法之基追踪降噪(Basis Pursuit De-Noising, BPDN)

        本篇来探讨基追踪降噪(Basis Pursuit De-Noising, BPDN),与基追踪不同之处在于,基追踪降噪在模型中考虑到了噪声的存在,而这在实际中是非常有意义的。因为考虑到了噪声,所以不同于BP的最优化模型可以转化为线性规划问题,BPDN的最优化模型可以转化为二次规划问题。


1、基追踪降噪的提出

        文献【1】为了使基追踪能够适应有噪声的数据,提出了基追踪降噪:



        然后将基追踪降噪转化为扰动线性规划(perturbed linear program)问题:



        基追踪降噪最优化模型中的参数λ可按如下规划选取:



        并没有查到简单的MATLAB函数求解扰动线性规划问题。作者发布了文献【1】中的算法MATLAB源代码工具箱Atomizer(下载链接:http://sparselab.stanford.edu/atomizer/),并有一个说明文档,在工具箱\Documentation目录下(AboutAtomizer1208.ps,若想打开需要转换一下格式,不成功者可以参考链接http://download.csdn.net/detail/jbb0523/9583505)


2、利用l1-magic工具箱实现基追踪降噪

        在l1-magic工具箱(链接:http://users.ece.gatech.edu/~justin/l1magic/)解决的七类问题中,并没有出现文献【1】式(5.1)类型,但在文献【2】中提到:





        即问题(3)与问题(1)等价。下面是l1-magic的(P2)问题:



        可以看出文献【2】的问题(3)与l1-magic中的问题(P2)等价,因此,我们完全可以使用l1-magic工具箱中求解(P2)的函数l1qc_logbarrier.m解决基追踪降噪(使用时注意,函数l1qc_logbarrier还调用了工具箱其它的函数)。


3、将基追踪降噪转化为二次规划问题

        文献【2】给出了将基追踪降噪转化为二次规划问题的过程:





        对于线性代数和矩阵分析基础不好的人,这个过程可能并不是很容易看明白,现详细推导如下:

Step0:

与基追踪推导类似,将变量x变为两个非负变量u和v之差:



Step1:

 

,其中 


Step2:



Step3:

因为

是一个数(或者说是1×1的矩阵)

所以



Step4:

因为



所以











Step5:



Step6:

综合Step3、Step4、Step5的结果,Step2可化为:



Step7:

与基追踪推导类似:



其中, 

表示转置



Step8:

综合Step6与Step7的结果,Step0可化为:



其中



Step9:

因为

是一个与变量无关的常数,因此不影响最优化极值点的位置

所以Step8可写为标准的二次规划形式:



        求得最优化解z0后可得变量x的最优化解x0=z0(1:n)-z0(n+1:2n)。


4、基于quadprog的基追踪降噪MATLAB代码(BPDN_quadprog.m)

        根据以上推导结果,可以写出基于MATLAB自带二次规划函数quadprog的代码:

[plain] view
plain copy

 





function [ x ] = BPDN_quadprog( y,A,tao )  

%BPDN_quadprog(Basis Pursuit DeNoising with quadprog) Summary of this function goes here  

%Version: 1.0 written by jbb0523 @2016-07-22   

%Reference:Nowak R D, Wright S J. Gradient projection for sparse reconstruction:  

%Application to compressed sensing and other inverse problems[J].   

%IEEE Journal of selected topics in signal processing, 2007, 1(4): 586-597.  

%(Available at: http://pages.cs.wisc.edu/~swright/papers/FigNW07a.pdf)  

    [y_rows,y_columns] = size(y);    

    if y_rows<y_columns    

        y = y';%y should be a column vector    

    end   

    n = size(A,2);  

    %according to section II-A of the reference  

    b = A'*y;  

    c = tao*ones(2*n,1)+[-b;b];  

    B = [A'*A,-A'*A;-A'*A,A'*A];  

    lb = zeros(2*n,1);  

    z0 = quadprog(B,c,[],[],[],[],lb);  

    x = z0(1:n) - z0(n+1:2*n);  

end  


5、基追踪降噪单次重构测试代码

        测试代码与OMP测试代码有改动,首先是测量矩阵Phi使用函数orth进行了正交化,其次是观测值y加入了噪声e,可以用比较软件Beyond Compare具体比较不同之处: 

[plain] view
plain copy

 





%压缩感知重构算法测试    

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);%测量矩阵为高斯矩阵  

Phi = orth(Phi')';  

A = Phi * Psi;%传感矩阵    

sigma = 0.005;  

e = sigma*randn(M,1);  

y = Phi * x + e;%得到观测向量y    

%% 恢复重构信号x    

tic    

lamda = sigma*sqrt(2*log(N));  

theta =  BPDN_quadprog(y,A,lamda);  

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: relative functionvalue changing by less

 thansqrt(OPTIONS.TolFun), no negative curvature detected in current

 trust region model and the rate of progress(change in f(x)) is slow.

Elapsed time is 8.706162 seconds.

 恢复残差:

ans =

   0.2723


6、结束语

        从Command Windows输出可以看到,本次运行花费了8.706162秒,误差为0.2723。相比于之前的单次重构测试,这个运行时长非常长,误差非常大。为什么呢?

        有关运行时间长,是不是由于该二次规划变量只有一个非负约束,故可行域范围比较大,所以时间会很长;而误差大也是可以理解的,因为本来该方法的观测值就是含有噪声的,但问题也就来了,这不是基追踪“降噪”么?为什么没把“噪声”给“降”掉呢?


7、参考文献:

【1】Chen S S, Donoho D L, Saunders MA. Atomicdecomposition
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)
 【2】Nowak
R D, Wright SJ. Gradientprojection for sparse reconstruction: Application to compressed sensing andother inverse
problems[J]. IEEE Journal of selected topics in signalprocessing, 2007, 1(4): 586-597. (Available at: http://pages.cs.wisc.edu/~swright/papers/FigNW07a.pdf)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: