这篇文章是接着《dodo:人脸识别方法个人见解》,之所以没有用《dodo:人脸识别方法个人见解 II》,仅仅是因为prfans显示的标题较短,为了使大家便与区别,就用了一个醒目的短标题。
这个帖子主要是谈谈在上一篇中没有谈到或是一带而过的问题。和上一篇一样,还是就方法论方法。
1,kernel methods
a. KPCA及其相关
kernel席卷PAMI领域的趋势还在加强。原因很简单,绝大多数的问题都能和kernel挂上钩。在人脸识别里,KPCA和KFA的影响力远不及 PCA和LDA。就应用领域来说,KPCA也远没有PCA应用的广泛。YANG Jian在PAMI上的那个KPCA plus LDA就是子空间和kernel结合的典型论文。如果用作一般性的降维KPCA确实会比PCA效果好,特别是你用的feature空间不是一般的欧式空间的时候更为明显。所以,把LDA用在KPCA变换的空间里自然会比用在PCA变换的空间里效果好。
但是就降维来说,KPCA有一个严重的缺点,就是由它不能得到一个可表示的子空间,比如PCA也可以得到一组正交基作为表示基。当然,这也是kernel 方法的本质属性导致的。这样就会限制kernel方法的应该范围。举个简单的例子,有人做过用PCA来给SIFT特征降维的方法,也就是那个SIFT+ PCA,但他们没有用KPCA+SIFT。就原理上来说,KPCA更适合给SIFT降维,但是在实际应用中,对于SIFT来说,如果需要降维的话,用来降维的东西必须事先学好,PCA就可以事先通过大量的自然图片来学习一个子空间。但是,KPCA做不到。虽然有out-of-sample的方法,但是这种方法有明显的缺点:如果训练样本过大,KPCA的kernel矩阵就很大,这样就很不方便应用,如果过小,效果又不好。其实这也是这类kernel方法的通病(不是一般)。
b. regression
regression也是分类常用的一种方法。CVPR'07就有一篇Kernel ridge regression。
regression用来分类的原理很简单,但是他和传统的LDA等类似的方法有着明显的区别。就ridge regression来说,它就是要找一个变换,使样本在变换后的空间里和他们本身的label尽量接近,那末这个学到的变换就在最小二乘意义下尽量好的刻画了样本空间的类结构。一般的,对变换函数(离散就是向量或是矩阵)做一个l2范数上的限制,美其名曰保证函数的smooth(这个下面还会再谈)。这样就可以得到一个形式上较为美的闭解。其实根本不用kernelizaton,regression本身就可以和kernel直接挂上钩,因为求出来变换矩阵在一定限制下就可以看成kernel矩阵(YE Jieping CVPR‘07的metric learning中就用到了类似的思想)。这个和用graph Laplacian做ranking的方法非常相似。Laplacian(或是其简单变形)的逆矩阵如果是正定的,那末就把这个逆看作kernel矩阵。那末和kernel直接相关的方法和思路就用上来了,特别是learning中,种类繁杂。
把ridge regression核化的全部技术含量就在计算的trick上。由于把样本映射到Hilbert空间中只是一个虚的表示,在出现内积的情况下才能写成现实的表达式,所以对于kernel方法来说,计算上的trick要求就比较高。但是,往往这类trick都是在统计和矩阵早已被解决的问题,所以大部分工作就是怎样用好而已。
像这样“借壳还魂”的做法,在很多理论的研究上都非常重要。我们要达到我们的目的,但是这个东西又不是直接可表达的,那末就可以把它放到一定的空间中,按照这个空间中的基本原理来计算,最后到达一个可以表达的形式,而且是按照你的idea来推导的。这种东西一旦做出来,质量还不低。
2,regularization
虽然名字叫regularization,其实就想谈谈优化目标和优化约束问题。
如果你看了ICML'07,CVPR'07和即将出炉的ICCV'07,你就会发现07年是个不平凡的一年,降维领域有点混乱。或者说自从97年以来一直就没有平静过,都是Fisherfaces惹的祸:)
还记得knato回帖中斗胆列出的排列组合吗?如果不记得暂且去温习一下,因为我要用一把。把knato列出的不同排列组合加上如下regression一个的一个优化
||Y-W'X||^2,
就可以概括所有今年的和这类相关论文的思想。然后,如果你愿意,你还可以衍生出很多。优化目标确定以后,所不同的就是求解方法。你可以带着这个观点再去看一下今年的论文,了然于胸。
由此,线性降维的混乱过程经历了一个小小的转折————从子空间组合到优化目标和优化约束的组合。子空间主要集中在1998--2005(当然还不会消失),后一种在今年可以说是达到一个小小的高潮。如果再加上应用算法的策略,就形成了乱世中的三足鼎立局面。特别是后一种,往往穿插出现,而且有待加强。这其中的代表人物 TANG Xiaoou, YANG Jian, YE Jieping, HE Xiaofei,YAN Shuicheng。导致这一变更的主要因素来源于非线性方法的应用,特别kernel和manifold learning的线性化应用,这其中LPP起了很大的刺激作用。
如果你能站在一个高度(一定范围内)看待这些东西,那末当你面临毕业出国压力时,你就可以“察若水三千,得一瓢饮”来缓解压力。而且还可以尽量饮得好水。(再次郑重声明:这不是发这个帖子的原意。)
3,子空间方法中常用的计算技巧
a.
关于这一块的东西,Stan Z. Li编辑过一个小书挺好的,可以通过下面的网站找到。
http://www.face-rec.org/
不过,我想谈谈规律性的东西。这其中涉及到的东西就是 column (range) space, null space, generalized inverse。这些东西都和QR分解,SVD或是GSVD相关。遇到这些东西,就想起他们准没错。如果你有兴趣,可以看看YE Jieping和Haesun Park关于子空间的论文,都是一个模式。
b. 正交化
从发表的论文来看,对于广义特征值问题,如果求解一组相互正交的基,比B-orthogonal效果要好很多。代表作就是CAI Deng的orthogonal LPP和YE Jieping的 orthogonal LDA。
CAI Deng做了一个orthogonal LPP发在TIP上。他用的就是88年发在TPAMI上的方法,原理一模一样。YE Jieping用的是同时对角化三个矩阵。风格不同,各有长短。个人还是倾向于CAI Deng用的那个方法。
4,Tensor revisited
在上一篇中,我谈了tensor的方法,主要说了tensorfaces和NTF。这里再多说几句。
最近在tensor方面功夫最多的是YAN Shuicheng,最近的TPAMI, TIP, 和 CVPR'07都有他与此相关的文章。这对于发扬和推广tensor的思想和方法确实是个好事情,我是赞同探讨的。
另外,HE Xiaofei和CAI Deng也做过tensor subspace。准确地说,他们只是借用了tensor的概念,他们的方法可以和2D PCA, 2D LDA归为一类。
其实做这一块东西最早的是YANG Jian的一个大师兄,在90年代PR上的工作,后来YANG Jian把它发扬光大,最初的结果就是PR和TPAMI上各一篇短文(2DPCA)。
最早把这类东西以tensor形式呈现的是CV中的大牛Amnon Shashua在01年CVPR上的论文,有兴趣可以看看。不过,大牛终究是大牛,当他听说了NMF以后,NTF立马横空出世(ICML'05)。这个中间的变化是质的跨越,能做出前面那种方法的可以说非常之多,能做出后面那种方法的真是寥寥。这是值得我们好好学习的。
(B.T.W.,Amnon此人并不只是学术了得,其妻子是以色列小姐
,again,也值得大家学习的榜样
,特别是整天闷头做科研的我们)
在这里要强调的是,我们不能完全否定一些简单的东西,上轨道的或是正宗有深度的方法往往就是这样慢慢做出来的。
5,其它
关于kernel的方法我就是点到而止。在上一个帖子中有人提出说说SVM和Boosting,如果谁有兴趣,可以谈谈。
另外也有人说在上一个贴中我漏掉了Bayesianfaces,实际这个就是我在参数模型中提到的Probabilistic Subspaces方法。有兴趣可以看看。
结束语
纵观PAMI领域困扰纷争,虽然我们达不到“跳出三界外,不在五行中”的境界,但是至少我们可以更好的看清楚这个领域的情况。如果你能站在一个高度看待这些东西,你就有可能认清你自己认为有希望的方向在哪儿,从而更准确地找到自己的目标而少走弯路,或是更好地给自己定位。
写这些东西,就是想帮助了解这一领域的人能全面准确地了解这一块的东西,少走弯路。另外,对于已经谙熟于心的人,激发一个讨论的话题。在上一篇贴子中,看贴的人多,回帖的人少,这个现象可不好。欢迎大家踊跃发言,良性讨论,这样才会带来更多益处,千万不要担心自己是新手,越是新手越需要发言。
俗话说:“乱世出英雄”,当今在PAMI领域正是需要英雄的时机,就是我在I中说的“我们正处在一个大有可为的时代”,希望下次力挽狂澜的是华人的名字。