您的位置:首页 > 运维架构

话题模型topic model的发展历史及典型方法介绍

2012-07-10 17:50 197 查看
参看这个同仁的博客文章,有一系列的关于topic model的原理,设计方法等。
http://blog.csdn.net/xianlingmao/article/details/7065318

另外,这篇英文文章总体的论述了D.Blei的LDA模型在概率模型中的地位,以及其各个领域如人类学研究,基因发现等领域的应用。值得一看。

http://www.scottbot.net/HIAL/?tag=topic-modeling

topic model 是一种应用十分广泛的产生式模型(generative model),在IR, NLP,ML都有广泛的应用,本文将对目前已有的topic model进行分类总结,然后选择几个代表性的topic model进行较为详细的介绍,从而理解topic model 的思想,以及怎么应用。

topic model最经典的模型之一是LDA(latent dirichlet allocation) ,其它的topic model大都充分利用了LDA的思想去设计,所以下面先简单地描述一下其生成一个文档集合过程:

Topic Model (LDA)认为一个离散数据集合(如文档集合,图片集合,为行文方便,本文统统以文档集合作为描述对象,其他的数据集合只需换掉对应的术语即可)是由隐含在数据集合背后的topic set 生成的,这个set中的每一个topic都是词的概率分布。对于文档中的每一篇文档,先抽取一个topics proportion \theta;然后对于这个文档中的每一个词的位置 w_i, LDA 先从\theta中选择一个topic,然后再从这个topic对应的词分布中选择一个词去填充;按照上述步骤直到整个文档集合产生完毕。

下面我会把目前出现的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,我都选择一个模型来进行介绍:

对于1) 上述已经介绍了LDA,所以就不介绍这类模型了;

对于2) 我想介绍HLDA(Hierarchical Latent Dirichlet Allocation) 模型

由于LDA产生出来的topic都是孤立的,topic之间没有关系,HLDA模型在LDA的基础上,试图建立topic之间的层次关系,同时考虑到LDA需要指定topic的数量作为参数,如果能自动决定topic的数量就比较理想了。为了自动发现决定topic的数量,HLDA用Chinese Restaurant  Process去自动决定每一层的topic数量,然而需要指定topic层次的高度H(也就是有多少层的topic),同时它训练出来的层次结构是等高的,都是H这么高。至于怎么产生文档的每个词,这个和LDA都是一样的。
对于3) 我想介绍Labeled
LDA (Labeled Latent Dirichlet Allocation) 模型

这个模型最大的好处是能够训练出来带标签的topic,因为在以前的topic model训练出来的topic都是分布,怎么赋予一个标签给这些topic则是很难的一个问题。

Labeled LDA与LDA最大的不同是: LDA是在所有topics上为某一个词进行选择某个topic,而labeled LDA则是只从文档相关的label对应的topic中去选择,其余和LDA都是一样的。

对于4) 我想介绍hLLDA (hierarchical Labeled Latent Dirichlet Allocation)模型

这个模型最大的好处就是在Labeled Latent Dirichlet Allocation模型的基础上扩展到层次结构,其思想也是很简单的,认为一个文档只是由这个文档对应的层次label所产生,具体学习和推断的时候几乎和Labeled Latent Dirichlet Allocation模型一样。

这些模型相对来说都是较为容易理解的,关键是要先理解LDA,包括数学公式的推导,如果LDA能弄得比较清楚,其它的模型就会非常的容易理解。

topic model的介绍性文章已经很多,在此仅做粗略介绍,本文假设读者已经较为熟悉Topic Medel。

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等

对第二类,主要是先应用topic model的方法建模相应的变量,然后认为标签和这些变量存在某种关系,如回归关系(S-LDA)或者正态分布等;例如HSLDA等模型

C. 如何建立层次关系

目前主要有这样几种方法:

1). 用Hierarchical Dirichlet process去建立层次关系,比较有名的模型,如HDP,HLDA等;

2).  人工指定存在某种层次关系,然后去刻划之间的关系,如HPAM/PAM模型;

3).  在有监督的模型,这种层次关系已经存在(例如标签是一个层次结构),一种处理方法是认为这些标签都是topic,然后用概率模型去刻划变量之间的关系,如labeled LDA;

至于如何进行推理和学习,常用的方法有EM算法,变分推断方法,Gibbs采样方法等,最主要还是最后两种方法,

其中最简单的是Gibbs采样方法,最容易理解,然后是EM算法,最后变分推断方法是最难的,需要较多数学基础,由于内容多,这里只作简单的介绍,以后有时间再详细的写写。

EM算法:这个是PLSA论文里面用到的方法,在数学领域早已有之,它其实不是一个算法,而是一类问题进行近似计算的理论框架,主要的思想就是在Q函数的基础上进行迭代,最后逼近最优值,值得注意的是,最后的值不一定是全局最优值,很大可能是局部最优,这个算法相对较为简单,花上几个小时应该能够弄明白;

变分推断方法:这个方法的基本思想是,如果一个分布很难求,我们就找一个容易求的近似分布来代替它,如何来刻划近似呢?就是用KL度量来衡量两个分布的近似程度,在得到容易求的近似分布之后,问题就变简单了。

Gibbs采样方法:这个算法的基本思想是:用来自一系列的容易采样的条件分布的样本来得到对应的全概率分布的样本,从而用这些样本来求取相应的统计量,这里的理论基础是这一系列的条件分布在经过一段时间采样后会达到平衡分布,这个平衡分布就是要求取的全概率分布。这里说得较为简单抽象,具体详细内容请参考蒙特卡罗方法的相关书籍。

by MXL, PKU,SEWM group
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息