Wednesday, November 2, 2011

PLSA 笔记


1. 引子
Bag-of-Words 模型是NLP和IR领域中的一个基本假设。在这个模型中,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语法或者词序的部分。BOW在传统NLP领域取得了巨大的成功,在计算机视觉领域(Computer Vision)也开始崭露头角,但在实际应用过程中,它却有一些不可避免的缺陷,比如:
  1. 稀疏性(Sparseness): 对于大词典,尤其是包括了生僻字的词典,文档稀疏性不可避免;
  2. 多义词(Polysem): 一词多义在文档中是常见的现象,BOW模型只统计单词出现的次数,而忽略了他们之间的区别;
  3. 同义词(Synonym): 同样的,在不同的文档中,或者在相同的文档中,可以有多个单词表示同一个意思;
从同义词和多义词问题我们可以看到,单词也许不是文档的最基本组成元素,在单词与文档之间还有一层隐含的关系,我们称之为主题(Topic)。我们在写文章时,首先想到的是文章的主题,然后才根据主题选择合适的单词来表达自己的观点。在BOW模型中引入Topic的因素,成为了大家研究的方向,这就是我们要讲的Latent Semantic Analysis (LSA) 和 probabilitistic Latent Semantic Analysis (pLSA),至于更复杂的LDA和众多其他的Topic Models,以后再详细研究。
2. LSA简介
已知一个文档数据集及相应的词典,采用BOW模型假设,我们可以将数据集表示为一个的共生矩阵,,其中,表示词典中的第j个单词在第i个文档中出现的次数。
LSA的基本思想就是,将document从稀疏的高维Vocabulary空间映射到一个低维的向量空间,我们称之为隐含语义空间(Latent Semantic Space).
如何得到这个低维空间呢,和PCA采用特征值分解的思想类似,作者采用了奇异值分解(Singular Value Decomposition)的方式来求解Latent Semantic Space。标准的SVD可以写为:

其中,和均为正交矩阵,有,是包含所有奇异值的对角矩阵。LSA降维的方式就是只取中最大的K个奇异值,而其他置为0,得到的近似矩阵,于是得到了共生矩阵的近似:

注意到如果我们利用内积来计算文档与文档之间的的相似度,即的自相关矩阵,可以得到:。于是,我们可以把解释为文档样本在Latent Space上的坐标,而则是两个空间之间的变换矩阵。下图形象的展示了LSA的过程:

image
由LSA在训练集合上得到的参数,当一个新的文档向量到来时,我们可以利用下式将其原始term space映射到latent space:

LSA的优点
  1. 低维空间表示可以刻画同义词,同义词会对应着相同或相似的主题;
  2. 降维可去除部分噪声,是特征更鲁棒;
  3. 充分利用冗余数据;
  4. 无监督/完全自动化;
  5. 与语言无关;
LSA的不足
  1. 没有刻画term出现次数的概率模型;
  2. 无法解决多义词的问题;
  3. SVD的优化目标基于L-2 norm 或者是 Frobenius Norm的,这相当于隐含了对数据的高斯噪声假设。而term出现的次数是非负的,这明显不符合Gaussian假设,而更接近Multi-nomial分布;
  4. 对于count vectors 而言,欧式距离表达是不合适的(重建时会产生负数);
  5. 特征向量的方向没有对应的物理解释;
  6. SVD的计算复杂度很高,而且当有新的文档来到时,若要更新模型需重新训练;
  7. 维数的选择是ad-hoc的;
3. pLSA
类似于LSA的思想,在pLSA中也引入了一个Latent class,但这次要用概率模型的方式来表达LSA的问题,如下图:
image
在这个probabilitistic模型中,我们引入一个Latent variable ,这对应着一个潜在的语义层。于是,完整的模型为:代表文档在数据集中出现的概率;代表当确定了语义时,相关的term(word)出现的机会分别是多少; 表示一个文档中语义分布的情况。利用以上这些定义,我们就可以一个生成式模型(generative model),利用它产生新的数据:
  1. 首先根据分布随机抽样选择一个文档;
  2. 选定文档后,根据抽样选择文档表达的语义;
  3. 选定语义后,根据选择文档的用词;

image

这样,我们得到了一个观测对,多次重复这一过程我们就得到了一个类似N的共生矩阵,而潜在的语义在观测值中并没有表现出来。为了刻画的联合分布,我们可得到以下公式:

用图模型来表示以上公式如Figure3中的(a),而(b)是pLSA模型的另外一种等价形式,公式可写作:

模型确定好了,已知的数据集N,我们可以利用Maximum Likelihood准则来确定模型的参数,目标函数可写作:

此目标函数也可以解释为使与两个分布之间的K-L Divergence最小,即更好的刻画共生矩阵的实际分布。

EM求解
在似然值的表达式中存在对数内部的加运算,所以球pLSA最大似然解的问题没有闭式解,我们只能求助于EM算法,下面我们从最简单的启发式的角度推导出pLSA的求解过程。
既然似然值无法直接求解最大值,那么我们转而优化其下界,并通过迭代不断的将此下界提高,那么最终得到的解即为近似最大解, 当然,此过程中寻求的下界要求尽量紧确。利用琴生不等式和概率小于1的性质,我们可以得到如下推导:
               
这样,我们就把拿到了外面来,接下来我们就可以对直接求解了。注意这个最大化问题的约束条件是:

利用拉格朗日法,我们可以得到优化目标:
           
对此目标函数求导,我们可以得到EM算法中的M-step:
                                         而EM算法中的E-step也就是求已知时隐含变量的后验概率:

观察可以得到,E-step与M-step互相依赖,可以证明每一步都使得下界的期望值提高,通过不断的迭代求解即可最后求得原问题的近似最大似然解。

pLSA与LSA的关系
由Figure4可以看到pLSA与LSA之间的对应关系。其中刻画了Latent Space也即topic space的信息;刻画了topic space与term space之间的关系,对应着LSA中的正交基;在文档分类是,这两部分也就是我们在模型训练结束需要保存的信息,当一个新的文档的到来时, 我们可以再次利用EM算法得到新的文档与主题的对应关系,并由此得到文档在topic空间上的表示。
image
pLSA的优势
  1. 定义了概率模型,而且每个变量以及相应的概率分布和条件概率分布都有明确的物理解释;
  2. 相比于LSA隐含了高斯分布假设,pLSA隐含的Multi-nomial分布假设更符合文本特性;
  3. pLSA的优化目标是是KL-divergence最小,而不是依赖于最小均方误差等准则;
  4. 可以利用各种model selection和complexity control准则来确定topic的维数;
pLSA的不足
  1. 概率模型不够完备:在document层面上没有提供合适的概率模型,使得pLSA并不是完备的生成式模型,而必须在确定document i的情况下才能对模型进行随机抽样;
  2. 随着document和term 个数的增加,pLSA模型也线性增加,变得越来越庞大;
  3. 当一个新的document来到时,没有一个好的方式得到$p(d_i)$;
  4. EM算法需要反复的迭代,需要很大计算量;
针对pLSA的不足,研究者们又提出了各种各样的topic based model, 其中包括大名鼎鼎的Latent Dirichlet Allocation (LDA),在此就不再多说了。

4. 参考文献
  1. Thomas Hofmann, “Unsupervised Learning by Probabilistic Latent Semantic Analysis,” Machine Learning 42, no. 1 (January 1, 2001): 177-196.

Friday, April 6, 2007

印度

时间好快。。。
印度之行要结束了,据说已经拿到了留学归国的证明,眼瞅着就要回到中国了,在这个大喜的日子来临之际,也小记一下这次伟大的印度之旅。
不说印度的发展状况,因为和中国没什么两样,最想说的是印度人、印度的景色。
印度人给我的感觉是相当的恐怖的,一套套严格的制度以致于让我带上了好几个“unprofessional”的称号,"Infosys is a professional organization and we can't accept any unprofessional behavior, what you have done is very unprofessional... ...",中国所谓的先斩后奏在这里绝对不管用,一切都要按制度来。但Infosys毕竟是一个公司,我不知道中国的公司是不是也这样的,anyway,这种规则还有等级制度实在让人汗颜。还有小费,印度和泰国一样,都是小费盛行的国家。记得在泰国的时候,留给了打扫房间的cleaner一些小费,在印度,同样要有小费,在新德里小餐馆吃饭要小费,在外面玩,最好也要给司机小费,住hotel,cleaner向我要小费,他干脆就不说tips了,直接说 give me two or three dollars,老子是一个穷学生,哪来这么多钱给你们呢,最后给他50卢比也笑哈哈的。
在这边,感觉跟别人学的东西不多,唯一赞的就是学到了大型机,相当的新鲜也相当的满足了。随后几个月,感觉我的小leader不太行,不知道变通,知识太死板,也许是我觉得分给我的project太简单了吧,所以一直没有跟着组织走,做了DBA,迅速搞定数据库后,就玩其它的去了。忙完毕设,随后出游,回来做了一些zoj,今天想做回国前的最后一道,庆幸是一道已经写过很多次的mst,结果竟然超时,也懒得调了。还有了,就是英语水平多少还是有点进步的,突然想起来,小宓老说英语六级不是我自己考的,因为她不相信就我这英语水平会考的比她高,再次郑重声明,真的是我自己考的,^_^
再说印度的景色。去的地方不多,mysore是个小县城,比较来比较去,还是觉得家乡的泰安新泰县大点,这里有一些宫殿,动物园。然后去了goa,一个海边度假村,我们住在离海边不到一百米的小旅馆,那是相当赞的,早上和各种肤色的人在一块儿吃饭,世界是那么的和平,中午去海边,在躺椅上无忧无虑的小睡一会儿,太阳有点火辣,可是相当的舒服,偶尔再来一杯啤酒,有时候还会看到裸睡的欧洲女人(可惜都是老龄妇女),偶尔去跟着螃蟹狂奔,那螃蟹跑得实在是他妈的快,晚上听着海风,看着大海远处时隐时现的船上的灯火,小酌几杯威士忌。。。那种感觉、那份和谐、那份安逸恐怕以后几十年都不会有了。第一次做了摩托艇,实在是太刺激了,无奈不会游泳,不然肯定自己开一会儿爽一把,第一次喝到了阿拉伯海的水,实在是太苦了,无奈不会游泳,不然肯定少喝几口,第一次被海浪吞没,实在是太恐怖了,一个浪过来,我就消失了,在下面都能听到自己冒泡的嘟嘟声,无奈不会游泳,不然肯定少消失几次,与海浪斗争到底。。。。。。
接下来去了安格拉,这个因为泰姬陵的存在而闻名于世的城市。来之前有个小插曲,从班加罗尔坐飞机,本以为会直飞新德里,谁知竟然在海德拉巴就落了,换飞机!到现在我还是想不通,这印度的飞机怎么像公交车一样。印度的交通也是出名的差,从新德里到安格拉坐丰田小汽车竟然也要4个多小时,第一天参观了一个墓穴,就回酒店休息了。第二天一早去了最最期待的地方--泰姬陵。门票750卢比,这时候也无所谓,就算1000卢比也认了。这里还有一个小插曲,发现印度任何一个景点门票都有两个价格,印度人价和外国人价,通常是印度人20卢就能买到的门票,我们要300卢才能买到,一般保持在15倍左右,不仅仅是门票,在酒店里吃一顿再简单不过的自助餐,要多少钱??--300卢,看!印度人就是这样赚钱的,因为他们知道这些东西印度人基本上不会来买来吃的,只有外国人才会买,才会吃!再看看有时候竟然连自己国家的人都不能入内的中国,呵呵,两个字--无语!再回到泰姬陵,这个世界闻名的地方真的是不一般,早上来的时候,下了场小雨,可没扫到我们的兴致,因为一会儿就停了。金黄色的阳光洒在她圣洁的身躯上,俨然一位刚睡醒的略带羞涩的美人,真的被她陶醉了。。。美中不足的是可能是刚下过雨的原因,台阶上的脚臭味有点重(因为上去都要先脱鞋的),下午去了安格拉堡,第三天去了新德里,也逛了几处景点,都相当的有特色,但和泰姬陵比起来,显然逊色不少。这里也有个小插曲:在新德里的时候,去了红堡玩,在门口看到了几十个印度共产党在拍照留念,红堡那个戒备真叫严啊,士兵都荷枪实弹的守着,一进门,就看到了一挺机关枪对着门口,刚开始搞的还真有点紧张。住了一夜四星级的酒店,喝了很多啤酒,结果又把胃喝坏了,发现自己的胃真的不能再盛酒了,然后参观了伟大的印度门,国家博物馆。。。。又过了一天,回来了,依然是先落在海德拉巴换飞机再飞。
没有考研的负担,也没有找工作的负担,在同学和朋友在忙着考研和找工作的时候,我在国外消遥自在,呵呵,用七个月的青春来换娶这次印度之旅,一个字--值!
很想把一部分心留在这儿,等几十年后再回来取,可实在找不到说服自己的理由,也找不到合适的地方,如果硬要找一个地方的话,我想是在goa。。。
别了,印度,轻轻的我走了,不带走一片乌云。。。

Monday, March 12, 2007

无题

今天又来到了班加罗尔,这个鬼地方,说是为了项目被安排过来的,实际上是来玩玩的,在原来的园区待的时间太长了,而且毕设早已经做完了,办公室,floating,宿舍,ECC。。。每天都过着重复的生活,这也就罢了,更严重的是这些重复的背后隐藏着的是我暴躁的心情,安逸可以使一个人的思维变得迟钝,这不应该是我们现在年轻人该过的生活,anyway,这段时间可能是我一生中最平静的日子了,所以还是得珍惜,免得留下遗憾。
在班加罗尔这边待几天就去泰姬陵了,去外面散散心,赏赏风景,想想这半年来在印度的经历,想想回国后的事情。。。希望一切顺利。

Friday, February 9, 2007

纪念帖

发现已经有一段时间没来了,最近一直在忙毕设,今晚终于消灭了最后一个bug,毕设已经做完,接下来该享享乐了~! 泰姬陵。。。 我来了!

Tuesday, January 30, 2007

第二阶段调研中

一头雾水,期待明天能有理出头绪。。。

Saturday, January 27, 2007

纪念

今天总算把项目的第一阶段完成了,也算是基本完成了第一个毕设,历时将近半个月,总体效果还不错,通过答辩肯定是没问题的,特在此留言纪念,^_^
下周打算进入下一阶段,希望在半个月之内搞定,然后再拿出半个月来写论文,如果没有什么事情耽误的话,一个月之后,就自由了,回国之后就更自由了。

Thursday, January 25, 2007

blog 的第n天

今天项目进展比较顺利,已经把data division处理完了,明天打算把procedure division处理掉,到时候第一个毕设也就完成了,hope everything will go well tomorrow .