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