概述
引子:
今年上半年,我报名参加了julyEdu的三月份机器学习班,在班上我自告奋勇地分享了下自己对LDA模型中几个重要问题,比如perplexity,likelihood和fold-in
query的理解、相关公式以及实现方案。不过由于最近要写一篇主题模型的文章,我重读了下LDA以及其他一些主题模型的经典文献,发现自己之前理解上存在一些偏差,于是就想写一篇博客,把整个思路重新理顺一下。
(1)Perplexity是什么?
通常用于评价聚类算法好坏的方法有两种,其一是使用带分类标签的测试数据集,然后使用一些算法,比如Normalized
Mutual Information,Variation of Information
distance,来判断聚类结果与真实结果的差距,其二是使用无分类标签的测试数据集,用训练出来的模型来跑测试数据集,然后计算在测试数据集上,所有token似然值几何平均数的倒数,也就是perplexity指标,这个指标可以直观理解为用于生成测试数据集的词表大小的期望值,而这个词表中所有词汇符合平均分布[1]。其公式如下:
(1)
其中,M是指训练好的模型参数,在LDA中是theta和phi或者其等价物,例如collapsed Gibbs
Sampler所获取的状态(w向量,z向量),中间式子中指数-1/N的N指的是Epsilon(Nm),注意这个公式和LDA模型无关,它可以应用于任何聚类模型,当然也包括主题模型。
(2)一些主题模型的perplexity:
接下来解释一些主题模型的perplexity,再插一句,由于公式(1)中,要计算困惑度,现在仅需要获取P(m文档向量Wm|M),所以下面将焦点聚焦于如何计算这个数值
LDA:
(2)
这里有个小插曲,曾经我以为公式2有误,应该更正如下:
之所以这样是因为N_m个token,每个token只可能从K个主题中选取一个主题,所以(2)第一行推导中,消去对k的sum后就直接没有加号,是一个连乘公式了,所以推导到第二行,针对V和K的连乘,括号的指数肯定是词汇t在主题k下的出现频次。
后来我重新回顾了下LDA,发现这种想法有误,因为文档m的产生概率,是文档m中每个词汇产生概率之积(原因就是theta给定时,文档m中每个词汇的概率条件独立,更详细的解释看后面内容),而每个词汇的产生概率,因为文档m中任意词汇都对应K个主题上的概率分布(即文档-主题概率分布),而在每个主题k上,都有一个主题k-词汇w的概率,所以对于当前toke
wn来说,其产生概率是sigma P(wn = t|zn = k)* P(zn = k|d =
m),k=1..K.
所以原来公式无误。
而我想更正的公式,说的是文档m中所有tokenw及其主题标签z的共现概率,并非文档m中所有token
w的产生概率。
感谢网友@傅维刚指正,也感谢@董诺依曼,让我经历了一次思辨过程,对概率图的理解深化了。
下面对公式(2)进行一下解析:
首先为毛=p(w_1|M)*p(w_i|M)*..*p(w_N_m|M)?原因是在给定模型(即theta和phi已知)的情况下,同一个文档中token相互独立,其实这块通过LDA模型的plate
notation看得很清楚:
上图左边是LDA的plate
notation图,右边是给定theta和phi的情况下,针对某一篇文档,把LDA模型分解成原始形态的贝叶斯网络,将各个token及其相关变量在贝叶斯网络中展现出来,由于贝叶斯网络的性质如下:
在给定C的情况下,a和b相互独立,所以在给定theta和phi的情况下,同一文档中各个token相互独立。
同时细看公式(2)的第二行,
从中可以看到,在计算perplexity中,分别用到了通过训练集所得到的主题-词汇分布phi,测试集得到的文档m-主题分布theta、文档m中词汇t在主题k下的出现次数n_m^(k,
t).
ATM:
在ATM的perplexity计算中,有一些特殊的小trick:
a)一般情况下,通过跑一个sampler,然后绘制随着迭代数量增加,困惑度的变化曲线,但这样得到的曲线并不稳定,也就是说跑一个sampler,是一条曲线,下次在跑一次,得到的曲线和之前的曲线差别较大,所以研究者想了一个办法,一次跑10个sampler,然后每次迭代求困惑度的时候,将这10个sampler的困惑度放在一起求平均,这样得到的一条新的困惑度变化曲线稳定收敛,如下图所示:
b)比较ATM和LDA,以及ATM+fictious
author的困惑度,这里作者从测试集的每个文档中,抽取N个词汇,也放在在训练集中训练好的模型上,重新训练一番,然后拿来测试测试集的每个文档中,除了被抽取的N个词汇外的其他词汇。然后绘制了N取不同数值时,困惑度的变化曲线如下:
从中可以看出,LDA模型在N数量较小时候表现很差,但随着N的增加,其表现超过了ATM和ATM+fictious
Author模型,其原因在于当LDA对一个新文档,没有搞清其文档-主题分布之前,其预测准确率很低,然而当拿了N个词汇,进而搞清楚这个文档的文档-主题分布,并用其做指导结合主题-词汇分布,那么其预测准确率将大大提高。相反,由于ATM模型中,我们不可能直接获取文档-主题分布,无论N取什么值,所以其预测准确率随着N的提升,将变得低于LDA。
ATOT:
这个模型相对于ATM和LDA,名气要小一些,但也可以作为学习材料,具体细节不再多说,因为只要理解了ATM的困惑度,再理解这个就顺畅很多。
参考文献:
[1]Parameter estimation in text analysis
[2]learning author-topic models from text corpora
[3]作者主题演化模型及其在研究兴趣演化分析中的应用
最后
以上就是狂野薯片为你收集整理的lda主题模型困惑度_Perplexity(困惑度)详解的全部内容,希望文章能够帮你解决lda主题模型困惑度_Perplexity(困惑度)详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复