资料
首先推荐一些资料,这些都是我在学习LDA模型时深受启发的资料:
数学模型
首先需要了解Bayes推断的相关概念,并掌握常见的共轭分布。
同时,需要对Beta分布和二项分布有很好的了解,二项分布大家都很熟悉了,这里推荐一篇通俗理解Beta分布的文章:带你理解beta分布
LDA
接下来就可以进军LDA了
-
- 这是我看的第一篇博文,深入浅出,很有启发
- LDA数学八卦 LDA 文本建模
- 这是很出名的系列博文了,在理解数学模型的基础上从物理过程进行了很好的阐述
思考
- Bayes推断
- Bayes学派认为,如果我们假设一个随机变量服从一定的分布,那么这个分布中的参数也是随机变量。因此,我们可以通过后验分布,也就是得到数据后,来更新我们的参数值,使得模型更加准确。LDA也是一样,我们在没有数据之前有一个假定的分布(Multinomial和Dirichlet),在得到数据后,我们可以分别更新这两个分布中的参数,也就是训练(training)的过程。
- 为什么需要共轭分布?
- 总所周知,理解LDA中最重要的就是理解其中Multinomial与Dirichlet分布为共轭结构,之所以需要这种结构,是因为我们如果能从后验分布(得到数据后)更新原有参数,且在给定数据下,参数服从的分布与原分布相同,那么这种学习就可以不断迭代进行下去。
- Multinomial与Dirichlet分布
- 这两个分布不光为共轭,同时,我们可以很轻松的写出后验分布的参数值:
- 若假设似然函数为,先验分布为,其中,为超参数(认为已知,那么,其后验分布为,可以简记为
- 这样优美的性质使得我们很容易求得其后验分布
- 两个共轭分布过程
- LDA过程中涉及到两个相互独立的共轭分布过程
- 对于每个文档,其topic分布为,而对于该文档中某一位置的词,其属于哪一个topic的概率服从,因此,在得到数据后,统计每个文档中词的topic,可以更新每个文档的topic分布。
- 抛开文档,对于每个topic,其词服从,而对于这个topic,我们看到的词服从,因此,统计每个topic中词出现个数量,可以更新每个topic中词的分布。
- LDA过程中涉及到两个相互独立的共轭分布过程
- 采样过程
- 对于任何一个文档,在先验分布中采样得到(这里是一个向量,代表每个topic的概率),再由这些概率得到topic分布(多项式分布,表明每个词为这个topic的概率),然后由多项式分布采样得到每个词的topic。