Latent Dirichlet Allocation(LDA)

狄利克雷分布[编辑]

狄利克雷分布是一组连续多变量概率分布,是多变量普遍化的Β分布。为了纪念德国数学家约翰·彼得·古斯塔夫·勒热纳·狄利克雷(Peter Gustav Lejeune Dirichlet)而命名。狄利克雷分布常作为贝叶斯统计的先验概率。当狄利克雷分布维度趋向无限时,便成为狄利克雷过程(Dirichlet process)。

狄利克雷分布奠定了狄利克雷过程的基础,被广泛应用于自然语言处理特别是主题模型(topic model)的研究。

概率密度函数[编辑]

此图展示了当 K=3、参数 αα=(0.3, 0.3, 0.3)变化到(2.0, 2.0, 2.0)时,密度函数取对数后的变化。

维度K ≥ 2的狄利克雷分布在参数α1, ..., αK > 0上、基于欧几里得空间RK-1里的勒贝格测度有个概率密度函数,定义为:

f(x_1,\dots, x_{K-1}; \alpha_1,\dots, \alpha_K) = \frac{1}{\mathrm{B}(\alpha)} \prod_{i=1}^K x_i^{\alpha_i - 1}

x1, ..., xK–1 > 0并且x1 + ... + xK–1 < 1,xK = 1 – x1 – ... – xK–1. 在(K − 1)维的单纯形开集上密度为0。

归一化衡量B(α)是多项Β函数,可以用Γ函数(gamma function)表示:

\mathrm{B}(\alpha) = \frac{\prod_{i=1}^K \Gamma(\alpha_i)}{\Gamma\bigl(\sum_{i=1}^K \alpha_i\bigr)},\qquad\alpha=(\alpha_1,\dots,\alpha_K).


隐含狄利克雷分布[编辑]

隐含狄利克雷分布简称LDA(Latent Dirichlet allocation),是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。

LDA首先由Blei, David M.、吴恩达和Jordan, Michael I于2003年提出[1],目前在文本挖掘领域包括文本主题识别、文本分类以及文本相似度计算方面都有应用。

数学模型[编辑]

LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

LDA贝叶斯网络结构

另外,正如Beta分布二项式分布的共轭先验概率分布,狄利克雷分布作为多项式分布的共轭先验概率分布。因此正如LDA‎贝叶斯网络结构中所描述的,在LDA模型中一篇文档生成的方式如下:

  • 从狄利克雷分布\alpha 中取样生成文档i的主题分布\theta_i
  • 从主题的多项式分布\theta_i中取样生成文档i第j个词的主题z_{i, j}
  • 从狄利克雷分布\beta 中取样生成主题z_{i, j}的词语分布\phi_{z_{i, j}}
  • 从词语的多项式分布\phi_{z_{i, j}}中采样最终生成词语w_{i, j}

因此整个模型中所有可见变量以及隐藏变量的联合分布

p(w_i, z_i, \theta_i, \Phi | \alpha, \beta) = \prod_{j = 1}^{N} p(\theta_i|\alpha)p(z_{i, j}|\theta_i)p(\Phi|\beta)p(w_{i, j}|\theta_{z_{i, j}})

最终一篇文档的单词分布的最大似然估计可以通过将上式的\theta_i以及\Phi进行积分和对z_i进行求和得到

p(w_i | \alpha, \beta)  = \int_{\theta_i}\int_{\Phi }\sum_{z_i}p(w_i, z_i, \theta_i, \Phi | \alpha, \beta)

根据p(w_i | \alpha, \beta) 的最大似然估计,最终可以通过吉布斯采样等方法估计出模型中的参数。

使用吉布斯采样估计LDA参数[编辑]

在LDA最初提出的时候,人们使用EM算法进行求解,后来人们普遍开始使用较为简单的Gibbs Sampling,具体过程如下:

  • 首先对所有文档中的所有词遍历一遍,为其都随机分配一个主题,即zm,n=k~Mult(1/K),其中m表示第m篇文档,n表示文档中的第n个词,k表示主题,K表示主题的总数,之后将对应的n(k)m+1, nm+1, n(t)k+1, nk+1, 他们分别表示在m文档中k主题出现的次数,m文档中主题数量的和,k主题对应的t词的次数,k主题对应的总词数。
  • 之后对下述操作进行重复迭代。
  • 对所有文档中的所有词进行遍历,假如当前文档m的词t对应主题为k,则n(k)m-1, nm-1, n(t)k-1, nk-1, 即先拿出当前词,之后根据LDA中topic sample的概率分布sample出新的主题,在对应的n(k)m, nm, n(t)k, nk上分别+1。

p(z_i=k|z_{-i},w)(n^{(t)}_{k,-i}+\beta_t)(n_{m,-i}^{(k)}+\alpha_k)/(\sum_{t=1}^{V}n_{k,-i}^{(t)}+\beta_t)

  • 迭代完成后输出主题-词参数矩阵φ和文档-主题矩阵θ

\phi_{k,t}=(n_k^{(t)}+\beta_t)/(n_k+\beta_t)

\theta_{m,k}=(n_m^{(k)}+\alpha_k)/(n_m+\alpha_k)


变量:

w 表示词, z 表示主题, w=(w1,w2,,wN) 表示文档,语料库 D=(w1,,wM) V 表示所有单词的个数(固定值), N 表示一个文档中的词数(随机变量), M 是语料库中的文档数(固定值), k 是主题的个数(预先给定,固定值)。

 

在说明LDA模型之前,先介绍几个简单一些的模型。

1.Unigram model:

文档 w=(w1,w2,,wN) ,用 p(wn) 表示词 wn 的先验概率,生成文档 w 的概率: p(w)=n=1Np(wn)

图模型为:

 

2.Mixture of unigrams model:

一篇文档只由一个主题生成。该模型的生成过程是:给某个文档先选择一个主题 z ,再根据该主题生成文档,该文档中的所有词都来自一个主题。假设主题有 z1,...,zk, 生成文档 w 的概率为:

p(w)=p(z1)n=1Np(wn|z1)++p(zk)n=1Np(wn|zk)=zp(z)n=1Np(wn|z).

图模型为:

 

LDA模型:

下面说明LDA模型生成一个文档的过程:

1首先要选择一个主题概率分布 θ θ=(θ1,...,θk),θi 代表第i个主题被选择的概率,即 p(z=i|θ)=θi ,且 i=1kθi=1 θDir(α) p(θ|α)=Γ(i=1kαi)i=1kΓ(αi)θα111θαk1k.

2在选好一个主题概率分布 θ 后,再选择一个主题 zn ,再根据 zn β 选择一个词 wn β=(βij)k×V,βij=p(wj=1|zi=1) 表示主题 i 生成词 j 的概率, Vj=1βij=1

用2中的步骤生成N个词,文档 w 就生成了。

图模型:

 

由LDA的图模型我们可以清楚得看出变量间的依赖关系。

整个图的联合概率(单个文档)为: p(θ,z,,w|α,β)=p(θ|α)Nn=1p(zn|θ)p(wn|zn,β)

生成文档的概率为 p(w|α,β)=p(θ|α)Nn=1znp(zn|θ)p(wn|zn,β)dθ ,文本语料库由 M 篇文档组成, D=(w1,,wM) ,故生成文本语料库的概率为

p(D|α,β)=Md=1p(θd|α)Ndn=1 zdnp(zdn|θd)p(wdn|zdn,β)dθd.

下面叙述训练过程:

首先设定目标函数

(α,β)=logp(D|α,β)=logd=1Mp(wd|α,β)=d=1Mlogp(wd|α,β).

我们参数训练的目标是求使 (α,β) 最大的参数 α,β 。我们把 p(w|α,β) 展开得 p(w|α,β)=Γ(iαi)iΓ(αi)(ki=1θαi1i)(Nn=1ki=1Vj=1(θiβij)wjn)dθ ,由于 θ β 的耦合,对 (α,β) 用极大似然估计难以计算。下面我们用变分EM算法来计算最优参数 α,β

E步骤:我们用 L(γ,ϕ;α,β) 来近似估计 logp(w|α,β) ,给定一对参数值 (α,β) ,针对每一文档,求得变分参数 {γd,ϕd:dD} ,使得 L(γ,ϕ;α,β) 达到最大。

M步骤:求使 L=dL(γd,ϕd;α,β) 达到最大的 α,β

重复E、M步骤直到收敛,得到最优参数 α,β

E步骤的计算方法:

这里用的是变分推理方法(variational inference),文档的似然函数

上式右部记为 L(γ,ϕ;α,β) 。当 p(θ,z,w|α,β)q(θ,z) 为常数时,上式取等号,即分布 q p(θ,z|w,α,β) 时。

p(θ,z|w,α,β)=p(θ,z,w|α,β)p(w|α,β) ,由于 p(w|α,β) θ β 的耦合, p(w|α,β) 难以计算,因此 p(θ,z|w,α,β) 也难以计算。我们用分布 q(θ,z|γ,ϕ) 来近似分布 p(θ,z|w,α,β) ,在 L(γ,ϕ;α,β) 中分布 q q(θ,z|γ,ϕ) ,我们得 logp(w|α,β)=L(γ,ϕ;α,β)+D(q(θ,z|γ,ϕ)||p(θ,z|w,α,β)). 上式说明计算分布 q(θ,z|γ,ϕ) 与分布 p(θ,z|w,α,β)) 间的KL距离的最小值等价于计算下界函数 L(γ,ϕ;α,β) 的最大值。

用来近似后验概率分布 p(θ,z|w,α,β)) 的分布 q(θ,z|γ,ϕ) 的图模型:

 

γ 为狄利克莱分布的参数, ϕ=(ϕni)n×i,n=1,,N,i=1,,k ϕni 表示第 n 个词由主题 i 生成的概率, ki=1ϕni=1

下面我们求使 L(γ,ϕ;α,β) 达到极大的参数 γ,ϕ

L(γ,ϕ;α,β) 中的 p q 分解,得

把参数 (α,β) (γ,ϕ) 代入 L(γ,ϕ;α,β) ,再利用公式 Eq[log(θi)|γ]=Ψ(γi)Ψ(kj=1γj) Ψ logΓ 的一阶导数,可通过泰勒近似来计算),我们可得到

然后用拉格朗日乘子法(即变量的拉格朗日函数对变量求偏导等于零,求出变量对应的等式)来计算可得

ϕniβivexp(Ψ(γi)Ψ(kj=1γj)),

γi=αi+Nn=1ϕni.

ki=1ϕni=1 归一化求得 ϕni 。由于解 ϕni γi 相互影响,可用迭代法来求解,算法如下:

 

最终可以得到收敛的参数 γ,ϕ 。这里的参数 γ,ϕ 是在给定一个固定的文档 w 下产生的,因此 γ,ϕ 也可记为 γ(w),ϕ(w) ,变分分布 q(θ,z|γ(w),ϕ(w)) 是后验分布 p(θ,z|w,α,β) 的近似。文本语料库 D=(w1,,wM) ,用上述方法求得变分参数 {γd,ϕd:dD}

M步骤的计算方法:

{γd,ϕd:dD} 代入 dL(γd,ϕd;α,β) L=dL(γd,ϕd;α,β) ,我们用拉格朗日乘子法求 β ,拉格朗日函数为 l=L+ki=1λi(Vj=1βij1) ,求得 βijMd=1Ndn=1ϕdniwjdn ,由 Vj=1βij=1 归一化求得 βij

下面求 α 。我们对拉格朗日函数 l αi 求偏导,得 lαi=M(Ψ(kj=1αj)Ψ(αi))+Md=1(Ψ(γdi)Ψ(kj=1γdj)) 。由这个偏导等式可知 αi 值和 αj 值( ij )之间相互影响,故我们得用迭代法来求解最优 α 值。我们用牛顿-拉弗逊算法来求解。将上面的偏导数再对 αj 求偏导,得 lαiαj=M(Ψ(kj=1αj)δ(i,j)Ψ(αi)) 。牛顿-拉弗逊算法的迭代公式为 αnew=αoldH(αold)1g(αold) H(α) lαiαj g(α) lα ,迭代到收敛时即得最优 α 值。

测试新文档主题分布:

设新文档为 w ,用变分推理算法计算出新文档的 γ,ϕ ,由于 ϕni 表示文档中第 n 个词由主题 i 生成的概率,故 Nn=1ϕni 为对文档中由主题 i 生成的词数估计, 1NNn=1ϕni 为主题 i 在文档主题组成中的比重。

上述说法与推导有错的话请大家批评指正。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值