压缩感知先进——关于稀疏矩阵

《初识压缩感知Compressive Sensing》中我们已经讲过了压缩感知的作用和基本想法,涉及的领域,本文通过学习陶哲轩对compressive sensing(CS)的课程,对压缩感知做进一步理解。针对其原理做出解说。本文较为理论性,代码请參考《“压缩感知”之“Hello world”》。

Keywords: 压缩感知 compressive sensing, 稀疏(Sparsity)、不相关(Incoherence)、随机性(Randomness)


主要内容

===============================

回顾传统压缩

压缩感知概念 &线性度量

压缩感知适合解决什么问题?

压缩感知是否可行?

如何恢复原信号?

Basis Pursuit & RIP

噪声

线性编码应用——single pixel camera

===============================

回顾传统压缩

对于原始信号x∈C(N*1),传统压缩是构造正交矩阵D∈C(N*N),正变换为y=Dx, 反变换x=D-1y= DTy, D-1= DT

将初始信号x变换到y∈C(N*1)后,将保留当中的K个分量(K人工指定),对其它N-K个分量置零,这种信号y就称为K稀疏(K-Sparse)的。

于是得到编码策略例如以下:

Code(编码):构造正交矩阵D,做正变换y=Dx, 保留y中最重要的K个分量及其相应位置。

Decode(解码):将K个分量及其相应位置归位,其它位置置零,得到y,构造D,并用x=D-1y恢复x。

换句话说,传统压缩就是构造正交阵进行编解码,将所有N维信号所有存储下来。

其弊端是,

1. 由于香农定理的限制,採样频率非常大。这样造成了原始信号非常长(N非常大),消耗时间和空间。

2. K个重要分量要分别存储其位置,多分配空间。

3. K中分量(在传输过程中)丢失的话不好恢复。

 [ S-sparse ]:A model case occurs when x is known to be S-sparse for some 1≤S≤n, which means that at most S of the coefficients of x can be non-zero.

===============================

压缩感知概念 & 线性度量

卍 压缩感知初识(详见上一篇详细介绍):

      与传统压缩不同的是。压缩感知採用的y=Dx中,D不是N*N, 而是D∈C(M*N)的,当中M<N,也就是说D是一个扁矩阵,未知数个数大于方程个数。对于方程Dx=y, x∈C(N*1),y∈C(M*1),

      我们知道,当M>=N的时候,这是一个determined或over-determined的problem。并且easy求解;而M<N的时候问题是under-determined的,如果我们如果x是稀疏的,最好的solution就是能够满足Ax≈b的最稀疏的x。CS惊人之处就是能够解决这种under-determined的问题:给定M*1的y,能够依据D恢复出N*1的x, 当中M<<N。如果x是S稀疏(S-sparse)的(或者想要让它是S稀疏的),那么我们仅仅须要取那S个度量(from N个未知量x)就好了。


卍 线性度量:

      对于上面的问题y=Dx, 当M<N时我们已知有无穷多解。如果x0是当中一个特解的话,那么通解形式即为x0+WZ,当中W∈C(N*(N-M)),是D的零空间的一组基。Z是这组基的线性组合。总有DWZ=0。

所以我们的任务就是找x0+WZ中最稀疏的解x(为什么找最稀疏的后面会有证明的定理)。

     这里。原先传统压缩中N*N的D越冗余,其零空间越大,寻找更稀疏矩阵的选择越多(即x0+WZ越多)。


卍 求解问题:


[example of CS-imaging]:(from ppt of 陶哲轩)

A typical example of when this assumption is reasonable is in imaging. An image may consist of ∼106 pixels and
thus require a vector of n∼106 to fully represent. But, if expressed in a suitable wavelet basis, and the image does
not contain much noise or texture, only a small fraction (e.g. 104) of the wavelet coefficients should be significant.
(This is the basis behind several image compression algorithms, e.g. JPEG2000.)

Intuitively, an S-sparse vector x has only S degrees of freedom, and so one should now be able to reconstruct x using only S or so measurements.This is the philosophy of compressed sensing(or compressive sensing, or compressive sampling): the number of measurements needed to accurately capture an object should be comparable to its compressed size, not its uncompressed size.


===============================

压缩感知适合解决什么问题?

卍 信号是稀疏的

卍 sensor方计算代价较大,receiver方计算代价较小(即不适合将信息所有存储下来,而适合取少量信息。之后恢复)


PS:single-pixel camera之后讲(*^__^*) 

===============================

压缩感知是否可行?

说起这个问题可能有人会奇怪。什么叫是否可行呢?就是说给出D和M维的y,能否够唯一地把x恢复出来?答案是肯定的!

Compressive Sensing中有两个问题,对于


  • 一个是如何确定出一个stable的基θ,或者測量矩阵Φ
  • 还有一个是如何进行信号x的恢复(下一小节)
首先看看怎么确定一个stable的基:
2 conditions:下图是说明了一切。




定理:如果Ax=b中,A是m*n的矩阵。x是n维向量,y是m维向量,A中随意2S列都是线性无关的(即无法线性组合得到0向量)。则s-sparse的向量x能够被b和A唯一地重构出来,i.e.


证明:如果能够重建出两个向量x,x'同一时候满足Ax=Ax'=b,当中x和x'都是S-Sparse的;那么就有A(x-x')=0; 由于x-x'中非零元素个数<=2S,所以x-x'是2S-Sparse的,又由于给出条件A中随意2S个列向量都是线性独立(线性无关)的,这就与A(x-x')=0矛盾了,所以如果不成立。即。能够依据b和A唯一地恢复出x∈C(n*1)。


===============================

如何恢复原信号?

我们已知所选择的最稀疏的x即x中非零元素最少的。即x的零范数最小的(向量的零范数即为其稀疏度sparsity)。

然而,x=argmin||x||0使得x满足Ax=b的一个子问题是一个NP全然问题,须要在S个compoments中选出1,2,...,n个,看能从中选出最少多少个,满足Ax=b,这样。对于每个n都有排列组合C(S,n)种方法,显然不可行。所以我们想能不能换个什么方法来恢复信号。自然而然的,我们想到了最小平方法。

详细见下图Fig B。


Fig A. 用二范数取代零范数 


Fig B. L2范数下寻找满足Ax=b的x,发现有一定偏差。


symmerize:

2-methods to methods:
1. L2-norm: quick, efficient, but get the wrong answer
2. L0-norm: precise but impractical

否定了L0范数和L2范数之后,我们想到取中——用L1范数(Basis pursuit的思路)。


so get select the L1-norm , that is the abs of each element




===============================

Basis Pursuit & RIP


Basis pursuit的方法在2000年由Candes-Romberg-Tao, Donoho提出,其基本思路见下图(以二维为例):


从图中可见,L1-norm比L2-norm靠谱多了。从上图中可见。x*处,x的L1-norm最小,这样推广到n维向量x。就是其每一维的值的绝对值的和。

以下这个Theorem就是对L1-norm方案(Basis pursuit)可行性的定理(详细证明看论文吧):大概是说,原始S-sparse的信号f为n维。从当中随机抽取m维分量。如果想利用Basis pursuit的方法把这m维向量重建出n维原始信号,仅仅要满足m>cS*log(n)就可以。当中c是一个常数。


非常多实验结果表明呢。大多数S-sparse信号 f 能够在m>=4*S的时候得以非常好的重建,由此有了以下更强的RIP如果:

如果A中随意4S列都是差点儿正交的。i.e. 在这4S列中。前4S个神秘值都在[0.9,1,1]范围内。则随意S-sparse信号x能够通过basis pursuit 由 Ax重建。


2006年。Tao和Donoho的弟子Candes合作证明了在RIP条件下,0范数优化问题与以下1范数优化问题具有同样的解




上面已经说过一个定理:对于Ax=b,A中随意2S列都线性独立,则随意S-sparse的向量x都能够被恢复出来,这是理论上的说法。实际上,利用basis pursuit进行恢复时须要增强条件:A中的每4S列都是差点儿正交的。这个精确的条件就是RIP。很多matrix都服从这个条件。

补充:





实际上以上的1范数优化问题是一个凸优化。故而必定有唯一解,至此sparse representation的大坑初步成型。总结一下:

  •  如果矩阵满足sparsity=2S,则0范数优化问题有唯一解。
  •  进一步如果矩阵A满足RIP条件。则0范数优化问题和1范数优化问题的解一致。

  •  1范数优化问题是凸优化。故其唯一解即为0范数优化问题的唯一解。




===============================

噪声

实际应用中,我们用b=Ax+z来进行拟合,对付噪声的干扰,当中z是高斯噪声向量。


Fig. Reconstructing a sparse signal x approximately from noisy data b=Ax+z, assuming that z has norm less than error tolerance e.



===============================

CS应用——single pixel camera

Rice大学首先研究出的单像素相机是CS的一个主要应用。









test image(65536 pixels ) and CS construction using 11000 and 1300 measurements


Reference:

我都整合起来放在这里了。当中包含陶哲轩的讲座内容,我对其做的笔记,和大牛的一些解释。对CS的一个基本代码写在了下一篇《“压缩感知”之“Hello world”》,另外推荐一篇非常好的博文。嗯。

。。

还有两篇文章值得一看。一是《Compressive Sensing (Signal Processing Magazine 2007 715') 》。二是《An introduction to compressive sampling (Signal Processing Magazine 2008 1061')》。


关于Compressive Sensing很多其它的学习资料将继续更新。敬请关注本博客和新浪微博Sophia_qing。








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

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

相关文章

基于环信sdk的陌生人交友php服务器代码开源

2019独角兽企业重金招聘Python工程师标准>>> 这个是代码结构 服务器端需要两个服务器端软件的支持&#xff1a; 1&#xff1a;weed-fs golang写的海量小文件存储工具 2&#xff1a;memcache 流行的缓存服务器 服务器端主要配置是 conf.php 文件&#xff0c;配置数据…

Linux视频 pad,Wine 1.9.10 发布下载, 改善视频输出

Wine 1.9.10最近发布下载&#xff0c;改进了大量的新功能和错误修正。一个显著的更新是此版本改善视频输出&#xff0c;更兼容目录列表&#xff0c;修复一些C 运行时。Wine 1.9.10 Bug 修复Month calendar control uses 0sunday for firstDayOfWeektooltips not working proper…

EXCEL数据导入dataset

一、开工必备 1、micorosoft office2007 2、VS2010、Oracle 11 二、界面 三、内部代码 (1)获取数据库连接&#xff0c;定义全局变量 private static string connString System.Configuration.ConfigurationSettings.AppSettings[ "connStr" ]; D…

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术。 一、JDBC基础知识 JDBC&#xff08;Java Data Base Connectivity,java数据库连接&#xff09;是一种用于执行SQL语句的Java API&#xff0c;能够为多种关系数据库提供统一訪问&#xff0c;它由一组用Java语言…

Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper

公式推导 paper闪光点 找到了一个很简洁的假设。 paper不足 代码跑起来很慢。据说2010年的ECCV那篇是改进的。

EasyUI学习总结(二)——easyloader分析与使用

使用脚本库总要加载一大堆的样式表和脚本文件&#xff0c;在easyui 中&#xff0c;除了可以使用通常的方式加载之外&#xff0c;还提供了使用 easyloader 加载的方式。这个组件主要是为了按需加载组件而诞生。什么情况下使用它呢&#xff1f; 你觉得一次性导入 easyui 的核心 m…

c语言switch scanf语句,C语言中scanf函数与switch语句

----------------switch----------------1)使用格式switch(表达式){case 常量表达式1: 语句1;case 常量表达式2: 语句2; ...case 常量表达式n: 语句n;default: 语句n1;}判断月份代码实现int main(int argc, const char * argv[]) {//定义变量int month;//提示用户输入一个月份p…

JadClipse eclipse反编译插件

A.下载JadClipse&#xff0c;http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download&#xff0c;注意选择与eclipse版本一致的版本&#xff0c;我用的是Eclipse3.4&#xff0c;所以选择下载版本net.sf.jadclipse_3.3.0.jar B.下载Jad&#xff0c;http://www.…

Sublime 资源汇总

2019独角兽企业重金招聘Python工程师标准>>> 《sublime text2使用经验》&#xff1a;里面插件的推介和使用、截图。《Sublime Text 2 入门及技巧》&#xff1a;技巧&#xff0c;可惜是4年前的东西了。《Sublime Text 2安装插件方法详解》&#xff1a;介绍了使用 GoA…

c汇编语言程序框架培训,[010][x86汇编语言]学习用户程序的编写(c08.asm)

源程序来源加载程序c08_mbr.asm用户源程序&#xff1a;增加注释;;文件名&#xff1a;c08-2.asm;文件说明&#xff1a;用户程序;创建日期&#xff1a;13:08 2018/5/23;----------------------------------------------------------------------SECTION header vstart0 ;定义用户…

文件共享服务器搭建

详细需求描述1、网络拓扑图如下&#xff1a;2、利用虚拟机实现网络拓扑&#xff0c;要求如下&#xff08;1&#xff09;虚拟机环境使用hostonly&#xff08;2&#xff09;服务器要求&#xff1a;安装Widnwos Server 2008 R2操作系统内存要求&#xff1a;750MB安装五块物理SCSI磁…

当c语言老师遇到网络崩溃,网络教学搞不定?工科教授来支招!

新学期已经到来但是由于新冠病毒肆虐我们不得不在“线上会面”网络远程教学颠覆了传统课堂模式的同时&#xff0c;也为教员们的教学工作带来极大的挑战。想想看&#xff0c;面对一个计算机屏幕滔滔不绝地讲上90分钟&#xff0c;确实需要大量的准备工作。网课平台怎么选&#xf…

在JS函数中执行C#中的函数、字段

1、调用字段 cs文件的代码&#xff1a; public int id 0;protected void Page_Load(object sender, EventArgs e){id 2;} View Codejs页面的代码&#xff1a; function CheckFunc() {alert("<% id%>");} View Code2、调用函数&#xff1a; 在JS函数中访问或执…

计算本年 本月 本周的起始日期

html: <table><tr><td align"right" width"120px"> 销售时间区间:</td><td><select id"ddlChoiceDate" name"ddlChoiceDate" runat"server" onchange"SelectChange(this.value);&quo…

Android查看真机布局,android-外部存储

外部存储&#xff0c;个人理解是在app作用域之外存储&#xff0c;就是数据没有和app做关联&#xff0c;app卸载后&#xff0c;它依旧存在而不再是之前手机本身存储空间和sd卡的区别&#xff0c;现在安卓手机已经不携带可拆卸的SD卡androidManifest.xml 需要写入读写权限简单布局…

android国籍组件,android组件化之路

问题&#xff1a;实际业务变化快&#xff0c;而工程内各个功能模块耦合度太高&#xff0c;不能对功能模块进行快速方便地拆分或组装。团队共同开发中&#xff0c;可能一个文件同时被多人修改&#xff0c;导致每次更新提交代码都需要消耗大量时间去merge代码。每次修改&#xff…

UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数...

lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序)。对于这种信号的系统默认动作是忽略它。 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函…

android代码导入有错误,android新项目导入后进行编译出现cmake错误

问题描述使用as加载并且gradle sync 提示&#xff1a;SIMPLE:error configure同时使用make project提示问题出现的环境背景及自己尝试过哪些方法已经尝试更换过ndk 调整target brinary 然后完全clean project等操作相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)使用g…

BZOJ1652 [Usaco2006 Feb]Treats for the Cows

蒟蒻许久没做题了&#xff0c;然后连动规方程都写不出了。 参照iwtwiioi大神&#xff0c;这样表示区间貌似更方便。 令f[i, j]表示i到j还没卖出去&#xff0c;则 f[i, j] max(f[i 1, j] v[i] * T, f[i, j - 1] v[j] * T) &#xff08;←这样用推的方式更好想一点。。&#…

git+jekyll部署备忘

github&#xff0c;会自动帮忙编译jekyll编写的文件&#xff0c;只要将文件放到gh-pages分支 (或者使用官方教程的二级域名方式&#xff0c;项目名字&#xff0c;可以随便起&#xff0c;官网的例子是 用户名.github.com 作为项目名字&#xff0c;可以使用 用户名.github.com …