为什么sparse representation比起其它成分分析方法(DFT,Wavelet)能得到更好的效果?

众所周知,sparse representation的dictionary是overcomplete的,如果对训练信号得到一组合适的dictionar…
关注者
485
被浏览
58,898

3 个回答

已有的两个答案都说得很对,我在这里不重复叙述。不过我认为并没有直接回答题主问题的本质:稀疏表达(sparse representation)和降维(dimensionality reduction)的本质区别是什么?

为什么稀疏表达会起到很好的作用?(以及我的补充,in what sense, it performs good?)

出于科普目的,我将不适用任何数学表达。

首先,题主的问题描述(其实不能算众所周知啦...)里有两个错误:

1)稀疏表达并不要求模型一定要是overcomplete的。

正如

@Yimian Dai

说的那样,DCT和Wavelet都是稀疏表达的模型。他们都不是overcomplete的模型。但他们也表现出了很好的效果,并且得到了广泛应用(比如DCT被应用在JEPG,而Wavelet被应用于JPEG2000)。

关于过完备字典,可以参见我以前的回答:

什么是过完备字典? - Bihan Wen 的回答

题主你提到的DFT,其实再某些应用中,也充当了稀疏表达模型。参见我以前的回答。

傅里叶变换的不足有哪些?有哪些改进的方法? - Bihan Wen 的回答

2)Basis本身是不应该变成0的。

稀疏表达是要求信号在该模型下的sparse code,只有少数的non-zero elements。因为有了少数的non-zero elements,这样的表达从根本上会起到两个作用:(1)拥有更强大表达能力(Representation Power),(2)拥有识别和约束能力(Discriminative, or Regularization Power)。

所有的和稀疏表达相关的应用其实归根到底,都是基于这两个能力展开的。

比如压缩,是利用了其表达能力。

比如降噪等inverse problem,是利用其约束能力

比如分类,图像分割,这些是综合了这两者。

更多分析,可以参见我之前的回答:

稀疏表达的意义在于?为什么稀疏表达得到广泛的应用? - Bihan Wen 的回答

在弄清楚这两个前提之后,我来试着回答我在文章开始时候提到的两个问题

1.稀疏表达(sparse representation)和降维(dimensionality reduction)的本质区别是什么?

广义上来讲,降维并不一定是线性的。非线性的降维比如Kernel PCA也被广泛应用,不过由于比较复杂,在本文就不展开叙述。这里我们的降维将特指 - 线性降维。

用一句话来概括降维和稀疏表达的区别:

降维是将原space里的数据在某一个subspace里进行表达;而稀疏表达则relax了subspace这一条,变成在a union of subspaces里进行表达。

Subspace应该很好理解。比如PCA里的subspace,就是space spanned by selected major eigenvector。比如题主提到的DFT,如果只是选某几个low-frequency basis,那就可以认为是降维。

A union of subspaces要稍微难理解一点,我在这里举个简单的栗子:设想一个三维x-y-z coordinate空间。

一个仅有x, y轴span的二维subspace,就是这个平面的全部。

而union of all 2d subspaces(要求坐标是sparsity = 2),就是x-y, y-z, x-z三个平面上的的所有点。这样的set,并不是一个subspace,而是有三个subspace“拼成”的union。而这种类型的set,通常就是满足sparsity要求的模型下约束的点集。

一个是subspace,一个是union of subspaces,这就是降维和稀疏表达的本质区别。

而之前答案里面提到的,dictionary learning之类的,都是稀疏表达的一种特殊的类型。特别指出,

@王丛立

提到的x=\Psi \theta 模型,准确地说应该是synthesis model,并不能概括所有降维,或者稀疏表达的模型。其他的模型还有Analysis Model和Transform Model,这两个model其实被更广泛地应用在传统的fixed model的稀疏表达中,比如DCT和Wavelet,都是应用的tranaform model。

2.为什么稀疏表达会起到很好的作用(以及我的补充,in what sense, it performs good?)

所有关于“作用很好”的表述,我都想问一句,in what sense?

因为我之前描述的,稀疏表达和降维之间存在的本质区别,导致我们无法把他们两者进行naive的比较。他们在表打方式上的区别,使得他们在不同的应用和问题上,表现将会不同。

我不认为稀疏表达在所有应用上都优于降维。个人的总结是,降维是一个更加restrictive的model(对于相同的code sparsity而言)。比如在face recognition这些vision上的应用里,降维被大量应用。在deep learning里面,降维也是重要的一个步奏。

而稀疏表达确实展现了他的很多优点。特别是在compressed sensing的热潮下,大家逐渐意识到,对于很多inverse problem而言,拥有一个好的约束(regularizer)是多么得重要。而相对于降维这样的subspace model作为regularizier,稀疏表达模型被发现是一个更好的对自然信号的regularizer。所以我们看到对于大多数的inverse problem(逆向问题?求指正),稀疏表达往往有更好的表现。这是因为自然信号,比如图像,音频,视频等等,往往具有很好的可稀疏性 - 存在某一个model,可以使他有效得被稀疏。

随着machine learning和optimization的发展,不同于以往使用fixed model(比如DCT和DFT都是固定的)进行稀疏表达,更多的adaptive sparse representation被提出并得到应用。其中就包含了

@Yimian Dai

@王丛立

提到的dictionary learning。当然还有同样的Michael Elad搞过的Adaptive Analysis Model以及我们组提出的Transform Model和Tranform Learning。正是这些adaptive的方法,使得稀疏表达有了优异的表现,并且在很多应用中取得了state-of-the-art的表现。

回答完这两个问题,再来看题主提出的两个问题,答案就自然得出:

问:Sparse真的能够在表示中起到很好的作用吗?

答:在某些应用,特别是inverse problem方面,sparse presentation往往有更加优异的表现。

问:Sparse真正胜过其它成分分析方法的地方在哪里?

答:Sparse Model相对于Subspace Model(比如降维)而言,更加relaxed,因而具有更强的表达能力。再加上自然信号,天然具备可稀疏性,所以在很多问题中,Sparsity是一个更有效的regularizier。

以上,回答完毕,欢迎交流!

抛砖。

设信号为x,稀疏表示为\theta ,则两者可以用x=\Psi \theta 描述。

讨论如下:

1.\Psi 是方阵(比如DFT,DCT,DWT)。这时方程的未知量与方程数相等,一个x对应一个\theta 。关系是确定的。

2.\Psi 是overcomplete 字典(行数比列数少)。这时方程的未知数大于方程数。一个x有无数个\theta 与之对应,而且\theta 的元素个数比x的元素个数多。关系是不确定的。由于冗余的存在,人们可以选取一个合适的\theta 使得稀疏度最小。

一般来说,对于一个好的overcomplete字典,2中的稀疏度往往比1小,尽管2的元素个数多。可以直观地认为,是因为字典中收录的“单词数”(列数)增加了,所以在变换域空间中增加的向量方向也增多了,尽管这种增加的方向是多余的。那么,对信号进行内积投影时,增加的向量方向能更好地表示信号的能量分布方向,所以稀疏程度增加了。这一点和小波变换中,引入双正交变换的思想是类似的,都是通过增加基的冗余程度以提高设计的自由度(在题主的问题里,则是增加了稀疏程度)。

另外,如果overcomplete字典是学习得到的,那么这个自适应的字典针对所学习的这种应用有十分优秀的表达,稀疏度会相当低,比1中给定的非适应性的稀疏度低得多。

综上,用overcomplete字典能得到更高的稀疏程度。而且,这种稀疏程度的提高对许多应用都是很有益的,比如压缩感知。根据[Candes, 2010](

Compressed sensing with coherent and redundant dictionaries

),在压缩传感信号重构阶段,对信号的稀疏表示就可以用overcomplete字典,而且稀疏度直接关系到最小采样个数,从而影响应用的设计。从这一点来说,找到一个合适的overcomplete字典很重要。