码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-07-02 12:08:22      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:lda   主题模型   求解   似然   

这一步,我们根据E-step得到的γ,?,最大化L(γ,?;α,β),得到α,β.

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

     首先把L(γ,?;α,β)简化,只保留与β有关的部分。因为β是每一行存一个主题的词分布,所以每一行的和是1,存在等式约束Vj=1βij=1,所以是带等式约束的最大化问题,使用拉格朗日乘数法,可得到拉格朗日函数如下:
技术分享
用拉格朗日函数对β求偏导,令偏导为0,可得:
技术分享
     这里的?dni指的是对第d个文档的变分参数?ni,也就是第n个单词在第i个主题的词分布中的概率,wjdn是第d个文档中第n个单词wnwn是一个V维向量,其中只有一个元素是1,其他都是0,这个为1的元素对应的索引号就是这个单词在文档集字典中的ID,上标j是指wn向量中的每个元素,如果wjdn=1那么单词wn在文档集字典中的ID就是j。

2,牛顿法求解α

首先把L(γ,?;α,β)简化,只保留与α有关的部分:
技术分享
因为α是Dirichlet分布的参数(K维的,K是主题个数),所以它没有约束条件,直接对α求偏导:
技术分享
     可以看到,一阶导数的结果中包含αj,这里不能直接令偏导为0解出α。所以需要考虑迭代的方法去求解,作者在这里使用牛顿迭代法。牛顿法的理解可以参考这里:http://blog.csdn.net/luoleicn/article/details/6527049
对于K维向量α,它的牛顿迭代式如下:
技术分享
     其中H(α),g(α)分别是α处的Hessian矩阵和梯度。这里我们可以看到有对Hessian矩阵求逆的操作,这个操作时间复杂度高达O(n3),所以考虑简化这个求逆操作。
Hessian矩阵的元素是:
技术分享
首先对Hessian矩阵H进行分解:
技术分享
这样Hessian矩阵的逆就成了如下形式:
技术分享
对于α的第i个分量,Hessian矩阵的逆和梯度的乘积:
技术分享
其中:
技术分享
这样可以看到,(H?1g)i只与higi有关,它们的值各有k个,所以这时的牛顿法是线性的。


本文内容来自LDA原始论文《Latent Dirichlet Allocation》的附录A.2, A.4.

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:lda   主题模型   求解   似然   

原文地址:http://blog.csdn.net/happyer88/article/details/46723941

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!