压缩感知入门——基于总体最小二乘的扰动压缩感知

news2024/11/25 20:12:27

  • 压缩感知系列博客:
  • 压缩感知入门①从零开始压缩感知
  • 压缩感知入门②信号的稀疏表示和约束等距性
  • 压缩感知入门③基于ADMM的全变分正则化的压缩感知重构算法

文章目录

  • 1. Problem
  • 2. 仿真结果
  • 3. MATLAB算法
  • 4. 源码地址
  • 参考文献

1. Problem


一个经典的压缩感知重构问题可以表示为

min ⁡ x   ∣ ∣ x ∣ ∣ 1   s . t .   A x = b + e (1) \min_x\ ||x||_1\ s.t. \ Ax=b+e\tag{1} xmin ∣∣x1 s.t. Ax=b+e(1)

其中, A ∈ R M × N A\in \mathbb R^{M\times N} ARM×N表示观测矩阵, x ∈ R N × 1 x\in \mathbb R^{N\times 1} xRN×1表示待求解信号, b ∈ R M × 1 b\in \mathbb R^{M\times 1} bRM×1表示测量向量, e ∈ R M × 1 e\in \mathbb R^{M\times 1} eRM×1表示测量噪声,其中 M < N M<N M<N。这是一个典型的基于优化算法的压缩感知重构问题,它考虑了信号测量过程中引入的误差。

然而,在实际的使用过程中,通常观测矩阵本身也是存在误差的。在通信或雷达系统中,这种误差可能由时延、多普勒频移等引起,在测量系统中,可能由于观测矩阵的“失配”引起1。该问题在数学上可以表示为

min ⁡ x   ∣ ∣ x ∣ ∣ 1   s . t .   ( A + E ) x = b + e (2) \min_x\ ||x||_1\ s.t. \ (A+E)x=b+e\tag{2} xmin ∣∣x1 s.t. (A+E)x=b+e(2)

其中, E ∈ R M × N E\in \mathbb R^{M\times N} ERM×N表示观测矩阵受到的扰动。传统的压缩感知重构算法2对这一类扰动具有一定的鲁棒性3,但是针对观测矩阵扰动较大的情况,传统的算法可能会失效。因此,针对这种情况,需要设计一种同时考虑测量向量噪声观测矩阵噪声的压缩感知重构算法。

不失一般性,可以先考虑 E E E e e e服从独立同高斯分布的情况,为了尽可能使得两种扰动最小,需要针对优化目标函数添加约束,即

min ⁡ x   λ ∣ ∣ x ∣ ∣ 1 + ∣ ∣ [ E   e ] ∣ ∣ 2 2   s . t .   ( A + E ) x = b + e (3) \min_x\ \lambda||x||_1+||[E\ e]||_2^2 \ s.t. \ (A+E)x=b+e\tag{3} xmin λ∣∣x1+∣∣[E e]22 s.t. (A+E)x=b+e(3)

这是一个总体最小二乘问题1,可以等价为

min ⁡ x   λ ∣ ∣ x ∣ ∣ 1 + ∣ ∣ A x − b ∣ ∣ 2 2 ∣ ∣ x ∣ ∣ 2 2 + 1 (4) \min_x\ \lambda||x||_1+\frac {||Ax-b||_2^2} {||x||_2^2+1}\tag{4} xmin λ∣∣x1+∣∣x22+1∣∣Axb22(4)

具体证明过程可参考4。其中 ∣ ∣ x ∣ ∣ 1 ||x||_1 ∣∣x1是非光滑函数,而 ∣ ∣ A x − b ∣ ∣ 2 2 ∣ ∣ x ∣ ∣ 2 2 + 1 \frac {||Ax-b||_2^2} {||x||_2^2+1} ∣∣x22+1∣∣Axb22是非凸函数,因此无法直接采用梯度下降法进行求解。

针对包含非光滑目标函数的优化问题,近端梯度下降法(Proximal Gradient Descent,PGD)提供了一个求解框架。其核心思想是,将目标函数拆解成光滑函数和不光滑函数两个部分,针对光滑部分可以直接求其梯度,针对不光滑部分则采用近端算子进行近似求解。其几何原理如图所示,第 k k k次迭代时找一个近似函数去逼近原函数,求该近似函数的最优值,再去反推原函数的最优值。

在这里插入图片描述
不妨令

f ( x ) = ∣ ∣ A x − b ∣ ∣ 2 2 ∣ ∣ x ∣ ∣ 2 2 + 1 (5) f(x)=\frac {||Ax-b||_2^2} {||x||_2^2+1}\tag{5} f(x)=∣∣x22+1∣∣Axb22(5)

h ( x ) = λ ∣ ∣ x ∣ ∣ 1 (6) h(x)=\lambda||x||_1\tag{6} h(x)=λ∣∣x1(6)

则原优化问题可重写为

min ⁡ x   f ( x ) + h ( x ) (7) \min_x\ f(x)+h(x)\tag{7} xmin f(x)+h(x)(7)

根据近端梯度法,有

z k = x k − μ k g k (8) z_k=x_k-\mu_kg_k\tag{8} zk=xkμkgk(8)

x k + 1 = p r o x μ k h { z k } = a r g   m i n   { μ k h ( x ) + 1 2 ∣ ∣ z k − x ∣ ∣ 2 2 } (9) x_{k+1}=prox_{\mu_kh} \{z_k\}=arg\ min\ \{\mu_kh(x)+\frac 12||z_k-x||_2^2\}\tag{9} xk+1=proxμkh{zk}=arg min {μkh(x)+21∣∣zkx22}(9)

该优化问题是典型的LASSO问题,利用软阈值函数能够实现快速求解。它的解为

p r o x μ k h { z k } = w t h r e s h ( x k − μ k g k , μ k λ ) (10) prox_{\mu_kh} \{z_k\}=wthresh(x_k-\mu_k g_k,\mu_k \lambda)\tag{10} proxμkh{zk}=wthresh(xkμkgk,μkλ)(10)

其中函数 f ( x ) f(x) f(x) x k x_k xk点的梯度为

g k = 2 ( ∣ ∣ x k ∣ ∣ 2 2 + 1 ) 2 [ ( ∣ ∣ x k ∣ ∣ 2 2 + 1 ) A T ( A x k − b ) − ∣ ∣ A x k − b ∣ ∣ 2 2 x k ] (11) g_k=\frac 2 {(||x_k||_2^2+1)^2} [(||x_k||_2^2+1)A^T(Ax_k-b)-||Ax_k-b||_2^2x_k]\tag{11} gk=(∣∣xk22+1)22[(∣∣xk22+1)AT(Axkb)∣∣Axkb22xk](11)

在进行近端梯度迭代下降的过程中,迭代步长的选择将直接关系到算法收敛的速率。采用基于最速下降步长 μ s , k \mu_{s,k} μs,k和最小化残差步长 μ m , k \mu_{m,k} μm,k的自适应迭代步长,能够加快收敛速率

μ k = { μ m , k μ m , k μ s , k > 1 2 μ s , k − μ m , k 2 μ m , k μ s , k ⩽ 1 2 (12) \mu_k=\begin{cases} \mu_{m,k} & \frac {\mu_{m,k}}{\mu_{s,k}}>\frac 12 \\ \mu_{s,k}-\frac {\mu_{m,k}} 2 & \frac {\mu_{m,k}}{\mu_{s,k}}\leqslant\frac 12 \end{cases}\tag{12} μk={μm,kμs,k2μm,kμs,kμm,k>21μs,kμm,k21(12)

其中,

μ s , k = ∣ ∣ x k − x k − 1 ∣ ∣ 2 2 ( x k − x k − 1 ) T ( g k − g k − 1 ) (13) \mu_{s,k}=\frac {||x_k-x_{k-1}||_2^2} {(x_k-x_{k-1})^T(g_k-g_{k-1})}\tag{13} μs,k=(xkxk1)T(gkgk1)∣∣xkxk122(13)

μ m , k = ( x k − x k − 1 ) T ( g k − g k − 1 ) ∣ ∣ g k − g k − 1 ∣ ∣ 2 2 (14) \mu_{m,k}=\frac {(x_k-x_{k-1})^T(g_k-g_{k-1})} {||g_k-g_{k-1}||_2^2}\tag{14} μm,k=∣∣gkgk122(xkxk1)T(gkgk1)(14)

采用了回溯线搜索来将步长的值限制在其稳定的下降区域中,每次迭代时检查线搜索条件

f ( x k + 1 ) < f ( x k ) + ( x k + 1 − x k ) T g k + 1 2 μ k ∣ ∣ x k + 1 − x k ∣ ∣ 2 2 (15) f(x_{k+1})<f(x_k)+(x_{k+1}-x_k)^Tg_k+\frac 1{2\mu_k}||x_{k+1}-x_k||_2^2\tag{15} f(xk+1)<f(xk)+(xk+1xk)Tgk+2μk1∣∣xk+1xk22(15)

如果该条件不满足,则将 μ k \mu_k μk收缩到原来的 1 2 \frac 12 21并重复计算近端梯度直至满足该条件为止。理论上可以证明,选择的步长小于梯度 g k g_k gk的利普西茨常数的倒数时,条件(15)都能够满足。

2. 仿真结果


测试输入采用随机生成的稀疏序列,序列长度100,稀疏度10,采样率50%。
观测矩阵采用随机高斯矩阵,对照算法采用经典的L1基追踪算法,对观测矩阵和测量向量分别添加-20 dB的高斯噪声,观察两种算法受到噪声的干扰程度。

在这里插入图片描述

从仿真结果可以看到,两种算法均能够恢复出原始信号的大致轮廓。但是基于Proximal Gradient Descent的算法具有更强的抗噪声性能,主要表现为其PSNR相比于L1算法高,且输出信号的平坦区域受到噪声干扰更小。

3. MATLAB算法


clear
close all
M=50;
N=100;
K=10;
%% Generate signal
% x=zeros(N,1);
% ind=randperm(N);
% x(ind(1:K))=randn(K,1);
% A=randn(M,N);% 
% A=A/max(abs(A(:)));% normalized
% x=x/max(abs(x(:)));% normalized
%% load default sensing matrix and signal
load input_dat.mat
snr_A=20;
snr_b=20;
sA=1/(10^(snr_A/10));
sb=1/(10^(snr_b/10));
%% Generate nosie matrix and noise array
E=sA*randn(size(A));
b=(A+E)*x+sb*randn(M,1);
%% signal reconstruction using L1 method and Proximal Gradient Descent method
x0=CS_linprog(A,b);
x1=PGD_TLS(A,b,N,0.01,0.1,10000);
%% error analysis
subplot(211)
plot(x,'*');hold on
plot(x0)
ylim([-1.2 1.2])
title(sprintf('PSNR of L1: %.2f dB',psnr(x0,x)));
subplot(212)
plot(x,'*');hold on
plot(x1)
ylim([-1.2 1.2])
title(sprintf('PSNR of PGD: %.2f dB',psnr(x1,x)));
function x=PGD_TLS(A,b,N,lam,mu0,ni)
AA=A'*A;
Ab=A'*b;
x0=zeros(N,1);
g=-2*Ab;
x=wthresh(-mu0*g,'s',mu0*lam);
y=1/(x'*x+1);
c=y*norm(A*x-b)^2;
for nn=1:ni
    g0=g;
    c0=c;
    g=2*y*(AA*x-Ab-c0*x);
    if (x-x0)'*(g-g0)==0
        mu=mu0;
    else
        mus=((x-x0)'*(x-x0))/((x-x0)'*(g-g0));
        mum=((x-x0)'*(g-g0))/((g-g0)'*(g-g0));
        if mum/mus>.5
            mu=mum;
        else
            mu=mus-mum/2;
        end
        if mu<=0
            mu=mu0;
        end
    end
    while 1
        z=wthresh(x-mu*g,'s',mu*lam);
        y=1/(z'*z+1);
        c=y*norm(A*z-b)^2;
        if c<=c0+(z-x)'*g+norm(z-x)^2/(2*mu)
            break
        end
        mu=mu/2;
    end
    mu0=mu;
    x0=x;
    x=z;
end

4. 源码地址


https://github.com/dwgan/Proximal-Gradient-method-for-Total-Least-Squares-problem

参考文献


  1. Zhu, Hao, Geert Leus, and Georgios B. Giannakis. “Sparsity-cognizant total least-squares for perturbed compressive sampling.” IEEE Transactions on Signal Processing 59.5 (2011): 2002-2016. ↩︎ ↩︎

  2. Chi, Yuejie, et al. “Sensitivity to basis mismatch in compressed sensing.” IEEE Transactions on Signal Processing 59.5 (2011): 2182-2195. ↩︎

  3. Herman, Matthew A., and Thomas Strohmer. “General deviants: An analysis of perturbations in compressed sensing.” IEEE Journal of Selected topics in signal processing 4.2 (2010): 342-349. ↩︎

  4. https://blog.csdn.net/qq_39942341/article/details/126436980 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git的原理与使用

背景知识&#xff1a; 我们在编写各种文档时&#xff0c;为了防止文档丢失&#xff0c;更改失误&#xff0c;失误后能恢复到原来的版本&#xff0c;不得不复制出一个副本。每个版本有各自的内容&#xff0c;但最终会只有一份报告需要被我们使用 。但在此之前的工作都需要这些不…

day10_类中成员之变量

通过以前的学习&#xff0c;我们知道了成员变量是类的重要组成部分。对象的属性以变量形式存在&#xff0c;下面我们就来详解的学习一下类中的变量 成员变量 成员变量的分类 实例变量&#xff1a;没有static修饰&#xff0c;也叫对象属性&#xff0c;属于某个对象的&#xf…

9k字长文理解Transformer: Attention Is All You Need

作者&#xff1a;猛码Memmat 目录 Abstract1 Introduction2 Background3 Model Architecture3.1 Encoder and Decoder Stacks3.2 Attention3.2.1 Scaled Dot-Product Attention3.2.2 Multi-Head Attention3.2.3 Applications of Attention in our Model 3.3 Position-wise Feed…

Linux 数据库 MySQL

Linux系统分类 ^ 数据库的分类 Linux系统 Centos(获取软件包使用yum、dnf) Ubuntu(获取软件包使用apt-get) Suse 国产系统 华为 欧拉 阿里 龙蜥 腾讯 tencentOS 麒麟&#xff08;银河麒麟、中标麒麟->基于centos 优麒麟-> 基于Ubuntu &#xff09; 统…

流计算、Flink和图计算

流计算 流计算流计算概述静态数据和流数据批量计算和实时计算流计算概念流计算与Hadoop流计算框架 流计算处理流程数据处理流程数据实时采集数据实时计算实时查询服务 流计算的应用开源流计算框架StormStorm简介Storm的特点 FlinkFlink简介为什么选择Flink传统数据处理架构大数…

三年 Android 开发的技术人生,浅谈自身面试的感悟

文章素材来源于网友 本篇主要记录了一个 Android 菜瓜三年的面试之旅&#xff0c;希望对大家面试、跳槽有所帮助。 一些唠叨 从进入这行开始&#xff0c;就是听说Android端凉了&#xff0c;寒冬这又如何那又如何的事情&#xff0c;很多的风言风语缠绕着这个圈子。但是老弟觉得…

电商系统架构设计系列(三):关于「订单系统」有哪些问题是要特别考虑的?

订单系统是整个电商系统中最重要的一个子系统&#xff0c;订单数据也就是电商企业最重要的数据资产。 上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;当系统在创建和更新订单时&#xff0c;如何保证数据准确无误呢&#xff1f; 今天这篇文章&#xff0c;主要聊一下&…

DM8:达梦数据库开启SQL日志sqllog

DM8:达梦数据库开启SQL日志sqllog 环境介绍1 修改配置文件sqllog.ini2 开启与关闭 DMSQLLOG2.1 开启 sql 日志记录功能2.2 查询 sql 日志记录是否开启&#xff1a;0 关闭&#xff0c;1/2/3开启);2.3 关闭 sql 日志记录功能 3 sqllog.ini 详细介绍4 更多达梦数据库使用经验总结 …

辅助驾驶功能开发-功能算法篇(3)-ACC-弯道速度辅助

1、功能架构:ACC弯道速度辅助(CSA) 2、CSA功能控制 2.1 要求 2.1.1 CSA ASM:弯道速度辅助 1. 模式管理器:驾驶员应能够激活/关闭功能 应存在处理 CSA 功能的模式管理器。模式管理器由驾驶员输入和系统状态控制。 模式管理器有两个由 CSAStatus 定义的状态。状态转换定义…

ubuntu 系统解决GitHub无法访问问题

先后试了网上两个教程,终于解决。通过修改host文件实现访问。 教程1: 1)终端输入: sudo gedit /etc/hosts 打开hosts文件; 2)使用ip查找工具查询 http://github.com和IP:http://github.global.ssl.fastly.net的ip地址并添加到hosts文件末尾; 3)关掉hosts文件,在终端…

HTTPS协议-保障数据安全【安全篇】

我们都知道由于HTTP是明文的&#xff0c;整个传输过程完全透明&#xff0c;任何人都能够在链路中监听、修改、伪造请求/响应报文。所以不能满足我们的安全要求。比我如我们上网的信息会被轻易的截获&#xff0c;所浏览的网站真实性也无法验证。黑客可以伪装成银行、购物网站来盗…

接口测试常见接口类型?

常见接口类型 1.根据协议区分 1、webService接口:是走soap协议通过http传输请求报文和返回报文都是xml格式的&#xff0c;我们在测试的时候都用通过工具才能进行调用&#xff0c;测试。可以使用的工具有Soapul、jmeter、loadrunner等; 2、http接口:是走http协议&#xff0c;…

Vue向pdf文件中添加二维码

这两天刚看到一个需求&#xff0c;简单描述一下&#xff0c;就是我们拿到一个pdf文件流&#xff08;文件流可以是后端返回的&#xff0c;也可以是从自己本地选的&#xff09;和一个url链接 &#xff0c;现在要将url链接生成二维码&#xff0c;并将这个二维码添加到这个pdf文件中…

一元线性回归分析

一元线性回归分析&#xff1a; &#xff08;1&#xff09;假设X与Y有线性相关关系&#xff0c;求Y与X样本回归直线方程&#xff0c;并求 的无偏估计&#xff1b; &#xff08;2&#xff09;检验Y和X之间的线性关系是否显著(α0.05)&#xff1b; &#xff08;3&#xff09;当Xx0…

通过电脑屏幕传输文件

简介 本文介绍一套用于通过屏幕传输文件信息的软件。 通过屏幕传输文件&#xff0c;即非接触式&#xff0c;非插入式传递文件&#xff0c;是除了常用的网络传输&#xff0c;硬盘类介质拷贝之外的文件信息传输方式&#xff0c;基本原理就是将待传输的文件转换为二维码&#xf…

SkipList(跳表)

基本概述 SkipList&#xff08;跳表&#xff09;首先是链表&#xff0c;但与传统链表相比有几点差异&#xff1a; 元素按照升序排列存储节点可能包含多个指针&#xff0c;指针跨度不同【根据元素个数不同&#xff0c;可以建立多级指针&#xff08;最多可以建立32级指针&#…

liunx优化命令之free命令

free 这里写目录标题 一、free命令描述&#xff1a;1.free命令的语法&#xff1a;2.free命令的选项&#xff1a;3.free命令的输出格式&#xff1a; 二、压力测试工具stress&#xff1a;1.工具简介&#xff1a;2.参数详解&#xff1a;3.下载压力测试工具&#xff1a; 三、模拟实…

基于51单片机设计的红外遥控器

一、项目介绍 遥控器是现代生活中必不可少的电子产品之一,目前市面上的遥控器种类繁多,应用范围广泛。而 NEC 红外遥控器协议则是目前应用最为广泛的一种协议之一,几乎所有的电视、空调等家用电器都支持该协议。 本项目是基于 51 单片机设计支持 NEC 协议的红外遥控器,实…

TPU-MLIR的环境搭建和使用

1、开发环境配置 Linux开发环境 一台安装了Ubuntu16.04/18.04/20.04的x86主机&#xff0c;运行内存建议12GB以上下载SophonSDK开发包(v23.03.01) &#xff08;1&#xff09;解压缩SDK包 sudo apt-get install p7zip sudo apt-get install p7zip-full 7z x Release_<date&…

docker数据管理---数据卷,数据卷容器

在Docker中&#xff0c;数据卷&#xff08;data volumes&#xff09;和数据卷容器&#xff08;data volume containers&#xff09;是用于在容器之间共享和持久化数据的两种不同的机制。 一、数据卷 数据卷是一个特殊的目录或目录&#xff0c;可以绕过容器文件系统的常规层&a…