背景
我们生活中总是产生大量的文本,分析这些观察到的语料库是如何生成的就需要对文本进行建模。常见的文本建模方法包括:Unigram、PLSA、LDA 、词向量模型(CBOW、Skip-gram)等。LDA模型是一种主题模型(topic model),属于词袋(不关心词与词之间的次序)模型。
模型描述
人类所产生的所有语料文本我们都可以看成是上帝抛骰子生成的。我们观察到的只是上帝玩这个游戏的结果——词序列构成的语料,而上帝玩这个游戏的过程对我们来说是个黑盒子。所以在统计文本建模中,我们希望猜测出上帝是如何玩这个游戏的。具体一点,最核心的问题是:
- 上帝都有什么样的骰子?
- 上帝是如何抛这些骰子的?
第一个问题就对应着模型包含哪些参数,第二个问题就对应着游戏的规则,上帝可以按照一定的规则抛骰子从而产生词序列。
LDA算法:
LDA过程图示:
LDA 概率图模型:
整个语料库共包含 M 篇 文档。其中第
- α⃗ →θ⃗ m→zm,n ,这个过程表示在生成第 m 篇文档的时候,先从第一个坛子中抽取一个 doc-topic 骰子
θ⃗ m ,然后抛这个骰子生成了第 m 篇文档中的第n 个词的 topic 编号 zm,n ; - β⃗ →φ⃗ k→wm,n|k=zm,n ,目前上帝从第二个坛子中独立抽取了 K 个 top-word 骰子,这个过程表示采用如下过程生成语料中第
m 篇文档的第 n 个词。在上帝手中的K 个topic-word 骰子 φ⃗ k(k∈[1,K]) 中,挑选编号为 k=zm,n (第1步得到的结果)的那个骰子进行投掷,然后生成 word wm,n 。
LDA 模型求解
LDA模型求解的目标主要包括以下两个方面
- 估计模型中的隐含变量 φ⃗ 1,…,φ⃗ K 和 θ⃗ 1,…,θ⃗ M ;
- 对于新来的一篇文档 docnew ,计算这篇文档的topic分布 θ⃗ new 。
总体思路
隐含变量 Θ 和 Φ 后验概率分布难以精确求解,可以通过采样的方法来近似求解。从LDA概率图模型可以发现:
- zm,n 服从 参数为 θ⃗ m 的 multinomial 分布,若能获得 zm,n 的观测值就很容易得到 θ⃗ m 的后验概率分布。
- 若 zm,n 可以被观测到,假定 zm,n=k ,则第 m 篇文档的第
n 个词 wm,n 服从参数为 φ⃗ k 的multinomial分布,就能很容易的估计 φ⃗ k 的后验概率分布。
但遗憾的是 z⃗ 也是隐含变量,不能被直接观测到。一种可行的方法是:我们首先计算 z⃗ 的后验概率分布 p(z⃗ |w⃗ ) ,然后对该后验概率分布进行采样。将得到的样本作为隐含变量 z⃗ 的观察值,这样就可以对 Θ 和 Φ 的后验概率分布进行估计。
计算 z⃗ 的后验概率分布 p(z⃗ |w⃗ )
(1) 这里首先介绍一个定理:
若随机变量 θ⃗ =(θ1,…,θK) 服从参数为 α⃗ =(α1,…,αK) 的Dirichlet分布。随机变量 x 服从参数为
n⃗ =(n1,…,nK) 表示 x⃗ 中各个类别出现的次数,即 n⃗ ∼Multi(θ⃗ ,N) ,有下式成立: