这一段时间在看LDA主题模型,这里说一下我对LDA的理解,抛开复杂的数学、概率论、机器机器学习算法,只说思路,其他内容以后再更加详细的写。
假设有一个机器人,他想写一篇文章,每篇文章包含N个词,那么他怎么写呢???
1、Unigram model
科学家A一开始这么设计,先给机器人读大量的文章,这样这个机器人的大脑中会有S个词,这些词组成了词向量
W=[w1,w2,w3......wS]
,每一个词都有相对应的概率
P=[p(w1),p(w2),p(w3)......p(wS)
。
算法如下:
for i = 1 to N:
choose a word
wi~p(W)
数学表示即:
2、Mixture of unigrams
科学家B觉得不应该这样,他认为机器人读的这些文章分成不同的主题
Z=[z1,z2......zt]
,每个主题的概率为
P(Z)=[p(z1),p(z2),......p(zt))]
,第i主题下又有S个高频词向量
W=[w1,w2,w3......wS]
,每一个词都有相对应的概率
P=[p(w1|zi),p(w2|zi),p(w3|zi)......p(wS|zi)
。
算法描述如下:
choose a topic $z_i~p(Z);
for i = 1 to N
choose a word
wi~p(W|zi)
数学表示为:
也就是说按照学习到的概率选择一个Topic,按照这个Topic下词的概率选择N个词。
3、Probabilistic lantent semantic indexinal(pLSI)
科学家C(Hoffman)认为应该一篇文档可以由多个主题(topic
Z=[z1,z2......zt]
)混合而成,每个主题的概率为
P(Z)=[p(z1),p(z2),......p(zt))]
,而每个Topic都是词汇上的概率分布
P=[p(w1|zi),p(w2|zi),p(w3|zi)......p(wS|zi)]
,文章中的每一个词都有固定的topic。
算法描述:
Choose parameter θ ~ p(θ) #θ为选择出来的主题向量
for i = 1 to N
choose a topic
zj~p(z|θ)
choose a word
wk~p(w|zj)
数学表示即:
4、Lanton Dirichlet Allocation(LDA)
科学家D(David M. Blei)认为这个主题的概率分布、词汇的概率分布并不是固定的(与pLSA相比),应该是符合某一个分布,选取主题或词汇的时候,这个概率是动态变化的。
initialize
φ0ni
:= 1/k for all i and n
initialize
γi:=αi+N/k
for all i and n
repeat
for n = 1 to N
for i = 1 to k
φt+1ni=βiwnexp(Ψ(γti))
normalize
φt+1n
to sum to 1.
γt+1=α+∑Nn=1φt+1n
until convergence
数学公式如下:
上述是我理解的LDA,一个机器人想要写一篇文章,那么先按照Dirichlet分布选择出主题向量,载这个主题向量的基础上,生成词汇。
使用LDA模型进行推断的时候,是倒过来的,由文档的词汇生成主题。因此LDA常常也用来做 降维工具。使用在语义分析,图像、文本分类等等
5、pLSA与LDA对比
LDA:假定语料库中共有M篇文章,每篇文章下的Topic的主题分布是一个从参数为的Dirichlet先验分布中采样得到的Multinomial分布,每个Topic下的词分布是一个从参数为的Dirichlet先验分布中采样得到的Multinomial分布。
pLSA:对于某篇文章中的第n个词,首先从该文章中出现的每个主题的Multinomial分布(主题分布)中选择或采样一个主题,然后再在这个主题对应的词的Multinomial分布(词分布)中选择或采样一个词。不断重复这个随机生成过程,直到M篇文章全部生成完成。
6、相关知识点
- gamma函数
- Dirichlet分布
- 共轭先验和贝叶斯框架
- EM模型
- MCMC、Gibbs采样
7、训练和推断
对于LDA模型,有两个目标:
* 估计模型中的语料库中的主题Dirichlet分布和每个主题下的词汇的Dirichlet分布
* 对于一篇新的文档,计算这篇文档的topic分布
训练过程:
推断过程:
参考资料
1、Blei, David M.; Ng, Andrew Y.; Jordan, Michael I. Latent Dirichlet allocation(LDA原始论文):http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf
2、rickjin的LDA数学八卦(力荐,本文部分图片和公式来自于此文档)
网页版:http://www.flickering.cn/tag/lda/
PDF:http://emma.memect.com/t/9756da9a47744de993d8df13a26e04e38286c9bc1c5a0d2b259c4564c6613298/LDA;
3、搜索背后的奥秘——浅谈语义主题计算:http://www.semgle.com/search-engine-algorithms-mystery-behind-search-on-the-calculation-of-semantic-topic;
4、LDA的相关论文、工具库:http://site.douban.com/204776/widget/notes/12599608/note/287085506/;
5、LDA实现 http://www.cs.princeton.edu/~blei/topicmodeling.html