您的位置:首页 > 其它

LDA主题模型学习笔记4:求解模型参数(M-step)

2015-07-02 11:09 483 查看
这一步,我们根据E-step得到的γ,ϕ\gamma,\phi,最大化L(γ,ϕ;α,β)L(\gamma,\phi;\alpha,\beta),得到α,β\alpha,\beta.

1,拉格朗日乘数法求解β\beta

首先把L(γ,ϕ;α,β)L(\gamma,\phi;\alpha,\beta)简化,只保留与β\beta有关的部分。因为β\beta是每一行存一个主题的词分布,所以每一行的和是1,存在等式约束∑Vj=1βij=1\sum_{j=1}^V\beta_{ij}=1,所以是带等式约束的最大化问题,使用拉格朗日乘数法,可得到拉格朗日函数如下:




用拉格朗日函数对β\beta求偏导,令偏导为0,可得:




这里的ϕdni\phi_{dni}指的是对第d个文档的变分参数ϕni\phi_{ni},也就是第n个单词在第i个主题的词分布中的概率,wjdnw_{dn}^j是第d个文档中第n个单词wnw_n,wnw_n是一个V维向量,其中只有一个元素是1,其他都是0,这个为1的元素对应的索引号就是这个单词在文档集字典中的ID,上标j是指wnw_n向量中的每个元素,如果wjdn=1w_{dn}^j=1那么单词wnw_n在文档集字典中的ID就是j。

2,牛顿法求解α\alpha

首先把L(γ,ϕ;α,β)L(\gamma,\phi;\alpha,\beta)简化,只保留与α\alpha有关的部分:




因为α\alpha是Dirichlet分布的参数(K维的,K是主题个数),所以它没有约束条件,直接对α\alpha求偏导:




可以看到,一阶导数的结果中包含αj\alpha_j,这里不能直接令偏导为0解出α\alpha。所以需要考虑迭代的方法去求解,作者在这里使用牛顿迭代法。牛顿法的理解可以参考这里:http://blog.csdn.net/luoleicn/article/details/6527049

对于K维向量α\alpha,它的牛顿迭代式如下:




其中H(α),g(α)H(\alpha),g(\alpha)分别是α\alpha处的Hessian矩阵和梯度。这里我们可以看到有对Hessian矩阵求逆的操作,这个操作时间复杂度高达O(n3)O(n^3),所以考虑简化这个求逆操作。

Hessian矩阵的元素是:




首先对Hessian矩阵H进行分解:




这样Hessian矩阵的逆就成了如下形式:




对于α\alpha的第i个分量,Hessian矩阵的逆和梯度的乘积:




其中:




这样可以看到,(H−1g)i(H^{-1}g)_i只与hih_i和gig_i有关,它们的值各有k个,所以这时的牛顿法是线性的。

本文内容来自LDA原始论文《Latent Dirichlet Allocation》的附录A.2, A.4.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: