最近一段时间一直在学习LDA模型以及相关变体,从graphic model到gibbs sampling,再到variational inference,这其中涉及较多数学知识,而且概念较为抽象。在这里写一篇关于LDA的完整理解。
1 两种重要的概率分布
想要理解LDA,不得不熟悉两种概率分布:多项式分布和dirichlet分布。
1.1 Dirichlet分布
Dirichlet分布是一种多变量的概率分布,参数为K维的α,记为Dir(α)。
概率密度函数为:
Dir(x;α) = (1)
其中:
Dirichlet分布变量为K维的向量x,参数alpha描述了K维向量x的分布。
1.2 多项式分布
自然语言处理中多项式分布往往指的是Categorical distribution,而不是Multinomial Distribution。
Categorical distribution 描述的是 有K个事件,每个事件发生的概率为p1,p2,...,pk, 求某个事件发生的概率。
那么它的概率密度函数就为:
(2)
其中,p为各个事件发生的K维概率向量,和为1。X为K维的indicator vetor。例如:X= [0,0,0,1,0...0]表示第四个事件发生。
2 Bayes inference
贝叶斯推断的基础是贝叶斯定理。假设模型M的参数为 ϑ,观测数据为规模为N的向量X = {x1,x2,x3,...,xN}。
那么我们有:
P(X|ϑ)*P(ϑ)
P(ϑ|X) = ------------------------ (3)
P(X)
可以简单记为:
Likelyhood*Prior
Posterior = ---------------------------
Evidence
应用这个公式,产生了两种模型参数估计方法。
2.1 最大似然估计(MLE)
MLE仅仅使用式3中的likelyhood:P(X|ϑ) 来估计参数ϑ。这个方法在大学概率课本中很常见。
ϑ = arg max{P(X|ϑ) } (4)
将观测值代入式(4)中,求使得式(4)取得极大值的ϑ值。该ϑ值最好地解释了当前的观测值X。
2.2 最大后验估计(MAP)
MAP比MLE更近一步,直接最大化式(3),求ϑ值。由于evidence是常量,所以并不影响最大化的求值,所以
ϑ = arg max{ P(X|ϑ*P(ϑ)) } (5)
3 共轭概率分布
共轭概率分布是指两种概率分布具有相似的概率密度函数,两种概率密度函数的乘积也可以表示为其中一种概率密度函数。例如Dirichlet 和 多项式分布就是一对共轭分布:
Dir(p;α) * Multi(x;p) = Dir(p;x+α) (6)
其中式(6),Multi(x;p)可以看做式(3)中的likelyhood,即向量X为观测数据,p为产生该观测数据的模型的参数。而 Dir(p;α)可以看做prior了,即先验概率,那么Dir(p;x+α)为后验概率了。
在统计学中,针对piror存在两种学派之争:频率学派和贝叶斯学派。而上式中假设prior服从参数为α的分布,是典型的贝叶斯学派的做法。
LDA中使用dirichlet和多项式分布这对共轭分布,极大地方便了运算。可以根据先验参数和观测数据,轻易地写出模型参数的后验概率,即Dir(p;x+α)。
4 LDA模型
模型的贝叶斯网络图:
LDA是一个生成模型,即定义了生成过程来产生数据。使用LDA生成语料库的过程如下:
生成过程可描述如下:
1 对每一个主题:
使用V维向量β作为dirichlet参数,抽样一个V维的多项式分布的参数向量(词分布变量)。
2
对每篇文档:
使用K维向量α作为dirichlet参数,抽样K维的多项式分布的参数向量(主题分布变量)
对每个词:
利用多项式分布的参数向量,抽样一个主题z
利用主题z和V维的多项式分布的参数向量,抽样一个词w