You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
9.0 KiB
Markdown

2 years ago
# 098 | LDA变种模型知多少
我们在之前的分享中曾经介绍过文本挖掘Text Mining中的重要工具LDALatent Diriclet Allocation的基本原理。在文本挖掘中有一项重要的工作就是分析和挖掘出文本中隐含的结构信息而不依赖任何提前标注Labeled的信息。也就是说我们希望能够利用文本挖掘技术来对无标签的数据进行挖掘这是典型的无监督学习。
LDA就是一个出色的无监督学习的文本挖掘模型。这个模型在过去的十年里开启了主题模型Topic Model这个领域。不少学者都利用LDA来分析各式各样的文档数据从新闻数据到医药文档从考古文献到政府公文。在一段时间内LDA成为了分析文本信息的标准工具。而从最原始的LDA发展出来的各类模型变种则被应用到了多种数据类型上包括图像、音频、混合信息、推荐系统、文档检索等等可以说各类主题模型变种层出不穷。
今天我们就结合几篇经典论文,来看一看**LDA的各种扩展模型**。当然在介绍今天的内容之前我们首先来回顾一下LDA模型的一些基本信息。
## LDA模型的回顾
LDA模型是一个典型的**产生式模型**Generative Model。产生式模型的一大特点就是通过一组概率语言对数据的产生过程进行描述从而对现实数据建立一个模型。注意这个产生过程的本质是描述的一个**联合概率分布**Joint Distribution的分解过程。也就是说这个过程是一个虚拟的过程真实的数据往往并不是这样产生的。这样的产生过程是模型的一个假设一种描述。任何一个产生过程都可以在数学上完全等价一个联合概率分布。
LDA的产生过程描述了文档以及文档中文字的产生过程。在原始的LDA论文中作者们描述了对于每一个文档而言的产生过程。
[LDA模型的前世今生](https://time.geekbang.org/column/article/376)
相比于传统的文本聚类方法LDA对于每个文档的每一个字都有一个主题下标也就是说LDA是没有一个文档统一的聚类标签而是每个字有一个聚类标签在这里就是主题。
LDA模型的训练一直是一个难点。传统上LDA的学习属于**贝叶斯推断**Bayesian Inference而在2000年初期只有**MCMC算法**Markov chain Monte Carlo马尔科夫链蒙特卡洛以及 **VI**Variational Inference变分推断作为工具可以解决。在最初的LDA论文里作者们采用了VI后续大多数LDA相关的论文都选择了MCMC为主的吉布斯采样Gibbs Sampling来作为学习算法。
## LDA的扩展
当LDA被提出以后不少学者看到了这个模型的潜力于是开始思考怎么把更多的信息融入到LDA里面去。通过我们上面的讲解你可以看到LDA只是对文档的文字信息本身进行建模。但是绝大多数的文档数据集还有很多额外的信息如何利用这些额外信息就成为了日后对LDA扩展的最重要的工作。
第一个很容易想到的需要扩展的信息就是作者信息。特别是LDA最早期的应用对于一般的文档来说比如科学文档或者新闻文档都有作者信息。很多时候我们希望借用作者在写文档时的遣词造句风格来分析作者的一些写作信息。那么如何让LDA能够分析作者的信息呢
这里我们分享一篇论文《用于作者和文档信息的作者主题模型》The author-topic model for authors and documents\[1\]这是最早利用额外信息到LDA模型中的扩展模型。文章提出的模型叫作“**作者LDA**”Author LDA。这个模型的主要思想是每篇文档都会有一些作者信息我们可以把这些作者编码成为一组下标Index。对于每一个文档来说我们首先从这组作者数组中选出一个当前的作者然后假定这个作者有一组相对应的主题。这样文档的主题就不是每个文档随机产生了而是每个作者有一套主题。这个时候我们从作者相对应的主题分布中取出当前的主题然后再到相应的语言模型中采样到当前的单词。
可以看到作者LDA和普通的LDA相比最大的不同就是**主题分布不是每个文档有一个,而是每个作者有一个**。这个主题分布决定着当前的单词是从哪一个语言模型中采样的单词。作者LDA也采用吉布斯采样的方法学习并且通过模型的学习之后能够看得出不同作者对于文档的影响。
从作者LDA之后大家看出了一种扩展LDA的思路那就是**依靠额外的信息去影响主题分布,进而影响文档字句的选择**。这种扩展的方法叫作“**上游扩展法**”Upstream。什么意思呢就是说把希望对模型有影响的信息放到主题分布的上游去主动影响主题分布的变化。**这其实是概率图模型的一种基本的思路,那就是把变量放到这个产生式模型的上游,使得下游的变量受到影响**。
那你可能要问有没有把需要依赖的变量放到下游的情况呢答案是肯定的。我们再来看一篇论文《同时进行图像分类和注释》Simultaneous image classification and annotation\[2\],这篇文章就发明了一种方法。具体来说,文章希望**利用LDA到多模数据领域**Multiple Modal。也就是数据中可能有文字也可能有图像还可能有其他信息。在这样的多模数据的情况下如何让LDA能够对多种不同的数据进行建模呢
这里面的基本思路就是认为**所有的这些数据都是通过主题分布产生的**。也就是说,一个数据点,我们一旦知道了这个数据点内涵的主题(比如到底是关于体育的,还是关于金融的),那么我们就可以产生出和这个数据点相关的所有信息,包括文字、图像、影音等。
具体到这篇文章提出的思路那就是这组数据的图像标签以及图像所属的类别都是主题产生的。我们可以看到和之前的作者LDA的区别那就是其他信息都是放在主题变量的下游的希望通过主题变量来施加影响。
这两种模型代表了一系列丰富的关于LDA的扩展思路那就是**如何把扩展的变量设置在上游或者是下游,从而能够对主题信息产生影响或者是受到主题信息的影响**。
除此以外LDA的另外一大扩展就是**把文档放到时间的尺度上,希望去分析和了解文档在时间轴上的变化**。这就要看经典的论文《动态主题模型》Dynamic topic models\[3\]。这篇论文最后获得了ICML 2010年的最佳贡献奖。那么我们怎么修改LDA使其能够理解时间的变化呢很明显还是需要从主题分布入手因为主题分布控制了究竟什么文字会被产生出来。因此我们可以认为主题分布会随着时间的变化而变化。
在之前的模型中我们已经介绍了每个文档的主题分布其实来自一个全局的狄利克雷Diriclet )先验分布。那么,我们可以认为不同时间的先验分布是不一样的,而这些先验分布会随着时间变化而变化。怎么能够表达这个思想呢?作者们用到了一个叫“**状态空间**”State-Space的模型。简而言之状态空间模型就是把不同时间点的狄利克雷分布的参数给串起来使得这些分布的参数会随着时间的变化而变化。**把一堆静态的参数用状态空间模型串接起来**,可以说是这篇文章开创的一个新的思维。
## 总结
今天我为你梳理了LDA的扩展模型。LDA的扩展当然还有很多我们今天讨论了几个非常经典的扩展思路分别是基于上游、下游和时间序列的LDA扩展模型。
一起来回顾下要点第一我们回顾了LDA这个模型的核心思想第二我们聊了如何把文档的其他信息融入到LDA模型中去以及如何对时间信息进行建模。
最后给你留一个思考题如果我们希望利用LDA来对“用户对商品的喜好”进行建模应该怎么对模型进行更改呢
欢迎你给我留言,和我一起讨论。
**参考文献**
1\. Michal Rosen-Zvi, Thomas Griffiths, Mark Steyvers, and Padhraic Smyth. [The author-topic model for authors and documents](https://mimno.infosci.cornell.edu/info6150/readings/398.pdf). Proceedings of the 20th conference on Uncertainty in artificial intelligence (UAI '04). AUAI Press, Arlington, Virginia, United States, 487-494, 2004.
2\. C. Wang, D. Blei., and L. Fei-Fei. Simultaneous image classification and annotation. Computer Vision and Pattern Recognition, 2009.
3\. D.Blei and J.Lafferty. [Dynamic topic models](https://mimno.infosci.cornell.edu/info6150/readings/dynamic_topic_models.pdf). Proceedings of the 23rd International Conference on Machine Learning, 2006.