topic model的介绍性文章已经很多,在此仅做粗略介绍,本文假设读者已经较为熟悉Topic Medel。
Topic Model (LDA)认为一个离散数据集合(如文档集合,图片集合,为行文方便,本文统统以文档集合作为描述对象,其他的数据集合只需换掉对应的术语即可)是由隐含在数据集合背后的topicset 生成的,这个set中的每一个topic都是词的概率分布。对于文档中的每一篇文档,先抽取一个topics proportion\theta;然后对于这个文档中的每一个词的位置 w_i, LDA先从\theta中选择一个topic,然后再从这个topic对应的词分布中选择一个词去填充;按照上述步骤直到整个文档集合产生完毕。
上述是LDA生成一个文档集合过程的简要介绍,下面我会把目前出现的topic models进行分门别类。
我认为topicmodels主要可以分为四大类:1)无监督的、无层次结构的topicmodel;2)无监督的、层次结构的topic model;3)有监督的、无层次结构的topicmodel;4)有监督的、层次结构的topic model。
对于1)主要有: PLSA, LDA, Correlated Topic Model, PAM,Concept TopicModel等
对于2)主要有: HLDA, HDP,HPAM等
对于3)主要有: S-LDA, Disc-LDA, MM-LDA, Author-Model, Labeled LDA, PLDA等等
对于4)主要有: hLLDA, HSLDA
以上模型对应的文章名字,用google直接搜索即可得到,这里就不列出。
很多人都在或者想使用已有的Topic Model,当然最理想的应该是我们自己设计适合我们问题的topicmodel来解决问题。
然而这是很难的一个问题,一方面我们需要较为合理地设计适合问题的模型;另外一方面还需要较为强的数学基础去为自己的模型做相关的数学推导,如参数学习和推理。
在这里,就我自己的经验,总结了一下topic model设计中的一些设计原则:
A.
1). 把topic看为一个词的分布,这是最基本的;如LDA等模型
2).不仅把topic看做是一个词的分布,而且topic还可以是一堆topic的分布,即建立了topic之间的层次关系;如HPAM模型等
3). 把topic对应于标签,即一个topic有对应的一个标签,这样就可以建立有监督的topic model;如labeledLDA模型等
B.
对第一类,主要是把标签看为了一个topic,从而建立一个概率模型,用数据去训练得到参数,然后去应用;如labeled LDA,HLLDA等
对第二类,主要是先应用topicmodel的方法建模相应的变量,然后认为标签和这些变量存在某种关系,如回归关系(S-LDA)或者正态分布等;例如HSLDA等模型
C. 如何建立层次关系
目前主要有这样几种方法:
1). 用Hierarchical Dirichletprocess去建立层次关系,比较有名的模型,如HDP,HLDA等;
2).
3).
至于如何进行推理和学习,常用的方法有EM算法,变分推断方法,Gibbs采样方法等,最主要还是最后两种方法,
其中最简单的是Gibbs采样方法,最容易理解,然后是EM算法,最后变分推断方法是最难的,需要较多数学基础,由于内容多,这里只作简单的介绍,以后有时间再详细的写写。
EM算法:这个是PLSA论文里面用到的方法,在数学领域早已有之,它其实不是一个算法,而是一类问题进行近似计算的理论框架,主要的思想就是在Q函数的基础上进行迭代,最后逼近最优值,值得注意的是,最后的值不一定是全局最优值,很大可能是局部最优,这个算法相对较为简单,花上几个小时应该能够弄明白;
变分推断方法:这个方法的基本思想是,如果一个分布很难求,我们就找一个容易求的近似分布来代替它,如何来刻划近似呢?就是用KL度量来衡量两个分布的近似程度,在得到容易求的近似分布之后,问题就变简单了。
Gibbs采样方法:这个算法的基本思想是:用来自一系列的容易采样的条件分布的样本来得到对应的全概率分布的样本,从而用这些样本来求取相应的统计量,这里的理论基础是这一系列的条件分布在经过一段时间采样后会达到平衡分布,这个平衡分布就是要求取的全概率分布。这里说得较为简单抽象,具体详细内容请参考蒙特卡罗方法的相关书籍。