我们生活中总是产生大量的文本,分析这些观察到的语料库是如何生成的就需要对文本进行建模。常见的文本建模方法包括:Unigram、PLSA、LDA 、词向量模型(CBOW、Skip-gram)等。LDA模型是一种主题模型(topic model),属于词袋(不关心词与词之间的次序)模型。
人类所产生的所有语料文本我们都可以看成是上帝抛骰子生成的。我们观察到的只是上帝玩这个游戏的结果——词序列构成的语料,而上帝玩这个游戏的过程对我们来说是个黑盒子。所以在统计文本建模中,我们希望猜测出上帝是如何玩这个游戏的。具体一点,最核心的问题是:
第一个问题就对应着模型包含哪些参数,第二个问题就对应着游戏的规则,上帝可以按照一定的规则抛骰子从而产生词序列。
LDA算法:
整个语料库共包含 M 篇 文档。其中第 m(m∈[1,M]) 篇文档中的第 n(n∈Nm) 个词记为 wm,n 。这个概率图模型可以分解成两个主要的过程:
LDA模型求解的目标主要包括以下两个方面
隐含变量 Θ 和 Φ 后验概率分布难以精确求解,可以通过采样的方法来近似求解。从LDA概率图模型可以发现:
但遗憾的是 z⃗ 也是隐含变量,不能被直接观测到。一种可行的方法是:我们首先计算 z⃗ 的后验概率分布 p(z⃗ |w⃗ ) ,然后对该后验概率分布进行采样。将得到的样本作为隐含变量 z⃗ 的观察值,这样就可以对 Θ 和 Φ 的后验概率分布进行估计。
(1) 这里首先介绍一个定理:
若随机变量 θ⃗ =(θ1,…,θK) 服从参数为 α⃗ =(α1,…,αK) 的Dirichlet分布。随机变量 x 服从参数为 θ⃗ 的 multinomial 分布(共 K 个类),重复进行 N 次试验,得到 x⃗ 。如下图所示:
(2)在LDA概率图模型的第一个物理过程中, α⃗ →θ⃗ m→z⃗ m 表示生成第 m 篇文档中所有词对应的 topic。显然 α⃗ →θ⃗ m 对应于Dirichlet分布, θ⃗ m→z⃗ m 对应于 Multinomial 分布,所以整个过程是一个 Dirichlet-Multinomial 共轭结构。
由于语料中 M 篇文档的 topic 生成过程是相互独立的,所以我们得到 M 个相互独立的 Dirichlet-Multinomial 共轭结构。从而整个语料中 topic 生成的概率为:
(3)在LDA概率图模型的第二个物理过程中, β⃗ →φ⃗ k→w⃗ k 表示语料中由 topic k 生成词的过程。其中 w⃗ k 表示语料中由 topic k 生成的所有词。显然 β⃗ →φ⃗ k 对应于 Dirichlet 分布,而 φ⃗ k→w⃗ k 对应于 Multinomial 分布,所以整个过程是一个 Dirichlet-Multinomial 共轭结构。
因为语料中 K 个topic 生成词的过程是相互独立的,所以我们得到了 K 个相互独立的 Dirichlet-Multinomial 共轭结构,从而整个语料中词生成的概率为:
(4)综合步骤(2)和(3)可以得到联合分布函数:
(5)下面采用Gibbs采样算法对 z⃗ 的后验概率分布 p(z⃗ |w⃗ |α⃗ ,β⃗ ) (不引起歧义的情况下,简记为 p(z⃗ |w⃗ ) ) 进行采样。Gibbs 采样算法关键在于条件概率分布的求解。
假定我们要求解第 m 篇文档中 第 n 个词 i=(m,n) 所对应主题 zi=k(k∈[1,K]) 的条件概率分布。假定 wi=t(t∈[1,V]) 。记 w⃗ ={wi=t,w⃗ ¬i} , z⃗ ={zi=k,z⃗ ¬i} , i=(m,n) 有下式成立:
在不考虑位置 i=(m,n) 位置的词时,根据Dirichlet参数的估计公式, αk+n(k)m,¬i∑Kk=1(αk+n(k)m,¬i) 刚好是对第 m 篇文档主题分布 θm 的第 k 个分量 θmk 的估计。而 βt+n(t)k,¬i∑Vt=1(βt+n(t)k,¬i) 刚好是对第 k 个主题生成第 t 个词的概率 φkt 的估计。
整个公式很漂亮就是 p(topic|doc)⋅p(word|topic) ,所以这个概率其实是 doc→topic→word 的路径概率,由于 topic 有 K 个,所以 Gibbs Sampling 公式的物理意义就是在这 K 条路径中进行采样。
有了Gibbs Sampling 采样公式,我们就可以基于语料训练LDA模型。LDA的训练过程如下所是:
(6)根据前面介绍的总体思路,当Gibbs采样过程收敛后就可以对参数 Θ 和 Φ 的后验概率分布进行估计。
(7)有了LDA模型,对于新来的文档 docnew ,我们如何做该文档的 topic 语义分布的计算呢?基本上inference和training 的过程完全类似。不同之处是:对于新的文档,我们只要认为 Gibbs Sampling 公式中 Φ 是已知的(由训练好的模型提供),所以采样过程我们只需要估计该文档的topic分布 θ⃗ new 就好了。过程如下所示:
Gregor Heinrich, Parameter estimation for text analysis
靳志辉,LDA数学八卦,2013
邹博,主题模型LDA,2014