转自:彬彬有礼. 压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因

http://blog.csdn.net/jbb0523/article/details/40268943

题目:  压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因

================问题的引出================

压缩感知中为了解释0范数或1范数最优化为什么总会导致一个稀疏解的原因在解释时经常使用lp球与直线的交点去解释,下面论文中就是这样子解释的:

戴琼海,付长军,季向阳.压缩感知研究[J].计算机学报,2011,34(3):425-434.

在上面论文的第2小节压缩感知原理中就是这样子解释的,为了完整说明问题,这里将论文中的部分内容截图出来:

上面这幅图2让我看了好久也没看明白,在博主Rachel_Zhang博客的文章“压缩感知进阶——有关稀疏矩阵”中,也提到了类似的内容:

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

怎样恢复原信号?

我们已知所选择的最稀疏的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 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的思路)。
===============================

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是一个常数。

以上都是采用lp球去解释问题,似乎看起来很直观,但我看了好久都没看明白,今天琢磨之后终于想明白了,接着往下说……

================正文================

在论文“戴琼海,付长军,季向阳.压缩感知研究[J].计算机学报,2011,34(3):425-434.”(以下简称论文)中看了几遍没看明白,但看了Rachel_Zhang博客的文章“压缩感知进阶——有关稀疏矩阵”,虽然也没有看明白,但我得到了一个重要信息,这个图是在2维的情况下画出来的,下面就来详细解释一下。

下面的叙述以论文为框架,即如果提到式(1)指的是论文中的式(1)。

假定式(1)中的信号f是二维的,设f=[x1,x2]T(列向量,没法写转置,只能用T表示了),f是稀疏的,经过φ变换得到y,y的维数肯定比x要小,这里假定了f是2维的,那么y只能是1维了(也就是一个数了,维数不能再低了),φ是一个1乘2的矩阵,设φ=[φ1,φ2]。

通过观测我们得到了y(也就是说y是一个已知常量),我们现在关心的是如果根据y重构稀疏信号f,文章中的式(2)和式(3)说明了这个问题:可以求0范数和p范数最优化的问题来重构信号f,为什么总可以得到f呢?然后作者就用lp球直观形象的解释了这个问题,得出结论:p<=1时可以得到唯一解(与直线交点在坐标轴上),p>1时的解将不准确(Rachel_Zhang的博客中用p=2说明了这时得到的结果是不准确的)。

我有几点不明白:一是为什么论文中的式(1)是一条直线?二是图2中的横轴和纵轴到底代表着什么?三是图2中的那些不同p值时是圆(p=2)还是菱形(p=1)是怎么得来的?四是两者的交点为什么一定要在坐标轴上?下面一一解答……

先说第一个问题:为什么论文中的式(1)是一条直线?

对于式(1)来说,在恢复信号f时,观测值y是一个常数(一维,即一个常数),矩阵φ是已知的,即它的两个元素φ1和φ2是两个常数,我们现在想要得到的是信号f中的两个元素x1和x2,因此把式(1)矩阵的形式写开即得到y=φ1*x1+φ2*x2,注意这里面x1和x2是未知量,其它三个量是常数,这时候如果以x1为横轴,以x2为纵轴(二维空间就是这样子的),则式(1)的轨迹(可能取的值)画出来就是一条直线(一次函数嘛,只是一定要注意这时谁是常量谁是变量就OK了)。

到此为止第二个问题也就明白了,横轴是x1,纵轴是x2,即f的两个待求解的元素,不要被常见的x-y直角坐标系搞混了就行了。

再来说第三个问题:那些不同p值时是圆(p=2)还是菱形(p=1)是怎么得来的?

搞明白了第一个和第二个问题,第三个问题就简单了,对于式(3)来说(式(2)是一样子的),求解的x1和x2即要满足min ||f||p成立,也要受约束于式(1) y=φf,即也要保证式(1)成立,如要在一个坐标系中同时画出式(1)曲线和min||f||p曲线,要取它们的交点才行。p范数的公式论文里说了,这里因为信号是二维的,只有两个元素,因此||f||p=((x1)^p+(x2)^p)^(1/p),前面说了x1和x2是待恢复信号f的两个元素,对于||f||p取不同值的时候,它在坐标系中的曲线是不一样子的,当取到某一个值的时候,它就与式(1)直线相交了(如图2所示一共画了||f||p取两种值的情况,实线时不相交,虚线时就有交点了),当然这个并不是一对一的函数,所以画起来比较麻烦,可以四个象限分开来画就容易理解了,比如只考虑第一象限的曲线形状,这时因为x1>0,x2>0所以理解起来容易多了,求出两者之间的表达式,在matlab里很容易画出来的,其它三个象限就是一个对称的关系罢了。

%lp sphere  
clear all;close all;clc;  
p=0.5;c1=0.5;c2=1;  
x1=linspace(0,c1,100);  
y1=(c1^p-x1.^p).^(1/p);  
x2=linspace(0,c2,100);  
y2=(c2^p-x2.^p).^(1/p);  
figure(1);  
subplot(221);plot(x1,y1,x2,y2);title('p=0.5');  
xlim([0 1.1]);  
ylim([0 1.1]);  
p=1.0;c1=0.5;c2=1;  
x1=linspace(0,c1,100);  
y1=(c1^p-x1.^p).^(1/p);  
x2=linspace(0,c2,100);  
y2=(c2^p-x2.^p).^(1/p);  
figure(1);  
subplot(222);plot(x1,y1,x2,y2);title('p=1.0');  
xlim([0 1.1]);  
ylim([0 1.1]);  
p=1.5;c1=0.5;c2=1;  
x1=linspace(0,c1,100);  
y1=(c1^p-x1.^p).^(1/p);  
x2=linspace(0,c2,100);  
y2=(c2^p-x2.^p).^(1/p);  
figure(1);  
subplot(223);plot(x1,y1,x2,y2);title('p=1.5');  
xlim([0 1.1]);  
ylim([0 1.1]);  
p=2.0;c1=0.5;c2=1;  
x1=linspace(0,c1,100);  
y1=(c1^p-x1.^p).^(1/p);  
x2=linspace(0,c2,100);  
y2=(c2^p-x2.^p).^(1/p);  
figure(1);  
subplot(224);plot(x1,y1,x2,y2);title('p=2.0');  
xlim([0 1.1]);  
ylim([0 1.1]);  

在Matlab中运行以上m文件即可画出如下图形,这里分别取范数||f||p等于0.5和1两种情况(即代码中的c1和c2),p分别取了0.5,1.0,1.5,2.0四种特殊情况:

可以看出所得到的图与论文的图2中的第一象限是一致的。

最后说一下第四个问题:两者的交点为什么一定要在坐标轴上?

这个问题很关键,说难也难,但说简单也很简单。

为什么在坐标轴上呢?首先这里要回到最早的前提:信号f是稀疏的,p无论为多少,它最终都是要等价到0范数的情况,这是最原始重构方法所在,但对于这里一个只有两维的信号来说,最稀疏能是什么情况呢?不能稀疏到一个非零元素都没有吧,所以最稀疏也只就是两个元素x1,x2一个为零,一个非零。这时候明白了吧,x1和x2一个为零一个非零,那么把它的坐标在坐标系里画出来是哪里呢?也就是直线与横轴或纵轴的交点了嘛,至于说到底是与横轴还是与纵轴的交点,这个很重要么?只要交换一下x1和x2两个轴,点不就变了么?论文中是以纵轴交点为例来说明问题的,其实你以与横轴的交点为例来说明问题也是可以的啊。

至此,有关lp球的问题就全部说完了,初识压缩感知,有很多很多不明白的问题,认识也是越来越深的,不妥之处敬请多多包含!

压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因的更多相关文章

  1. 压缩感知中的数学知识:稀疏、范数、符号arg min

    转自:http://blog.csdn.net/jbb0523/article/details/40262629 1.稀疏:什么是K稀疏呢? 在压缩感知里经常提到 "K稀疏" 的概 ...

  2. 浅谈压缩感知(二十):OMP与压缩感知

    主要内容: OMP在稀疏分解与压缩感知中的异同 压缩感知通过OMP重构信号的唯一性 一.OMP在稀疏分解与压缩感知中的异同 .稀疏分解要解决的问题是在冗余字典(超完备字典)A中选出k列,用这k列的线性 ...

  3. [综] Sparse Representation 稀疏表示 压缩感知

    稀疏表示 分为 2个过程:1. 获得字典(训练优化字典:直接给出字典),其中字典学习又分为2个步骤:Sparse Coding和Dictionary Update:2. 用得到超完备字典后,对测试数据 ...

  4. 浅谈压缩感知(十六):感知矩阵之RIP

    在压缩感知中,总是看到"矩阵满足RIP"之类的字眼,没错,这是一个压缩感知绕不开的术语,有限等距性质(Restricted Isometry Property, RIP). 注意: ...

  5. 浅谈压缩感知(十五):感知矩阵之spark常数

    在压缩感知中,有一些用来评价感知矩阵(非测量矩阵)的指标,如常见的RIP等,除了RIP之外,spark常数也能够用来衡量能否成为合适的感知矩阵. 0.相关概念与符号 1.零空间条件NULL Space ...

  6. 压缩感知(CS)

    总结一下最近看的压缩感知(Compressed Sensiong)的内容. 它是在采样过程中完成了数据压缩的过程. 一. 将模拟信号转换为计算机能够处理的数字信号,必然要经过采样的过程.问题在于,应该 ...

  7. 浅谈压缩感知(三十一):压缩感知重构算法之定点连续法FPC

    主要内容: FPC的算法流程 FPC的MATLAB实现 一维信号的实验与结果 基于凸优化的重构算法 基于凸优化的压缩感知重构算法. 约束的凸优化问题: 去约束的凸优化问题: 在压缩感知中,J函数和H函 ...

  8. 浅谈压缩感知(三十):压缩感知重构算法之L1最小二乘

    主要内容: l1_ls的算法流程 l1_ls的MATLAB实现 一维信号的实验与结果 前言 前面所介绍的算法都是在匹配追踪算法MP基础上延伸的贪心算法,从本节开始,介绍基于凸优化的压缩感知重构算法. ...

  9. 浅谈压缩感知(六):TVAL3

    这一节主要介绍一下压缩感知中的一种基于全变分正则化的重建算法——TVAL3. 主要内容: TVAL3概要 压缩感知方法 TVAL3算法 快速哈达玛变换 实验结果 总结 1.TVAL3概要 全称: To ...

随机推荐

  1. -webkit-overflow-scrolling 与滚动回弹效果.

    参考来源:https://developer.mozilla.org/zh-CN/docs/Web/CSS/-webkit-overflow-scrolling https://www.w3cways ...

  2. 超简单使用批处理(batch)操作数据库

    超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...

  3. LeetCode315—Count of Smaller Numbers After Self—Java版归并算法

    这是我在研究leetcode的solution第一个解决算法时,自己做出的理解,并且为了大家能看懂,做出了详细的注释. 此算法算是剑指Offer36的升级版,都使用的归并算法,但是此处的算法,难度更高 ...

  4. sublime中css输入分号后自动提示的烦恼

    sublime开发前端确实好用,有好多些个的插件,轻量便捷,但是在使用sublime中的一些插件的时候总是会遇到困扰,跟自己想象中的不一样,比如在使用SublimeCodeIntel插件的时候,就会遇 ...

  5. 简述C/C++调用lua中实现的自定义函数

    1.首先说下目的,为什么要这么做 ? 正式项目中,希望主程序尽量不做修改,于是使用C/C++完成功能的主干(即不需要经常变动的部分)用lua这类轻量级的解释性语言实现一些存在不确定性的功能逻辑:所以, ...

  6. shell变量$(CURDIR),$0,$1,$2,$#含义解释

    $(CURDIR):   CURDIR是make的内嵌变量, 为当前目录 实例 SRCTREE := $(CURDIR) *$(CURDIR)为当前目录,相当于SRCTREE=./ MKCONFIG ...

  7. CRC与MD5的异同

    php中CRC32的用法: crc32 - 计算一个字符串的 crc32 多项式 生成 string 参数的 32 位循环冗余校验码多项式--: 这句话从英文翻译过来的,不正确,准确的说应该是这么理解 ...

  8. HTTP请求响应机制与响应状态码

    转载来源:http://blog.csdn.net/xyw591238/article/details/51907143 HTTP协议 Internate的基本协议是TCP/IP(传输控制协议和网际协 ...

  9. 转: 深入Java虚拟机】之二:Class类文件结构

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17675609 平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存 ...

  10. 【Alpha】阶段 第六次 Scrum Meeting

    每日任务 1.本次会议为第 六次 Meeting会议: 2.本次会议在上午09:35,大课间休息时间在陆大召开,召开本次会议为20分钟,讨论统一下时间安排的问题以及一些程序上的该进: 一.今日站立式会 ...