稀疏表达:向量、矩阵与张量(上)
稀疏表达是近年来SP, ML, PR, CV领域中的一大热点,文章可谓是普天盖地,令人目不暇给。老板某门课程的课程需要大纲,我顺道给扩展了下,就有了这个上中下三篇介绍性质的东西。遗憾的是,我在绝大多数情况下实在不算是一个勤快的人,这玩意可能充满bug,更新也可能断断续续,尽请诸位看官见谅了。顺道一提,ICCV09有一个相关的 tutorial 。
据传博文里公式数量和其人气是成反比例关系的,一个公式可以驱散50%的读者,我写完这个(上)之后点了点公式数量,觉得大约是要无人问津了。所以,在介绍稀疏表达之前,让我们先来展示下其在computer vision中的应用,吸引下眼球。
首先是图像恢复(以前有人贴过Obama还记得不),由左侧图像恢复出右侧结果
然后是图像去模糊,左上为输入模糊图像,右下为输出清晰图像及估计的相机运动(其实是PSF),中间均为迭代过程:
再然后是物体检测(自行车),左侧输入图像,中间为位置概率图,右侧为检测结果
当然我个人还推荐Yi Ma的sparse face,这个在对抗噪声的效果上很棒,比如下图中左侧的那张噪声图像(你能辨认是哪位不?这方法可以!)
且说sparse representation这个概念,早在96-97年的时候就火了一把。最著名的大约要数Nature上的某篇文章,将稀疏性加入least square的regularization,然后得到了具有方向特性图像块(basis)。这样就很好的解释了初级视皮层(V1)的工作机理,即对于线段的方向选择特性。几乎同一时期,著名的LASSO算法也被发表在 J. Royal. Statist. Soc B。Lasso比较好的解决了least square (l2 norm) error + l1 norm regularization的问题。然而,这个时候绝大多数人没有意识到(或者没法解决)这l1 norm和稀疏性之间的联系。其实早在这之前,Osher等人提出的Total Variation (TV)已经包含了l1 norm的概念了,只不过TV原本是连续域上的积分形式。(啥?你不知道Osher…想想Level Set吧)
在进入现代的压缩感知、稀疏表示这一课题前,让我们来首先回顾下这一系列问题的核心,即线性方程组
其中矩阵,通常而言是满秩的。向量。现在已知,求解。学过线性代数的同学可能都会说:这个不难啊,因为, 故而这个方程组是欠定的,所以有无穷多组解啊,咱还可以算算基础解系啥的…
但是如果我们希望其解尽可能的稀疏:比如(即中非零元个数)尽可能的小。那么问题就会变得比较微妙了,下图给出了问题的形象示意。
换言之给定m维空间中一组过完备的基,如何选择最少个数的基向量,重构给定向量,其严格定义可以写成
时光之轮播快到2003~2004年,Donoho & Elad做了一个很漂亮的证明,如果矩阵满足某种条件,具体而言:
那么上文提及的0范数优化问题具有唯一的解。这里的是个比较诡异(请允许我使用这词)的定义:最小的线性相关的列向量集所含的向量个数(吐槽:明白了么,我做TA的时候就被这个问题问倒了)。本来想在这个概念上唠叨两句,后来发现了Elad的一个talk,清晰明了。
即便是唯一性得到了证明,求解这个问题仍然是NP难的。科研的车轮滚滚向前,转眼到了2006年,传奇性的华裔数学家Terrence Tao登场了,Tao和Donoho的弟子Candes合作证明了在RIP条件下,0范数优化问题与以下1范数优化问题具有相同的解:
其中RIP条件,即存在满足某种条件的(与N相关)常数:
RIP条件是对于矩阵列向量正交性的一种衡量(此处咱就不细说了)。其实早在1993年Mallat就提出过Mutual Coherence对于正交性进行度量,并提出了下文还要提及的matching pursuit方法。
实际上以上的1范数优化问题是一个凸优化,故而必然有唯一解,至此sparse representation的大坑初步成型。总结一下:
1. 如果矩阵满足,则0范数优化问题有唯一解。
2. 进一步如果矩阵满足RIP条件,则0范数优化问题和1范数优化问题的解一致。
3. 1范数优化问题是凸优化,故其唯一解即为0范数优化问题的唯一解。
进一步可以考虑含噪声情况,即
可以得到相似的结果,有兴趣的同学可以查阅相关文献。理论坑只有大牛能挖,但一般人也能挖挖这个优化算法啊,于是SP、ML、CV邻域里都有做这个优化算法的,这个出招可就真是五花八门了。据我所知,大致可以分为三大流派:
1. 直接优化
一般的方法是greedy algorithm,代表有Matching Pursuit, Orthogonal Matching Pursuit
2. 优化
还记得上面提到的LASSO么,这就是它的模型。
3. 如果已知拉格朗日乘子,优化无约束凸优化问题
解这个的方法现在基本上soft thresholding的方法一统天下,常见的有coordinate descent, Bregman Iteration (又是Osher)等
4. 如果未知拉格朗日乘子,优化
这类方法又叫Homotopy,可以认为是3的扩展。核心出发点是objective function是的分段线性函数。
除此之外,还有利用p范数逐次逼近0范数的方法等等,此处不再赘述。顺道说一句,稀疏表示在不同的领域连名称都不同,搞信号的管这个叫basis pursuit,搞统计的叫l1 regularization….然后,让我们把话题拉回到Nature的那篇文章:如果我们不知道矩阵,只知道一堆向量。我们应当如何构造,使得在这一字典(矩阵)下的表示最稀疏?类比以上过程,这个问题被称为Dictionary Learning,可以写成以下优化问题:
这个东西可就相对麻烦了,最关键的是这个优化不是凸的(优化变量相乘)。所以一般的想法是block descent:首先固定,优化(相当于多个独立的1范数优化问题);其次将计算出的固定,优化,这就是一个(可能带约束)的least square问题。如此反复,直到算法收敛到某个(局部)极小值。实际上解这个问题的方法目前有三种:efficient sparse coding algorithm NIPS 06; K-SVD tsp 06; Online dictionary learning for sparse coding, ICML 09 & JMLR 10。前两种都是batch的方法,后一种是online的,据个人测试最后一种的方法比前两者要快很多很多….下面这个是我利用ICML09的方法从1200张彩色图像中训练出一组过完备基,具有比较好的方向特性。
最后,还记得本文开头的那些demo么?INRIA做了一个sparse representation的matlab工具包SPAMS,虽然不开源,但其效率(大部分时候)是现有公开工具包之冠(底层用了intel的MKL),利用这个工具包,几行简单的matlab代码就可以几乎实现以上提及的所有demo了….大家有兴趣的话,欢迎尝试^_^
下期预告:借着collaborative filter的东风,Candes在08年又挖出了matrix completion的新坑。于是,当向量的1范数推广到矩阵的迹范数(trace norm)之后…..
哇塞,精彩。
Candes的那个是Robust Principal Component Analysis ?
很NB的一个东西,CVPR‘09、10都有用它来做人脸对齐,很强大。
我也搞过去模糊啊,准确说是去失焦,就是大概估一个高斯模糊核,然后逆卷积。效果惨不忍睹啊。这个太牛了。有时间读一下论文。稀疏表达应用太多了。
我帮你吧permalink改成英文的了。可读性强一点。
@cvchina
呵呵,多谢了,我对这个系统不咋熟…
牛文………..看来这将会成我最近关注的东东
@hardegg
RPCA原来是UIUC的Yi Ma发在NIPS上的,不过人的证明过程错了,被Candes指出来了,就有了Candes的那篇文章…不过我认识的很多人都在argue这篇文章,因为求解RPCA的算法现在确实有很多问题。
@danceyoung
呵呵,欢迎讨论…
图片恢复效果是真的这么好吗?,有没有代码可以运行一下?
@blackball
图像来源 sparse representation for color image restoration, tip08。用文章结尾提到的SPAMS可以做类似的实验….
这样啊
拜大牛。问个问题:文中提到,在RIP条件下,0范数优化问题与以下1范数优化问题具有相同的解. 这个0范数是必须在目标函数里的?还是说在条件函数和条件函数里都可以?
说错了。最后一句:还是说在条件函数或目标函数里都可以?
@CVUNC
严格来说是对于目标函数的。如果约束条件里含有1范数,则可以通过拆解的方式转换为线性约束。
能仔细说下这3大流派的几个公式之间有什么联系吗?
或则推荐些阅读材料?
@CVUNC
其实我这里总结的几大流派也只是一家之言,从拉格朗日乘数法的角度上看,可以认为问题3,4同时是1,2的等价。但严格来说,应该从Pareto界上来看这个多元优化问题。
这方面的阅读材料实在太多了….我推荐一个中文的简短博文
http://to-cs.blog.sohu.com/138250047.html
还有就是网上的各种ppt了,比如这个
http://www.dsp.ece.rice.edu/~richb/talks/cs-tutorial-ITA-feb08-complete.pdf
“最小的线性相关的列向量集所含的向量个数”,
求教下哈,这里所说的”最小”指的是个数”最少”是不?
我决定用这个方法看看neuroimage领域可以拿它来干什么,有没有人做过:)
@zhpn
是的…不过这个定义并不像看起来那么直观
@Anonymous
ICML2009 的best student paper用了group lasso来做fMRI图像分析…可以看看
那个tutorial 上的 pdf 文件 Part II: Dictionary Learning for Reconstruction 打开出现错误 谁有么?给我一份,提前谢了 hbjzliyan@126.com
happyharry讲得深入浅出,非常形象。太赞了。交个朋友吧。filestorm@msn.com
@filestorm
filestorm!…咱看的第一篇CVPR就是你写的….
首先赞文章写的精彩。
其次发表个人看法,觉得CS在CV, PR上的应用远没有这几篇论文给的这么实在。
关于那篇inpainting的,对于第一副图,作者假设locations of missing pixels are known。这是个很tricky的假设,因为现实应用不可能知道哪些pixel坏掉了。对于第二附图,用手标出要去掉的pixel,传统的inpainting方法效果也不会差。
去模糊那篇没读过,不做评论。
对于自行车的那篇paper,比比传统的工作,就知道这篇文章的效果只能算一般,文章重在新理论新模型。
对于Ma Yi的那篇face recognition,一个关键的问题是虽然test image被噪声完全毁坏,但剩下的pixel是完全可信的。而且样本空间里必须有同一人同一pose同一表情的数张照片,而且是well-aligned的,否则无法识别无法恢复。我想说的是,在这种前提下,min||y-Ax||2未必差到哪儿去。另外,这篇文章有些理论问题存在争议。
总之,这块理论可能更有意义的是用在sensing上面。CV, PR方面的应用也只是局限在理论探讨上。真正能带来多少用处,还很难说。记得中科院李老师说过一句话,“压缩感知根植于数学理论,它给目前国内浮躁的学术环境提了一个警钟!因为只有很好地钻研它的基本理论和方法,才能将其有效地应用在所关心的问题中;否则它只能是一剂春药,一种无法名状的春药!”
才学疏浅,不负责任的随便评论几句,希望同行看过笑笑,别太当真。
另外,也在做相关的研究,希望同道好友多多交流。
另外,期待(下)篇,呵呵。
happyharry啊……..赶紧出下把…..翘首以盼啊……….
剧透一下,其实是上中下三篇啊。
@cvchina
十分期待,十分关注。
@守望麦田
多谢多谢…最近忙着考试中,估计周末应该能更新中篇了
@守望麦田
请问您为什么说Ma Yi的那篇face recognition的理论问题还值得争议啊?您能详细的介绍下吗?
我刚看了那篇文章,个人觉得还是一个很好的想法,我觉得它比较tricky的地方可能只是 需要用到非常大的训练集!
@joe
好久没过来了,这个我来回答下好了。
Ma Yi 那篇文章的理论问题在于没有理论的支撑,比如为啥sparse representation可以分类,sensing matrix如何设计,分类的最差效果保证等等…
另外一个实际问题在于,Ma Yi这样做要求人脸都是对齐好的,这在实际中几乎是不可能的。如果没有对齐,这个方法效果很差,可以参见Ma Yi他们cvpr09的文章的讨论….
@Anonymous
马毅的识别唯一要求就是要将人脸对齐,按我的理解,这个所谓的对齐也是一个求解最优解的过程,仍然是在测试图片上重构出来一个与数据库图片最接近的区域。。。
太牛,,仰慕ING
最近在看Heterogeneous feature machine 这篇文章,里面用到了group lasso 这个概念,
我大概明白lasso这个模型
请问可以简单说下group了之后可以有什么作用吗
Elad的那个talk貌似很给力,可惜看不太懂。。大牛,能否给点提示或者线索。。。?3q~
这数学理论,搞得我云里雾里,哈哈,学习学习啊
请问一下SPAMS中alpha=mexLasso(X,D,param)得到alpha之后,怎么还原成图像显示出来呢?
我昨天看了那篇文章 sparse representation for color image restoration,感觉很有用的,我正在研究压缩感知的算法,有没有这篇文章的程序呢,我先看看。谢谢专家
@大乐乐
这里没有砖家…只有平等的讨论
happyharry你好~我是刚入门的学生,最近读到一篇文章,强烈怀疑一作Yin Li是你。。。O(∩_∩)O~其实是有个公式不太理解,可以联系你指导下么~这里公式不好输入啊,简单说下,用Conditional Entropy做visual saliency表达的那篇里面公式(4)里条件熵的表示为什么要有那个P(S)呢?
膜拜各位大神,我有蚂蚁的书,但看的头大啊!
@samkuok
马毅的书名是什么?一直在寻找…
@守望麦田
对于inpaint,损坏的pixel位置是一直的,也是有些应用的,比如去logo等,这个可以通过匹配等方法获取mask的位置…我到觉得比较tricky的是损坏pixel是服从高斯或者均匀分布的…如果我将一片连续的地方都损坏的话,效果将极不好…
@happyharr
Li Y童鞋,帮我们扫扫盲呗。那个稀疏表达和压缩感知啥区别?我的理解是对于稀疏信号,CS可以直接解决,对于非稀疏信号,先要将信号稀疏化后,然后通过测量矩阵的观测值重构,但是为什么那么多关于稀疏表达的文章都没有谈到与测量矩阵的关系是不是满足RIP条件呢….
这套方法用于人脸识别其实是有很大争议的。在搞compressive sensing/sparse signal recovery领域里面,我所知道的5个大牛里面就有4个半怀疑。Nuit Blanche前几个月曾经介绍过一篇文章,其中就指出了这套方法的一些问题。如果楼主感兴趣,但是找不到这篇文章,我可以帮忙找找。
另外,我不知道基于稀疏表达的这套方法和latest的人脸识别方法想比,是否的确有优势?YI MA他们的那篇PAMI中,仅仅只比较了最基本的人脸识别方法。
你好,看你的文章及下面的评论,收益颇多,请问能否给出 min||y-Ax||+rx 求解过程吗?
这个spams代码如何使用?我的matlab为什么用不了!
我的matlab7a,VC编译器2008!
您好,群主,我申请好几次加入你们群了,总是加不上去。能把我加下吗,很想和搞计算机视觉人一起讨论,大家共同提高。我今年博一,搞图像恢复,稀疏表达方面的算法。
@daben 介绍下自己,学校、做的方向。如果做的内容相关,会添加你的。。。
你好,我想问一件关于文章里提到的图像的inpainting是从哪个文献里面看到的?
@守望麦田
你好,请问文章里面inpainting的那个是哪篇文章里的,我想看一下