LDA的演变1--从算法层面来介绍LDA的由来或者说发展

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010626937/article/details/80929249

主要是从算法层面来介绍LDA的由来或者说发展

  文本挖掘的研究对象是文本,比如对文本进行分类或者情感分析等。由于文本是一种非结构化的数据,这样就不利于计算机的处理,所以研究者们开始对文本进行数字化处理。

  最开始比较简单的方法是tf-idf方法。tf-idf机制可以将任意长度的文档转化为固定长度的向量(固定长度为词典中的词汇数),可以简明易懂地将每个文档表示出来。虽然tf-idf方法可已经较好的区分分档,但是这种方法(1)没有缩短文档表示的长度;(2)也没有充分利用文档内部或者文档之间的统计结构。利用tf-idf方法进行文档相似性判断的思想基础是:认为文档之间重复的词语越多越相似。虽然这个假设对于一部分文档是适用的,但是有一些属于语义层面的相关的文档是不适应的。例如“电脑”与“计算机”,这两个词语完全不同但是语义相同,这样的相关性是体现在隐藏的主题的相关性上的(也就是说,两个词语表达的主题是一致的),而不是仅仅由表面的词语的重复度来决定。例如下图:
  这里写图片描述
  
  为了解决上面提到的(1)这个问题研究者提出了很多降维技术,其中最具代表性的是Deerwester et al. 1990提出的LSI(Latent Semantic Indexing)(有的地方也叫LSA,Latent Semantic Analysis)方法。LSI对文档-词矩阵(每一项为tf-idf值)进行奇异值分解,来识别一个线性空间,实现了对大型数据的压缩。(LSI方法只取一部分作为其特征,此过程其实就相当于对X进行pca将维。)实际上,从LSI派生的特征是原始tf-idf特征的线性组合。将原始的向量转化到一个低维的隐含语义空间中,而保留下来的维度(根据奇异值大小决定)所对应的奇异值就对应了每个“隐含语义”的权重,去掉的那些维度就相当于把那些不重要的“隐含语义”的权重赋值为0。LSI可以捕获一些基础语言方面的信息,比如同义等。但是LSI模型缺少令人满意的统计学基础,也就是说LSI的理论基础不够明白,不能很好的解释文本的生成模型。
  为了能够证实LSI这个声明,以及更好地分析LSI方法的优缺点,那么开发一个文本语料的概率生成模型是很有必要的。所以推出了pLSI模型(Hofmman),该模型能够从数学上,从理论上具有严格意义的说明是怎么回事,到底为什么LSI是有效的,又是怎样生成文本的。
  PLSI如下图所示:
  
PLSI模型认为文档中的每一个词是混合模型中的一样本,而那些混合组成成分是一些可以被认为是“topic”的多远随机变量。也就是说,话题是词的混合分布,文档是话题的混合分布。因此,一篇文档可以被降缩到一个固定话题集合的概率分布,这种分布就是一种关于文档的降维表示。尽管在文本概率模型中,Hoffman’s的工作(PLSI模型)已经有很好的贡献,但是它还是不够完整,因为它没有提供文档级的概率模型。在PLSI模型中,每篇文档被表示成一个list,list中的每一个元素是一个number(表示了每个topic在该文档中的混合比例 mixing proportions),这将导致一下几个问题:

  1. 在PLSI模型中,假设有k个topic,vocabulary长度为V,对于这k个topic有M个mixture(其实,k表示话题数,V表示词汇数,M表示文档数,)那么会共有参数kM+kV个,这个数目是随着M的增加而增加,也就是参数的个数会随着语料的大小线性增长,可能会导致过拟合。
  2. 从上面的这个图可以看出在PLSI中已经有了topic的概念,而且对于文档-主题和主题-单词两个层面都进行了建模(多项式的混合分布)但是该模型不能很好的对训练集以外的文档进行预测话题分布。

在LSI和PLSI中假设词是可交换的(不考虑词的顺序),其实也认为文档是可交换的。在此先给出一个定理,de Finetti‘s定理(德芬涅定理):任何一些可交换的随机变量可以被表示称为一个混合分布。基于这种想法,Blei提出了LDA(Latent Dirichilet Allication)模型。

注意:交换性假设不等同于随机变量是独立同分布的,当然交换性假设可以被理解为条件独立同分布的,条件是关于一个概率分布的潜在的隐变量。LDA主要是利用了德芬涅定理,利用混合分布获取重要的文档内部的统计结构。

LDA模型的图像如下所示:

针对PLSI的缺陷,LDA很大的一个特点是将doc->topic这一层的mixture weights作为一个随机变量(若把mixture weights看作是一个权重矩阵,那么矩阵规模为K*d),而不像PLSI一样,作为直接与训练集中的每个doc相关联的参数集合。对于一个有k个topic的模型来说,他总共有k+kv个参数(alpha有k个参数,beta有kV个参数),与训练集中的文档数M无关。

通过上图可以看出,LDA模型是一个具有三层的层次化模型:
①第一层corpus level, alpha和beta对整个corpus是不变的
②第二层document level, 每个文档对应一组从Dirichlet 采用过来的theta
③第三层word level,首先选出每个word对应的topicz,然后根据topicz对应的word分布采样出word。

生成过程为:

然后,由其概率模型图可以比较容易的得到模型如下:

在LDA中,文档中topic的分布取为multinomial分布,其先验取为multinomial分布的共轭先验-dirichlet分布;而每个topic下word的分布也取为multinomial分布,其先验也取其共轭先验-dirichlet分布.

关于LDA中各个分布的一个通俗解释如下:“我们可以假想有一位大作家,比如莫言,他现在要写m篇文章,一共涉及了K个Topic,每个Topic下的词分布为一个服从参数为 β 的Dirichlet先验分布中sample出来的Multinomial分布(注意词典由term构成,每篇文章由word构成,前者不能重复,后者可以重复)。对于每篇文章,他首先会从一个泊松分布中sample一个值作为文章长度,再从一个参数为 α 的Dirichlet先验分布中sample出一个Multinomial分布作为该文章里面出现每个Topic下词的概率;当他想写某篇文章中的第n个词的时候,首先从该文章中出现每个Topic下词的Multinomial分布中sample一个Topic,然后再在这个Topic对应的词的Multinomial分布中sample一个词作为他要写的词。不断重复这个随机生成过程,直到他把m篇文章全部写完。这就是LDA的一个形象通俗的解释。”

  自从LDA提出之后,对主题模型产生了很大的影响,至今也是一个热点话题,在此基础上提出了很多变种模型,在此不再作介绍,本文的主要目的在于介绍LDA是怎样一步步过来的,后面我们再从另一个视角进行介绍:《LDA的演变2》

猜你喜欢

转载自blog.csdn.net/u010626937/article/details/80929249
LDA
今日推荐