【LDA学习笔记】文本生成方式

来源:互联网 发布:php 高端写法 编辑:程序博客网 时间:2024/05/21 22:37

工作中暂时不会用到LDA模型。不过空闲下来,学习学习,自娱自乐。

LDA是generative model,这决定了这个模型的“世界观”。从LDA模型看来,文本是通过一种方式“产生”出来的。模型的理论,就是猜测文本产生的方式;模型的训练,就是给定产生方式后,通过样本,估计相关参数;模型的应用过程,就是确定了产生方式,并给定了模型参数,实际运行产生新的文本。


Unigram模型

最简单的一种模型。就是假设有一个色子,有V个面,每个面对应着词表中的一个词,每个词的概率就是丢这个色子的时候,出现这一面朝上的概率。对于一个文本,其产生方式是:上帝(姑且认为是他)根据泊松分布确定文本长度N,然后每次投掷一次色子,产生一个单词,直到产生了N个单词为止。

注意:一篇文章的概率就是各个词语概率的乘积,这个概率与词语出现的顺序无关,这种模型也成为词袋模型(bag of words)。后面将的所有模型,包括LDA,都是词袋模型。


Bayes Unigram模型

为啥前面加了个Bayes?让人立刻联想起来Bayes条件概率公式,又称为黄金公式。不过,和那个公式没啥关系;和那个公式的思想有关。“思想”认为,一切都是随机的。在上文Unigram Model中,有个固定的东西,就是那个色子。那个色子中每个单词的概率也是固定的。根据“思想”,色子也不是固定的,是随机产生的。所以,对于一个文本,其产生方式是:有一大堆色子,上帝从中随机选了一个出来,之后的过程与Unigram Model中描述的一样了。

注意:此时,每个色子都有V面,都对应着V个单词及其概率。也就是说,每个色子都对应着一个概率向量P={p1, p2, p3......}。上帝随机选择了一个色子,这个事情是有概率的,也就对应了P的概率,即P(P)。这个先验概率,在LDA中通常选择狄利克雷分布,据说这个分布有些很好的数学性质。


Topic Model -- PLSA

写到这里,语言学家会跳出来说了:写文章毕竟不是丢色子,不是一个词一个词随机蹦出来的。是啊,通常人写文章,至少会有主题,根据主题不同,选择的词语也不同。主题模型(Topic Model)就是在上述文章生成的过程中引入了“主题”因素。模型上,也由上文的一类色子,变成了两类色子。一类色子是topic色子,有K个面,分别代表K个topic及其概率。这类色子只有一个。另一类色子还是word色子,与上文一样,有V个面,表示V个单词及其概率。这类色子有K个,分别表示每个主题下,各个词语的概率分布。上帝拿出topic色子,投掷,得到一个topic;再从word色子堆中选择对应该topic的word色子,然后投掷word色子,得到一个词。重复上述过程,生成一篇文章。


Topic Model -- LDA

终于说道“正主”了——LDA。有LDA,还是Bayes思想“捣乱”的结果。“思想”问:凭啥只有一个固定的topic色子?“思想”说:topic色子也应该是随机选择的结果。嗯,这不,就是LDA模型了。还是PLSA的两类色子,只不过有多个topic色子了。上帝先随机挑选一个topic色子,抛一下,得到一个topic。根据这个topic,选择对应的word色子,再抛一下,得到一个单词。上帝继续抛最初选择的topic的色子(注意没有重新选择topic色子),重复上述的过程,得到整篇文章。
注意:同上文中Bayes Unigram Model类似,topic色子也对应一个概率向量P={p1, p2, p3......},其中里面是K个topic的概率。选择topic色子的概率,就是概率向量P的概率,即P(P),这个通常选择狄利克雷分布作为先验概率分布。

学习到这里的时候,我有一个疑问:同PLSA相比,LDA就是把topic色子由一个变成多个了,不过在应用的时候,用一个色子生成一个topic序列,与用一堆色子生成一个topic序列,这两个topic序列,从理论上讲有什么不一样的么?后者相比前者有什么直观上的优势么?联系实际来讲,LDA因为topic色子有多个,可以以篇章为单位,处理多个篇章。即,上帝选择topic色子的过程,可以看做上帝按照狄利克雷先验分布选择{p(topic1|doc), p(topic2|doc)......}向量的过程,这个向量里面topic很多(代表topic色子的每个面儿),但是doc只有一个。即当前doc下,选择topic色子(每个色子对应一个概率向量)的概率。而PLSA在模型概念上没法将doc加入到topic色子的条件概率中去。这种对比,也正在模型概念上体现了LDA的确有多个topic色子,需要根据doc来选择topic色子;而PLSA只有一个topic色子,与doc无关。

LDA之所以被广泛使用,还是因为它是Topic Model,即引入了topic因素。这种因素在很多场景中都很有用。这个是后话。