2014年科研方面回顾之一

【转载请注明出处】http://www.cnblogs.com/mashiqi

马上就进入2014年的最后一个月了,往年的这个时候已经穿羽绒服了,可是现在深圳完全察觉不到季节的变化。回首今年,从年初,也就是研一下学期开始,由于所有课都上完了,于是就专心开始看文章。

正式开始看文章差不多是2014年3、4月份的时候。刚开始我打算找一篇满足如下两个条件的文章:第一,要比较火一点的,因为这样的话,相关的研究应该比较充分,这样的话能找到的资料也就丰富一些,上手就容易一些;第二是最好要与我之前学过的东西搭上边。于是我就在IEEE transaction on Signal Processing上找到了这篇“Bayesian Compressive Sensing”,它是IEEE transaction on Signal Processing的favorite article,2008年发表的。这篇文章提到了CS,不过后来我发现,这篇文章的方法似乎仅仅是用了CS的结论:“在某些特殊情况下模0解等价与模1解”。然后整片文章就开始专注如何求模1解,也就是说这篇文章其实和CS理论没有太大关系。这篇文章使用层级先验的方法,不断的给变量加上先验,然后用EM算法求解。

当我差不多看了几天这篇文章后,我发现这篇文章几乎就是另一片文章的翻版:“Sparse Bayesian Learning and the Relevance Vector Machine”,这是Michael Tipping在2001年写的文章。到这里我就了解到了一个叫RVM的东西了。从它的名字来看,似乎和著名的SVM有不少渊源,于是我就开始看Tipping的这篇文章了(关于SVM,我以前纠结过很久它的那个Mercer定理,还写过一篇博客作为学习记录)。刚开始拿到Tipping这篇文章的时候,一共30多页!这对于一个刚开始看文章的学术小白而言,简直可以成为恐怖!这比我以前做过的最长的英文阅读不知道还要长多少倍。不过畏惧归畏惧,该看的还是要看,硬着头皮,我看的第一篇比较长的英文文献就这么看下来了。其实现在想想,几十页的英文文献也不算什么,因为英文科技文献的用词和语法结构相对简单,不像GRE那种,一句话看10遍都看不懂的。。。而且外国人写东西本来就比较啰嗦,不像有一些中国的教材,几乎就是引理定理的堆砌。我记得我本科的信息论教材,就100来页,从信源编码到信道编码各种知识全部都堆在上面了,整本书全部是定义、定理、公式,都很少看到例题,大段不带公式的文字几乎绝迹,更没有讲解啊什么的了,简直恐怖至极!然而,国外的很多教材虽然非常厚,但是很多地方都是大段的讲解,像是在听作者讲话一样,信息量的密度低很多,这样的安排就不会让读者有一种喘不过气的感觉。

言归正传,下面总结一下我对RVM的理解。我的理解应该还是有待深入的,希望读者们自己判断啦。RVM,用最简单粗暴话概括,就是“sparser than sparser”(比稀疏更稀疏 = =||),这个潜在的比较对象当然就是SVM啦。RVM主要用于回归,也可以用于分类,用于回归的主要模型是$$t_n = y(x_n;omega)+epsilon_n$$,其中${x_n,t_n}$是input-target pairs, $omega$是回归系数,它的分量会很稀疏,$epsilon_n$是误差,这个模型中假定它是0均值的高斯分布:$epsilon_n  sim N(0,sigma^2)$。而$y(x_n;omega) = sum_{i}sum_{j}k(x_i,x_j)omega_j$,这里不像SVM一样要求$k(cdot,cdot)$是正定核,因为它不要求$k(x_i,x_j)$一定可以表示成$(Phi(x_i), Phi(x_j))$,这一点就放宽了RVM中的核函数的选择范围,从而使得提取特征更加灵活,这是第一个优于SVM的地方,后面还有几个优于SVM的地方:比SVM更加稀疏,这是第二个优于SVM的地方;能给出回归值的置信度,这个第三个优于SVM的地方。通过给回归系数$omega$加上Student’s t-distribution,可以使得$omega$的各个分量,以更大的概率,等于0。我们知道:“Studuent’s t-distribution is obtained by placing a conjugate gamma prior over the precision of a univariate Gaussian distribution and then integrating out the precision variable, and it can therefore be viewed as an infinite mixture of Gaussian having the same mean but different variances”,RVM在具体实施这个学生分布的时候,不是直接给$omega$加上学生分布,而是通过层级先验的方法,先给$omega$加上高斯分布, with prior $alpha$:$$p(omega|alpha) = N(omega|0,alpha^{-1})$$,然后再给这个$alpha$加上Gamma分布:$p(alpha) = Gamma(alpha;a,b)$,其中$a,b$为参数,它们就不再具有先验了,在RVM中它们一般取固定值$10^{-4}$。到了这里我们发现$alpha$的作用不就是相当于隐变量吗,所以用EM算法来求解$omega$应该是个不错的选择。所以我就去看了EM算法。

但是,我们回过头来看这个模型,它其实并不等价与给系数$omega$加上$||_1$模,而真正等价与加上$||_1$模的应该是Laplace先验:$$p(omega;lambda) = left( frac{lambda}{2} ight)^N expleft( -lambda sum_{i}^{N}|omega_i| ight)$$,其中$N$是系数$omega$的分量个数。RVM里面为啥不直接用Laplace先验而要用Student先验呢?因为Laplace先验和$epsilon_n$的高斯先验不共轭嘛。可是后来我又找到了这篇文章:“Bayesian Compressive Sensing  Using Laplace Priors”,2010年发表在IEEE Transaction on Image Processing上的文章。本文作者通过将Laplace先验转化成层级先验,解决了与$epsilon_n$的高斯先验不共轭的问题。在这个层级先验中,第一层是一个高斯先验:$$p(omega|gamma) = prod_{i=1}^{N}N(omega_i|0,gamma_i)$$,其中$gamma$可以理解为中间变量,也可以理解为隐变量。第二层是一个符合指数分布的先验$$p(gamma_i|lambda) = frac{lambda}{2} exp left( -frac{lambdagamma_i }{2} ight), ~gamma_i geq 0,~lambdageq 0$$。这两个层级先验一求个marginal,就可以算出$omega$是参数为$lambda$的Laplace分布了。另外,$lambda$还加上了一个分布,这里略过不写了。这篇使用Laplace先验的文章公式特别多,我的问题是:这些公式我都看懂了,也能自己推倒了,可是我还是不明白它干嘛要加这么多的层级先验呢?到底有什么作用,难道先验加的越多效果就越好吗?不一定吧。我想我应该没有理解到这篇文章的精髓吧,也就是有可能没看懂。

以上的这些方法都用到了EM算法,于是我去学习了EM算法。期间,我还穿插学了其他一些东西:我看了Andrew Ng的那个Stanford的机器学习的公开课;买了一本《Machine Learning in Action》,把书上的算法都自己写了一遍。看了以上这些东西后,已经6月份了。然后我就开始全身心投入GRE的复习中了,一直到8月中旬。

然后,研二的生活开始了。不变的是周围的环境,变化的是更加想要出结果的心态。唉。。。GRE过后,我又看了一篇文章:“Nonparametric Bayesian Dictionary Learning for Analysis of Noisy and Incomplete Images”,2012年的文章(其实我不是那么多天就看这一篇,而是还看了许多其他的paper,只是说这一篇是最主要的)。这一篇也是类似的去噪模型:$$t_n = oldsymbol{D}omega_n + epsilon_n$$,其中$epsilon_n$零均值高斯。它与RVM系列不同地方是在$omega$的建模上,它给$omega$建了这样的模型:$$omega_n = z_n odot s_n$$,其中$s_n sim N(0,sigma_s^2)$,而$z_n sim extrm{Bernoulli} (oldsymbol{pi}),~oldsymbol{pi} sim extrm{DP}(alpha G_0)$,其中$ extrm{DP} (alpha G_0)$是Dirichlet Process的一个采样(Dirichlet Process被称为分布上的分布,它的每一个采样都是一个分布)。这个模型这么复杂了,那怎么求解它呢?作者用的方法是Gibbs Sampling。于是我又懂了一点Gibbs Sampling的知识。由于是采用Gibbs Sampling,所以没有太多的求解算法。这个paper的Matlab在作者的website上找得到,我也照着它的code自己把这些code写了一遍。然后我又碰到了老问题:我依然不知道怎么去改进他的方法,所以看了之后依然没有结果。

然后就是Fetal ECG了,这个其实比较简单,也和前面的东西没有关联,今后可能也不打算再看这方面的东西。

自己总结一下自己的问题,就是不断的在改变的学习的点,不停的在变,虽然是学到一些东西,但是没有在这个不停学习的过程中形成自己的突破点,没有自己的研究方向。这是我的大问题!我很想确定一个自己的方向,然后就一直做直到做出一些成果出来。这里面还有一个问题需要说明,就是我为什么不自己给自己强行确定一个方向然后就坚持做下去呢?因为每当我把一个方向大致看懂之后,我就找不到突破口了。比如说RVM那个方面,“Bayesian Compressive Sensing”用RVM来做了信号去噪,我发现不了他的方法里面有哪些可以提高的地方,找来找去都找不到,于是只好换一个方向继续学习了。

到了IRACE这边后,杨老师给我布置了一些作业,这些作业里有关于EM算法的题目。通过做这些作业,我立刻感到对EM算法的理解加深了不少。看来我的问题就是:以前只是一味的去学习知识,而没有及时的运用知识,所以对知识的掌握都很皮毛。以前没有做这些关于EM算法的习题的时候,我也知道EM算法的具体步骤,但就是因为没有在实战中运用过EM算法,所以一直不能很感性的去认识它。通过做这些作业,这些作业也算是一种实战嘛,我确实对EM算法有了一些感觉了。EM算法,是通过不停的求得更好的中间变量,使得模型里面的待求解参数在这些更好的中间变量的帮助下,得到更好的参数值,然后更好的参数值又导致下一波更好的中间变量。通过这样反复的迭代,直到参数的最优解。而在这个过程中,这些中间变量,也就是隐变量,起着指导的作用。什么样的问题可以转化为EM算法可以解决的样子呢?只要这个问题可以被看作是由一个不显现出来的变量所导致的,那么几乎都可以通过EM算法有效的求解出来。

原文地址:https://www.cnblogs.com/mashiqi/p/4133519.html