LDA主题模型学习笔记2:求解隐变量和模型参数(EM思想)
2015-06-07 22:48
477 查看
上一篇《LDA主题模型学习笔记1:模型建立》中,我们已经对一个文档集的生成过程建立了三层的LDA主题模型,模型参数是α,β\alpha,\beta,引入了隐变量θ,z\theta,\mathbf z,接下来就是要确定这些参数,也就是参数估计问题。
原始论文《Latent Dirichlet Allocation》中,作者使用EM算法来估计参数,只是由于模型本身有些复杂,在E-step求解隐变量期望时使用了变分推断,并找到log似然函数的tightest lower bound代替log似然函数,在M-step中用拉格朗日乘数法求解参数β\beta,用牛顿方法求解参数α\alpha。
由于原始论文中写作顺序是自下而上的,而笔者习惯于自上而下的思路,所以刚开始看变分推断的时候一头雾水,沉迷于细节中无法自拔,在后面看到EM算法时颇有“柳暗花明又一村”之感,而在经典神书PRML中重新温习了EM算法(见《EM算法学习笔记》)之后,才算是理解了作者求解参数的思路。所以要搞清参数求解过程,私以为需要先梳理好这里面的EM思想。
有文档集D=[w1,w2,...,wM]D=[\mathbf w_1,w_2,...,w_M],对D建立LDA模型,其实与生成D的过程是刚好是逆向的。生成D时,我们是对于每一篇document,选择topic,选择word,而建模时,是对于每一篇document,根据观测到的word,来估计它的topic的分布,即为该document建立主题模型。
所以我们的目标是,找到一个主题模型,它生成我们所观测到的word分布的概率最大,这样就成了一个最大似然问题,log似然函数如下:
l(α,β)=∑d=1Mlogp(wd|α,β).l(\alpha,\beta)=\sum_{d=1}^Mlogp(\mathbf w_d|\alpha,\beta).
我们希望找到合适的α,β\alpha,\beta来使这个似然函数最大化。不能直接用最大似然方法求解的情况下,我们使用EM算法。
E-step
首先我们要求隐变量θ,z\theta,\mathbf z的期望,隐变量的后验概率可以计算得到:
p(θ,z|w,α,β)=p(θ,z,w|α,β)p(w|α,β)p(\theta,\mathbf z|\mathbf w,\alpha,\beta)=\frac{p(\theta,\mathbf z,\mathbf w|\alpha,\beta)}{p(\mathbf w|\alpha,\beta)}
不幸的是,这个后验概率很难计算出来,因为在p(w|α,β)p(\mathbf w|\alpha,\beta)的概率分布都展开,可以得到:
p(w|α,β)=Γ(∑iαi)∏iΓ(αi)∫(∏i==1kθαi−1i)(∏i=1N∑i=1k∏j=1V(θiβij)wjn)dθ.p(\mathbf w|\alpha,\beta)=\frac{\Gamma(\sum_i \alpha_i)}{\prod_i \Gamma(\alpha_i)}\int(\prod_{i==1}^k \theta_i^{\alpha_i -1})(\prod_{i=1}^N\sum_{i=1}^k\prod_{j=1}^V(\theta_i\beta_{ij})^{w_n^j})d\theta.
可以看出,θ\theta 对参数α\alpha 有指数幂,且与β\beta 的乘积要基于隐变量z\mathbf z求和,θ,β\theta,\beta 之间存在耦合关系,因而对两个参数求导都不能消掉它,所以无法计算上述对于隐变量的边缘分布。
所以作者考虑变分推断的方法。简化原先的LDA模型,找一个与原来不能直接求解的后验概率等价或近似的分布q,这个q要好解,一般比较简单粗暴的方法就是直接假设q中θ,z\theta,\mathbf z相互独立。
对原模型去掉θ,z,w\theta, \mathbf z, \mathbf w之间的边,删掉w\mathbf w,这样θ和z\theta和\mathbf z就相互独立了。
模型图:
![](http://img.blog.csdn.net/20150609202417678)
从模型中可以得出θ,z\theta,\mathbf z的分布q:
q(θ,z|γ,ϕ)=q(θ|ϕ)∏n=1Nq(zn|ϕn),q(\theta,\mathbf z|\gamma,\phi)=q(\theta|\phi)\prod_{n=1}^Nq(z_n|\phi_n),
新分布中引入了两个变分参数:Dirichlet参数γ\gamma,多项分布参数(ϕ1,...,ϕN)(\phi_1,...,\phi_N)。我们要用q来代替p,当然希望q与p越近似越好,所以对于q的确定,也就是γ,ϕ\gamma,\phi的选取,我们的目标是如下的一个优化问题:
(γ∗,ϕ∗)=argmin(γ,ϕ)D(q(θ,z|γ,ϕ)||p(θ,z|w,α,β)).(\gamma^*,\phi^*)=argmin_{(\gamma,\phi)}D(q(\theta,\mathbf z|\gamma,\phi)||p(\theta,\mathbf z|\mathbf w,\alpha,\beta)).
这里引入了两个分布之间的KL Divergence来度量两个分布(p,q)的相似度。
然后用变分推断算法迭代得到最优的变分参数(γ∗,ϕ∗)(\gamma^*,\phi^*),这样就等于已经确定了分布q,也就可以拿q(θ,z|γ,ϕ)q(\theta,\mathbf z|\gamma,\phi)来代替后验概率p(θ,z|w,α,β)p(\theta,\mathbf z|\mathbf w,\alpha,\beta)。
并且在用变分推断求解上述优化问题时,作者还通过使用Jensen不等式,找到了原log似然函数logp(|α,β)logp(\mathbf|\alpha,\beta)的一个tightest lower bound:L(γ,ϕ|α,β)L(\gamma,\phi|\alpha,\beta),用它来代替原log似然函数。
具体步骤见《LDA学习笔记3:变分推断算法》
M-step
这一步,我们根据E-step求出来的(γ,ϕ)(\gamma,\phi),最大化L(γ,ϕ|α,β)L(\gamma,\phi|\alpha,\beta),求解模型参数α,β\alpha,\beta:用拉格朗日乘数法求解参数β\beta,用牛顿方法求解参数α\alpha。
具体步骤见《LDA学习笔记4:求解模型参数》
主要参考资料《Latent Dirichlet Allocation》
原始论文《Latent Dirichlet Allocation》中,作者使用EM算法来估计参数,只是由于模型本身有些复杂,在E-step求解隐变量期望时使用了变分推断,并找到log似然函数的tightest lower bound代替log似然函数,在M-step中用拉格朗日乘数法求解参数β\beta,用牛顿方法求解参数α\alpha。
由于原始论文中写作顺序是自下而上的,而笔者习惯于自上而下的思路,所以刚开始看变分推断的时候一头雾水,沉迷于细节中无法自拔,在后面看到EM算法时颇有“柳暗花明又一村”之感,而在经典神书PRML中重新温习了EM算法(见《EM算法学习笔记》)之后,才算是理解了作者求解参数的思路。所以要搞清参数求解过程,私以为需要先梳理好这里面的EM思想。
有文档集D=[w1,w2,...,wM]D=[\mathbf w_1,w_2,...,w_M],对D建立LDA模型,其实与生成D的过程是刚好是逆向的。生成D时,我们是对于每一篇document,选择topic,选择word,而建模时,是对于每一篇document,根据观测到的word,来估计它的topic的分布,即为该document建立主题模型。
所以我们的目标是,找到一个主题模型,它生成我们所观测到的word分布的概率最大,这样就成了一个最大似然问题,log似然函数如下:
l(α,β)=∑d=1Mlogp(wd|α,β).l(\alpha,\beta)=\sum_{d=1}^Mlogp(\mathbf w_d|\alpha,\beta).
我们希望找到合适的α,β\alpha,\beta来使这个似然函数最大化。不能直接用最大似然方法求解的情况下,我们使用EM算法。
E-step
首先我们要求隐变量θ,z\theta,\mathbf z的期望,隐变量的后验概率可以计算得到:
p(θ,z|w,α,β)=p(θ,z,w|α,β)p(w|α,β)p(\theta,\mathbf z|\mathbf w,\alpha,\beta)=\frac{p(\theta,\mathbf z,\mathbf w|\alpha,\beta)}{p(\mathbf w|\alpha,\beta)}
不幸的是,这个后验概率很难计算出来,因为在p(w|α,β)p(\mathbf w|\alpha,\beta)的概率分布都展开,可以得到:
p(w|α,β)=Γ(∑iαi)∏iΓ(αi)∫(∏i==1kθαi−1i)(∏i=1N∑i=1k∏j=1V(θiβij)wjn)dθ.p(\mathbf w|\alpha,\beta)=\frac{\Gamma(\sum_i \alpha_i)}{\prod_i \Gamma(\alpha_i)}\int(\prod_{i==1}^k \theta_i^{\alpha_i -1})(\prod_{i=1}^N\sum_{i=1}^k\prod_{j=1}^V(\theta_i\beta_{ij})^{w_n^j})d\theta.
可以看出,θ\theta 对参数α\alpha 有指数幂,且与β\beta 的乘积要基于隐变量z\mathbf z求和,θ,β\theta,\beta 之间存在耦合关系,因而对两个参数求导都不能消掉它,所以无法计算上述对于隐变量的边缘分布。
所以作者考虑变分推断的方法。简化原先的LDA模型,找一个与原来不能直接求解的后验概率等价或近似的分布q,这个q要好解,一般比较简单粗暴的方法就是直接假设q中θ,z\theta,\mathbf z相互独立。
对原模型去掉θ,z,w\theta, \mathbf z, \mathbf w之间的边,删掉w\mathbf w,这样θ和z\theta和\mathbf z就相互独立了。
模型图:
从模型中可以得出θ,z\theta,\mathbf z的分布q:
q(θ,z|γ,ϕ)=q(θ|ϕ)∏n=1Nq(zn|ϕn),q(\theta,\mathbf z|\gamma,\phi)=q(\theta|\phi)\prod_{n=1}^Nq(z_n|\phi_n),
新分布中引入了两个变分参数:Dirichlet参数γ\gamma,多项分布参数(ϕ1,...,ϕN)(\phi_1,...,\phi_N)。我们要用q来代替p,当然希望q与p越近似越好,所以对于q的确定,也就是γ,ϕ\gamma,\phi的选取,我们的目标是如下的一个优化问题:
(γ∗,ϕ∗)=argmin(γ,ϕ)D(q(θ,z|γ,ϕ)||p(θ,z|w,α,β)).(\gamma^*,\phi^*)=argmin_{(\gamma,\phi)}D(q(\theta,\mathbf z|\gamma,\phi)||p(\theta,\mathbf z|\mathbf w,\alpha,\beta)).
这里引入了两个分布之间的KL Divergence来度量两个分布(p,q)的相似度。
然后用变分推断算法迭代得到最优的变分参数(γ∗,ϕ∗)(\gamma^*,\phi^*),这样就等于已经确定了分布q,也就可以拿q(θ,z|γ,ϕ)q(\theta,\mathbf z|\gamma,\phi)来代替后验概率p(θ,z|w,α,β)p(\theta,\mathbf z|\mathbf w,\alpha,\beta)。
并且在用变分推断求解上述优化问题时,作者还通过使用Jensen不等式,找到了原log似然函数logp(|α,β)logp(\mathbf|\alpha,\beta)的一个tightest lower bound:L(γ,ϕ|α,β)L(\gamma,\phi|\alpha,\beta),用它来代替原log似然函数。
具体步骤见《LDA学习笔记3:变分推断算法》
M-step
这一步,我们根据E-step求出来的(γ,ϕ)(\gamma,\phi),最大化L(γ,ϕ|α,β)L(\gamma,\phi|\alpha,\beta),求解模型参数α,β\alpha,\beta:用拉格朗日乘数法求解参数β\beta,用牛顿方法求解参数α\alpha。
具体步骤见《LDA学习笔记4:求解模型参数》
主要参考资料《Latent Dirichlet Allocation》
相关文章推荐
- 数据结构:查找
- 正则表达式基础
- 大并发处理解决方案
- [D3 + AngularJS] 15. Create a D3 Chart as an Angular Directive
- Arraylist,LinkedList,vector的区别
- JSP介绍
- 神奇的android:clipChildren属性
- poj 3281 Dining 【拆点网络流】【最大流经典问题 关键建图】
- LUA5.2版本中提供的位运算
- Git之Windows
- python collections deque
- 微信开发
- 空指针异常的原因
- 网站大全
- 宁波金鸟服饰有限公司举行公司化运作第一阶段总结表彰大会
- 数据存储操作(1)-------- SharedPreference存储
- 博弈问题及SG函数(真的很经典)
- 6.原型模式
- shell学习第四天----华丽的printf输出
- JavaWeb学习02-03