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

来源:互联网 发布:微信抢红包软件源代码 编辑:程序博客网 时间:2024/03/29 14:49

转自:http://www.cvchina.info/2010/07/13/sparse_representation_vector_matrix_tensor2/

在开始正文之前,咱首先得说明一下,这篇东西偏向于理论,各位看官可以自行跳过某些部分。这方面的工作奠基人同样也是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也是紧密相关。咱本来还想聊聊这些模型的优化算法,鉴于篇幅所限,就只能留到(下)篇去了。

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

原创粉丝点击