本来上个学期就开始接触LDA相关知识,但是由于上个学期的课业比较重,加之刚开始搞研究入手生疏,没有怎么搞懂,这个学期重新开始搞,开个博客,记录下学习过程中的点点滴滴。
LDA(latent Dirichlet allocation)是一个主题模型,是一个针对离散数据集合(比如文本知识库)的生成概率模型,是一个三层贝叶斯模型。在BLEI等人的Latent Dirichlet Allocation[1]一文中,介绍了四种针对离散数据的模型,分别是unigram、mixture of unigrams、 pLSI/aspect model和LDA。
unigram和mixture of unigrams是很简单的概率模型,在此不再赘述。现在就讨论下pLSI和LDA模型。
pLSI模型是建立在LSI(latent semantic indexing)模型之上,LSI模型实际上改进了最早的利用tf-idf模型。LSI模型是利用对X矩阵的奇异值分解的统计学方法来进行估计,可以讲从大量的tf-idf值中取得到最有价值的部分。但是这个方法对存储能力和运算能力都有很大的要求,不适合大文档集合。pLSI(probabilistic LSI)模型,引入了主题的概念,也即是每个词都是来自于一个主题。pLSI相对于mixture of unigrams有个很大的进步,那就是考虑到了一篇文档中有多个主题,而不是mixture of unigrams中每篇文档中只有一个主题。但是它仍然有一些问题:比如,它虽然有多个主题,但是主题的比例没有生成模型来生成。这将会导致几个问题:(1)模型的参数将会线性正比于词库的大小,会导致overfitting的问题(2)在训练集之外,怎么分配概率比例也无法解决。下边左图是pLSI的贝叶斯概率图,下边右图是LDA的贝叶斯概率图,从图中可见一斑:
而从LDA的贝叶斯概率图中,可以看出LDA解决了这个问题,这样的话,LDA主要就只用两个参数α和β,这样的话,针对数量大的词库也可以在较短的时间里面完成。虽然LDA较之前面几种模型已经很好了,但是它也有缺点,比如它假设了文档里面的词是可交换的,也就是词的顺序不重要。这个假设使得模型中的随机变量是条件独立的,但是显然这个假设还是有待改进的。
这篇文档就是大概讲一讲LDA的一些基础知识和背景,后面几篇博客再详细讨论理论和实现的细节。