转自:彬彬有礼. 压缩感知中的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. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  2. uva11991 Easy Problem from Rujia Liu?

    Though Rujia Liu usually sets hard problems for contests (for example, regional contests like Xi'an ...

  3. redis数据库操作的C++简单封装

    用c++简单封装了redis的基本操作(hiredis) 接口包括:①链接和断开连接.②设置键值对(set).③查询键值对(get).④删除键值对(del).⑤将所有键显示出来 若任何一处发生错误,返 ...

  4. [2017-08-16]ABP系列——QuickStartB:正确理解Abp解决方案的代码组织方式、分层和命名空间

    本系列目录:Abp介绍和经验分享-目录 介绍ABP的文章,大多会提到ABP框架吸收了很多最佳实践,比如: 1.N层 (复用一下上篇的图) 展现层(Personball.Demo.Web):asp.ne ...

  5. selenium元素定位不到之iframe

    我们在使用selenium的18中定位方式的时候,有时会遇到定位不上的问题,今天我们就来说说导致定位不上的其中一个原因---iframe 问题描述:通过firebug查询到相应元素的id或name等, ...

  6. jenkins+gitlab+sonar+testng构建持续集成测试环境(配置干货篇)

    几个工具的安装部分就不在此介绍了! jenkins配置: 1.插件安装 2.root私钥配置 3.构建job配置 4.部署job配置 5.测试job配置 7.jenkins全局工具配置 8.jenki ...

  7. 【Alpha阶段】第五次scrum meeting

    一.会议照片 二.会议内容 姓名 学号 负责模块 昨日任务完成度 今日任务 杨爱清 099 界面设计和交互功能 完成 去酷狗选择合适的轻音乐 杨立鑫 100 数据库搭建和其他 完成 继续对数据库进行编 ...

  8. JFrame常用属性设置模板

    最近在学习Swing,在各种demo中都需要构建JFrame,于是我决定把构建JFrame的代码贴上来,以后就直接复制粘贴了. public static void main(String[] arg ...

  9. 201521123054 《Java程序设计》第7周学习总结

    1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 //contains()方法 public boolean contains(O ...

  10. 201521123075 《Java程序设计》第5周学习总结

    1. 本周学习总结 2. 书面作业 作业参考文件下载 1 .代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分 ...