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

来源:互联网 发布:办公室 知乎 编辑:程序博客网 时间:2024/04/20 13:30

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

 

2010年7月13日 happyharry发表评论阅读评论

在开始正文之前,咱首先得说明一下,这篇东西偏向于理论,各位看官可以自行跳过某些部分。这方面的工作奠基人同样也是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主页)。

PCARPCA

说起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也是紧密相关。咱本来还想聊聊这些模型的优化算法,鉴于篇幅所限,就只能留到(下)篇去了。

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

分类: 新闻,资源 标签: collaborative filtering,compressive sensing,machine learning,Sparse representation,稀疏表达

评论 (20) Trackbacks (0) 发表评论Trackback
  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. happyharry
    2010年7月14日23:29 | #4
    回复 | 引用

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

  5. happyharry
    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. AB先生
    2010年12月5日00:23 | #13
    回复 | 引用

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

  14. lh2078
    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没有再写下了么?

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 右眼皮跳一直跳怎么办 当婚姻走到尽头怎么办 结婚证丢了怎么办离婚 老公有外遇要离婚怎么办 淘宝买到假手机怎么办 在药店买到假药怎么办 玩久了不想工作怎么办 我很懒不想工作怎么办 金寒水冷的八字怎么办 两岁宝宝内八字怎么办 小孩走路脚内八字怎么办 10岁走路内八字怎么办 8岁孩走路内八字怎么办 一岁宝宝足外翻怎么办 2岁宝宝小腿弯怎么办啊 一岁宝宝小腿弯怎么办 一岁小儿o型腿怎么办 两岁宝宝o型腿怎么办 狗狗前腿外八字怎么办 20岁走路内八字怎么办 9岁儿童脚内八字怎么办 5岁宝宝脚内八字怎么办 一岁宝宝内八字怎么办 两人八字合不合怎么办 考到不好的大学怎么办 考的大学不理想怎么办 只考上二本大学怎么办 w7电脑中病毒了怎么办 电脑中病毒了该怎么办 泰迪呼吸急促怎么办啊 狗狗呼吸急促是怎么办 狗狗着凉了呕吐怎么办 狗鼻子流黄鼻涕怎么办 刚出生婴儿睡觉不踏实怎么办 有人溺水后你该怎么办 借钱不还怎么办没欠条 私人欠货款不还怎么办 公司欠货款不还怎么办 两个人离婚一方不同意怎么办 比亚迪l3油耗高怎么办 u盘密码忘记了怎么办