关闭

稀疏表达:向量、矩阵与张量(中)

835人阅读 评论(0) 收藏 举报

点击打开链接http://www.cvchina.info/?s=%E7%A8%80%E7%96%8F%E8%A1%A8%E8%BE%BE

 

在开始正文之前,咱首先得说明一下,这篇东西偏向于理论,各位看官可以自行跳过某些部分。这方面的工作奠基人同样也是compressive sensing的大牛之一E.J Candes(Donoho的得意门生),以及Candes的学生Ben Recht,前者刚从caltech被挖到stanford,后者目前刚到wisconsin做AP。Candes大牛,stanford统计系出生,师从Donoho。Candes原来的主要工作集中在小波分析上(实际上C牛非常多产),比如著名的curvelets以及ridgelets,04年左右开始和Tao合作从事compressive sensing的理论工作,这里有他的简要介绍

继续唠叨,上回说到借着collaborative filtering的东风,矩阵的稀疏表示受到了广泛的关注。说到矩阵的稀疏性,大部分看官可能有所误解。这个矩阵稀疏表示严格而言可以分为两种:
1. 矩阵元素的稀疏性,即矩阵非0元个数相对较少。参照向量的范数,同样可以定义矩阵的0范数,并将其松弛到矩阵的1范数的优化问题。
2. 矩阵奇异值的稀疏性,即矩阵奇异值中非0元的个数(即矩阵的秩)相对较少。仿照向量情况下0范数与1范数的关系,同样可以将其松弛的到迹范数(trace norm)的优化问题。

咱下面会分别聊聊这两个问题。首先,咱的出发点是machine learning中的collaborative filtering,这个概念并不是啥新东西了,最早大约可以追朔到1992的某篇同名文章。这玩意是做啥的呢,通俗的说,每次你在淘宝上闲逛的时候,下面都会有一行推荐商品。这些个网络服务商(淘宝,Amazon, Ebay)就在想了,如果这个推荐系统做的足够好,那么消费者(比如你我)的购物欲望就会得到刺激,这个销量也就上去了。实际上,这和超市里玲琅满目的货架是一个道理。

这里就得提提Netflix Prize这件事了,话说netflix是家在线dvd租赁公司,这公司就抱了同样的想法。不过这家公司想了个主意:该公司提供数据,出资100万美刀,奖励研发这个推荐系统算法的小组,并要求这些算法发表在学术会议或期刊之上。这可以算是现实版的百万富翁了(学术和money两不误),于是collaborative filtering着实火了一把(比如SIGKDD上的不少文章)。最终历时两年,由AT&T实验室成员组成的BellKor’s Pragmatic Chaos赢得了这100万刀。顺到一提,国内也有不少家伙参与了这个Prize,比如排名第二的Ensemble组里就能看到中科院某所学生的身影。

这个推荐系统咋做呢?我们先从简单的模型开始。以netflix为例,netflix有个影评系统,在你租完DVD以后会让你打分(1-5分)。当然不是所有人都会认真去打,实际上只有少数家伙会给打分(这世界上懒人何其之多)。同样,对每个用户而言,他也只可能给部分看过的DVD打分。假设现在有个用户和部电影,如果把所有评分列成一张大表,可以得到矩阵。其中,每一行对应一个用户的评分,每一列对应一部电影的用户评价。可以想象,这个矩阵中只有少部分元素是已知的(图1)。

从现有的用户数据,来预测未知的用户数据,这就是collaborative filtering了。那么这个东西怎么实现呢?解释起来难,做起来容易,这个模型放在在topic model里叫做Probabilistic latent semantic analysis (PLSA),放在代数里叫做矩阵分解(Matrix Fatorization)或者矩阵填充(Matrix Completion),这里就只能形象的解释下。虽然用户千奇百怪、电影成千上万,但总可以归结为若干类型:比如有腐女向、宅男向电影之分,再比如有悲剧也有喜剧。如果把这些latent factor画成一个空间,那么不同的用户群体应当位于这个latent factor空间的不同位置,体现了不同用户的喜好。如果可以把用户喜好连同潜在的latent factor一同计算出来,预测也自然水到渠成了。从某种角度来看,奇异值分解过程也就是上述的剥离latent factor和用户喜好的过程,这其中的philosophy可以参见这篇文章

咱首先要谈的是矩阵奇异值的稀疏性,为此先来回忆下奇异值分解
1. 奇异值非负,即
2. 奇异值非0元的个数即为矩阵的秩(rank)
如果把奇异值写成对角矩阵的形式(比如SVD分解的标准形式),其对角元为。进一步,矩阵的迹范数(trace norm)定义为矩阵奇异值之和,即有

现在我们可以把collaborative filtering的基本问题回顾一下,给定一张推荐数据表,已知其下标子集中的元素(也就是有评分的部分),如何恢复这个矩阵?这就是matrix completion的问题了…

乍眼一看,这基本就是mission impossible了,即使只有一个元素未知,这个矩阵也不可能唯一。但是如果我们加一些限制条件,这个问题就变得有趣起来了。Candes考虑的是这么一个问题:

其中表示在子集上的投影(即只取子集上的对应元素)。实际上,同样的问题可以有不同的表达形式,如果把这个优化问题稍作调整,可以得到相对容易解释的模型:

其中Frobenius范数也就是矩阵的2范数。从这个式子来看,我们希望找到这么一个矩阵,使得其在已有的数据上和用户评分尽可能的一致(2范数意义下),同时具有比较低的秩(受到上限的约束)。这里对于秩的约束,很多时候是为了降低模型自身的复杂度(比如collaborative filtering,multiple instance learning)。当然,这里也可以看成是一个fidelity term + regulariztion term的经典形式。

实际上矩阵的rank是一个不那么友好的函数,rank自身是非凸、不连续的,最后的结果就是对于rank的优化问题是NP难的。类比0范数与1范数的关系,矩阵的秩(rank)相当于这个对角阵的0范数;矩阵的迹范数(trace norm)相当于这个对角矩阵的1范数。为此,如果这个对角矩阵足够稀疏,即矩阵的秩,那么可参照向量的稀疏表示,利用矩阵的迹范数(trace norm)代替矩阵的秩(rank)。

同样,由于迹范数(trace norm)是凸的,上式是一个凸优化问题,故而必有唯一的最优解。如果这种近似是可以接受的,那么这个问题自然也就解决了。

这种近似靠谱么?这就是Candes和Recht回答的关键问题。Candes从random orthogonal model出发,证明了在此假设下从某个秩为的真实矩阵中均匀抽取个元素,且满足(这里不妨设,反之只需要转置即可)

则凸优化问题的唯一最优解至少以概率逼近原始矩阵,即有

其中均为某常数。更进一步,如果矩阵的秩足够小,对于元素数量的要求会进一步降低。

咱来聊聊这个结果,这说明在random orthogonal model假设成立的条件下,如果相对于比较小,那么只需要知道这个矩阵中约个元素,就可以很高的概率恢复出这个矩阵。举例而言,如果我们有一个秩为10的矩阵,那我们大致只需要从中随机抽取约270万个元素就可以(以很高概率)恢复出原始矩阵了(当然270万貌似也是一个很大的数,但原始矩阵约含有1700万个元素…)。实际上,这是一个相对保守的界,Recht在此基础上还进行了一系列的理论工作。自从出现了这个之后,under mild condition,大家都把rank直接放成trace norm了…从实用的角度来说,Candes告诉我们用凸优化去近似一个NP问题,可能得到很好的解。从实验结果来看(代码见此),这种近似有时候效果一流,但有时候也根本不work(违背了假设条件),故而具体问题还得具体对待。

虽然早在04年NIPS上,就有人提出了类似的优化方法(MMMF),用trace norm代替rank,并且ML领域中也确实有不少类似的工作。但是,Candes的工作解决了根本的理论问题,并为一系列的rank minimization的问题指了一条出路。这里有一个比较有意思的地方是,MMMF是从构造最大间隔线性分类器的角度出发来考虑matrix factorization的问题,并且用的是low norm,但和matrix completion的模型本质上是差不多的,两者关系大家可以自行推导下。

咱接着要讨论的是矩阵元素的稀疏性,这个工作也和Candes有着很大的关系。咱先把上面的公式照着copy一遍:

如果咱已知矩阵的全部元素,这个东西类似很常见的PCA了:

这样问题就变成了去噪+降维。进一步把F范数(2范数)改写为0范数:

为啥是0范数呢,这是基于这么一种假设:误差相对于总体样本而言总是稀疏的。于是,我们可以引入辅助变量表示误差,并把上式稍作改写:

这里的用于平衡矩阵的秩和误差的稀疏性。同样,rank和0范数什么的都是相当讨厌的东西,于是咱松弛一下,就有

这就是Robust Principle Component Analysis (RPCA) 或者Principle Component Pursuit 的核心模型了。这幅图很好的说明了RPCA和PCA的区别(转自Yi Ma主页)。

PCA RPCA

说起RPCA,这里岔开两句,这个东西原来是Yi Ma的学生John Wright发在NIPS09上的一篇文章。结果接收之后,被Candes指出了一个bug(审稿人没看出来),于是Candes对这个问题进行了考虑,从而就有了一篇叫做《Robust Principal Component Analysis?》的文章(preprint)。Candes证明了在同matrix completion基本相同的假设下,这种近似以很高的概率恢复精确结果(详细结果可见RPCA的论文)。特别的,此时可以简单选择参数。Matrix Completion(MC)和 RPCA在Yi Ma的主页上有一个简单的介绍,上面列举了相关文献与代码的链接。

MC和RPCA在computer vision上有啥用呢?John Wright在NIPS的文章里做了两个实验:背景建模,人脸阴影去除。大家有兴趣可以查查cvpr 10的paper, 有用MC来做video denoising的,有用RPCA来做人脸对齐的…还有那篇best paper也是紧密相关。咱本来还想聊聊这些模型的优化算法,鉴于篇幅所限,就只能留到(下)篇去了。

最后,下期预告:优化方法,模型变种,张量推广…其实最关键的老天保佑咱有时间写….

  1. zhougt
    2010年7月13日20:20 | #1

    第一次在这里发帖 顶此贴 拜大牛
    这方向有综述文章可看么?貌似只有一些tutorial之类的slides?

  2. danceyoung
    2010年7月13日21:14 | #2

    大哥的数学功底真是让我感叹啊……我知道最大的差距在哪了………

  3. 奇奇
    2010年7月14日21:32 | #3

    “这其中的philosophy可以参见这篇文章。
    咱首先要谈的是矩阵奇异值的稀疏性…..”
    这篇文章的链接 可能有点小问题

  4. 2010年7月14日23:29 | #4

    @zhougt
    Yi Ma主页上的相关内容是不错的入门资料

  5. 2010年7月14日23:30 | #5

    @奇奇
    已经修正了,谢谢指出…

  6. Cooool
    2010年7月15日10:30 | #6

    题外话,Netflix Prize中,中科院那个还在所在team最后的结果要优于第一的team,结果ms是因为提交最终版本晚了一点没有拿上。
    此外,pLSA ms和LDA经常用到image categorization中。

  7. asz9255
    2010年7月22日09:10 | #7

    楼主数学功底了得。。。楼主能不能讲一讲primal-dual算法,我看了看那本经典的convex optimization,但是感觉相当吃力。。。

  8. 杨柳梧桐
    2010年8月25日10:17 | #8

    楼主达人快发下一篇造福beginners啊,迫切期待ing……

  9. Teray
    2010年11月11日11:50 | #9

    最近正在看Ma YI和Candes的文章,楼主的文清晰简洁,很到位很给力,很适合我这中newbie,期待下一片

  10. Teray
    2010年11月13日10:09 | #10

    楼主能谈comressive sensing和 matrix completion的区别和联系吗?

  11. happyharry
    2010年11月13日15:12 | #11

    @Teray
    其实很简单…matrix completion考虑是奇异值的稀疏性,利用奇异值的1范数(即trace norm)来代替奇异值的0范数(即rank),与compressive sensing的核心如出一辙

  12. idyller
    2010年11月24日23:56 | #12

    做sparse coding有一段时间了,还是第一次读到中文的论述,导致好多”中文单词”不认识,这个一一对应的过程还挺有意思的。

  13. 2010年12月5日00:23 | #13

    玄学我改了,怎么还是不行呢?

  14. 2011年1月7日10:16 | #14

    拜读!佩服!

  15. blurtruck
    2011年7月14日14:05 | #15

    5555求下啊~~

  16. xiang_casia
    2011年7月19日00:23 | #16

    @Cooool 结果貌似一模一样!?然后xlvector师兄在的这一组是最后一分钟提交的,冠军koren那一组是前三十分钟提交的,然后只有冠军有奖,xlvector师兄这方面的确很遗憾,不过他后来专门研究推荐系统了,创建论坛、出版书籍、加入hulu等,算是额外补偿吧。

  17. xiang_casia
    2011年7月19日00:28 | #17

    这次我也有幸和舍友一块参加KDDcup2011的比赛,也正好是推荐系统,不过不是电影,而是音乐,数据集来自雅虎音乐,详情查看http://kddcup.yahoo.com/,track1的方法跟netflix完全一样,track2的方法相似,最后我们组和xlvector合并了,不过仍然在最后时刻被NTU给超了,他们带队的是林智仁老师,libsvm的作者。假如能早点拜读happyharry你这篇文章并且你有时间有兴趣的话就有希望冲冠了。只是yy一下:)

  18. Alex
    2011年7月19日15:34 | #18

    很好,受教了!曾经做过协同过滤,不过只做了GroupLens的这种基本方法(好像被亚马逊和youtube的系统所基本采用),没有做过矩阵分解这种更高层次的数值优化方法。看了本文,感觉茅塞顿开啊!

  19. doucontorl
    2011年8月8日09:08 | #19

    刚开始研究sparse representation,拜读大牛~~

  20. Lofi
    2011年9月14日10:36 | #20

    lz没有再写下了么?

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:429686次
    • 积分:5992
    • 等级:
    • 排名:第4187名
    • 原创:142篇
    • 转载:167篇
    • 译文:8篇
    • 评论:106条
    博客专栏
    最新评论