LDA-Latent Dirichlet Allocation 学习笔记_latent dirichlet allocation 翻译-程序员宅基地

技术标签: 机器学习  Machine learning  Math  

以下内容主要基于《Latent Dirichlet Allocation,JMLR-2003一文,另加入了一些自己的理解,刚开始了解,有不对的还请各位指正。

 

LDA-Latent Dirichlet Allocation

JMLR-2003

 

摘要:本文讨论的LDA是对于离散数据集,如文本集,的一种生成式概率模型。LDA是一个三层的贝叶斯分层模型,将数据集中每一项,如每个文本,建模为某些未知的topic组成的集合的混合。每个topic又建模为某种混合概率分布。在文本建模中,话题的概率就提供了每个doc的具体表示。

个人理解:1.生成式模型,就好像我们要写出一篇文章(生成一篇文档),我们在下笔的时候脑袋里要先有这个文章的主题,然后在这个主题下再构建合适的词来组成文档。这样的过程就是这篇文章里‘生成’的过程。

2.doc->mixture of topics; 每个topic->mixture of words,文中的Dirichlet分布也体现在这个分布的分布上,原因后续讲解。

 

基础知识,如果都懂,可以跳过:

一、tf-idf scheme

tf-idf scheme: 首先选中一个基字典basic vocabulary, 然后对每一个文档doc,查找每个词word的出现次数,然后进行归一化,最后得到的表示形式为一个term-by-document的矩阵X,而将任意长度的doc表示成固定长度的一个向量,而所有的doc则可以用一个list,也就是矩阵X,来表示:

                                          doc_1      doc _2     …    doc _ N

word_1          *     *           …    *

word _2         *     xij         …    *

……                     … …

word _|V|              *     *           …    *

其中xij=#num of word_i / # num of total words in doc_j .

 

优点:可以简明易懂的将每个文档表示出来,而且无论每个文档本身长度如何,都缩减为固定长度(|V|)的向量;

缺点1.如果选择的词典vocabulary比较大,那这个表示矩阵的维度也会比较大,而且其list的长度会随着库中文本数目的增加而增加;2.另外,这样的表示没有考虑文档与文档之间以及各文档内部的结构信息。

个人理解:除以上缺点外,这种方法的相似性判断建立的基础是认为文档之间重复的词语越多越相似,然而有一些属于语义层的相关,而并非表面的词语的相关,例如‘电脑’与‘微型计算机’这两个词并不相同,但意思相同,这时候如果用tf-idf方法通过统计单词个数比较相似性的方法,效果就不会太好。而主题模型就解决了这个问题,它的相关性体现在隐藏的主题的相关性上,而不是仅仅由表面的词语的重复度来决定。,如下图所示(摘自Thomas Huffman_ppt)。

LDA-Latent <wbr>Dirichlet <wbr>Allocation <wbr>学习笔记

二、LSI-Latent Semantic Indexing

针对缺点1LSI1990)将矩阵X进行奇异值分解,然后只取一部分作为其特征,此过程其实就相当于对X进行pca降维。将原始的向量转化到一个低维的隐含语义空间中,而保留下来的维度(根据奇异值大小决定)所对应的奇异值就对应了每个‘隐含语义’的权重,去掉的那些维度就相当于把那些不重要的‘隐含语义’的权重赋值为0.

LSI的作者Deerwester称由LSI得到的特征能够捕获一些基本的语义概念,例如同义词等。个人理解,这是由pca的性质决定的,。

LSI如其名字Latent Semantic Indexing, 旨在在词频矩阵X的基础上找出latent semantic,潜藏的语义信息。

其缺点是:不能解决多义词问题;

个人理解:这种方法就像词包模型一样,有一定的道理,但没有明确化,不像概率模型一样具体化。原文中说‘Given a generative model of text, however, it is not clear why one should adopt the LSI methodology’,个人觉得就是说他的理论基础不够明白,所以后续推出PLSI,就是能够从数学上,从理论上具有严格意义的说明是怎么回事,到底是为什么有效,又怎么得出理论解。

 

三、pLSI-probabilistic LSI



(pLSI图模型表示)

 

pLSI如上图,其中D,Z,W分别表示文档doc,主题topic,和单词word,在pLSI中对每一个都进行了建模,从文档到主题,建模为混合模型,从主题到单词也是一个混合模型,每个单词都是从这个混合模型中抽取出来的,不过在pLSI中每个混合模型的成分都是multinomial分布,根据上图,其中后验概率可以表示为:

p(z_k|d,w)=p(w|z_k)p(z_k|d)/sum_l(p(w|z_l)p(z_l|d))

EM算法可以求解出各成分的参数。

 

个人理解:1.pLSI中,每个doc已经可以有多个topic,每个topic出现的概率不等,这一点在LDA中也有。只不过LDApLSI多了一层。

2.上述混合模型的理解:类比于混合高斯模型一样,在混合高斯模型GMM中,是由多个高斯分布混合mixture而成的,在这里,每个混合模型的分量不是高斯分布,而是multinomial分布-多项式分布而已,而且区别于普通GMM,这里是有两层结构的,每一层都是一个混合模型,doc->topic层是一个混合模型,topic->word层也是一个混合模型,每个混合成分都是一个多项式分布,然后每个混合模型中包含了各个成分本身的参数和各个成分的权重的参数。

2.从上面这个图可以看出在pLSI中已经有了topic的概念,而且对于文档-主题和主题-单词两个层面都进行了建模(混合模型),但是也可以看出这个模型是对每一个文档集的,每一个文档集都对应着模型的一堆参数,如果新来一个文档(不在原来的训练集里),就没法处理。而LDA就可以不仅对已有的文本进行估计,也会对其他新的相似的文本给一个较高的probability。(注:在pLSI模型中,假设有ktopicvocabulary长度为V,对于这ktopicMmixture,那总共有kV+kM个参数,这个数目是随着M的增加而增加的,当文本集中文档数目太大时就会overfitting)。

3.每个文档的表示就是一个list,其中的每个number表示了每个topic在其中的比例(mixing proportions)。这种表示,当文本集很大时,仍然会有很长的一个list

      

四、LDA-latent dirichlet allocation



LDA的图模型表示)



然后,由其概率模型图可以比较容易的得到模型如下:



推断

计算后验概率:


 

似然函数


 

这个式子中对于betaaplha都有指数幂而相互耦合,两个参数求导后都不能消掉,因此没办法直接用最大似然或者em求解,这时候引入变分推断(variational inference)。变分推断就是为了顾及后验分布,在无法直接对似然函数求解的情况下寻找一个似然函数的下界。然后利用EM的思想进行迭代,让这个下界逐次增大,达到最后收敛。

 

       针对pLSI的缺陷,LDA很大的一个特点是将doc->topic这一层的mixture weights作为是一个k-d的随机变量,而不是像pLSI一样作为直接与训练集中的每个doc相关联的参数集合。就是原文中的theta作为一个随机变量。对于一个有ktopic的模型来说,他总共有k+kV个参数(alphak个参数,betakV个参数),与训练集中的文档数目M无关。

 

基础:无论是LSI,PLSI还是LDA都有一个假设,就是无序性假设(exchangeability),即认为文档中的word的出现位置先后没有关系,文档集中的各个doc的位置也不计较先后关系。

       LDA中,文档中topic的分布取为multinomial分布,其先验取为multinomial分布的共轭先验-dirichlet分布;而每个topicword的分布也取为multinomial分布,其先验也取其共轭先验-dirichlet分布。

       参考网址1,关于LDA中各个分布的一个通俗解释如下:“我们可以假想有一位大作家,比如莫言,他现在要写m篇文章,一共涉及了KTopic,每个Topic下的词分布为一个从参数为http://latex.codecogs.com/gif.latex?\vec{\beta}Dirichlet先验分布中sample出来的Multinomial分布(注意词典由term构成,每篇文章由word构成,前者不能重复,后者可以重复)。对于每篇文章,他首先会从一个泊松分布中sample一个值作为文章长度,再从一个参数为http://latex.codecogs.com/gif.latex?\vec{\alpha}Dirichlet先验分布中sample出一个Multinomial分布作为该文章里面出现每个Topic下词的概率;当他想写某篇文章中的第n个词的时候,首先从该文章中出现每个Topic下词的Multinomial分布中sample一个Topic,然后再在这个Topic对应的词的Multinomial分布中sample一个词作为他要写的词。不断重复这个随机生成过程,直到他把m篇文章全部写完。这就是LDA的一个形象通俗的解释。”


推断:后验概率p(theta,z|alpha,beta,w)中theta与beta有指数幂不能直接求解,为此得用近似推断的方法,文章中用的是变分推断。变分推断就是要找一个与原来的不能直接求解的后验概率等价或近似的函数q,这个函数要好解,一般最简单直接的方法就是假设q中各个参数独立,形成q=product_n(q_n),这篇文章中选取的q为:



对应的图模型为

,也就是将原来的图模型中的w节点去掉并且去掉了theta 与z之间的边而得到近似。

在得到近似函数后,就通过求解最优近似函数q的参数来得到原后验的参数。



本文来自于新浪博客上的一篇文章,该地址为:http://blog.sina.com.cn/s/blog_5033f3b40101flbj.html


杂七杂八说了这么多,下面介绍几个参考资料:

其他值得参考的资料:

1.http://blog.csdn.net/yangliuy/article/details/8330640,这里是一个系列,总共有5篇文章,从PLSAemLDA都有介绍,其中有pLSA的详细实现过程;

2. http://hi.baidu.com/hehehehello/item/677f9446b729a72210ee1e8b pLSILDA详细的区别;

3. http://hi.baidu.com/linecong/item/8c115b196232147a7b5f2598  

4.百度搜索官方博客:http://stblog.baidu-tech.com/?p=1190

5.丕子博文

6.关于LSA中用到的SVD奇异值分解可以参考之前转的一篇文章:  http://blog.sina.com.cn/s/blog_5033f3b40101a61t.html

7.plsa http://moonwith.blog.163.com/blog/static/12368689120099220115495/

其他资源:以下摘自网络:

 (1)D. M. Blei, et al., "Latent Dirichlet allocation," Journal of Machine Learning Research, vol. 3, pp. 993-1022, 2003.

(2)T. L. Griffiths and M. Steyvers, "Finding scientific topics," Proceedings of the National Academy of Sciences, vol. 101, pp. 5228-5235, 2004.

(3)D. M. Blei, et al., "Hierarchical Topic Models and the Nested Chinese Restaurant Process," NIPS, 2003.
(4)Blei的LDA视频教程:http://videolectures.net/mlss09uk_blei_tm/
(5)Teh的关于Dirichlet Processes的视频教程:http://videolectures.net/mlss07_teh_dp/
(6)Blei的毕业论文:http://www.cs.princeton.edu/~blei/papers/Blei2004.pdf
(7)Jordan的报告:http://www.icms.org.uk/downloads/mixtures/jordan_talk.pdf
(8)G. Heinrich, "Parameter Estimation for Text Analysis," http://www.arbylon.net/publications/text-est.pdf
基础知识:
(1)P. Johnson and M. Beverlin, “Beta Distribution,” http://pj.freefaculty.org/ps707/Distributions/Beta.pdf
(2)M. Beverlin and P. Johnson, “The Dirichlet Family,” http://pj.freefaculty.org/stat/Distributions/Dirichlet.pdf
(3)P. Johnson, “Conjugate Prior and Mixture Distributions”, http://pj.freefaculty.org/stat/TimeSeries/ConjugateDistributions.pdf
(4)P.J. Green, “Colouring and Breaking Sticks:Random Distributions and Heterogeneous Clustering”, http://www.maths.bris.ac.uk/~mapjg/papers/GreenCDP.pdf
(5)Y. W. Teh, "Dirichlet Process", http://www.gatsby.ucl.ac.uk/~ywteh/research/npbayes/dp.pdf
(6)Y. W. Teh and M. I. Jordan, "Hierarchical Bayesian Nonparametric Models with Applications,”
http://www.stat.berkeley.edu/tech-reports/770.pdf
(7)T. P. Minka, "Estimating a Dirichlet Distribution", http://research.microsoft.com/en-us/um/people/minka/papers/dirichlet/minka-dirichlet.pdf
(8)北邮论坛的LDA导读:[导读]文本处理、图像标注中的一篇重要论文Latent Dirichlet Allocation,http://bbs.byr.edu.cn/article/PR_AI/2530?p=1
(9)Zhou Li的LDA Note:http://lsa-lda.googlecode.com/files/Latent Dirichlet Allocation note.pdf
(10)C. M. Bishop, “Pattern Recognition And Machine Learning,” Springer, 2006.
代码:
(1)Blei的LDA代码(C):http://www.cs.princeton.edu/~blei/lda-c/index.html
(2)BLei的HLDA代码(C):http://www.cs.princeton.edu/~blei/downloads/hlda-c.tgz
(3)Gibbs LDA(C++):http://gibbslda.sourceforge.net/
(4)Delta LDA(Python):http://pages.cs.wisc.edu/~andrzeje/research/deltaLDA.tgz
(5)Griffiths和Steyvers的Topic Modeling工具箱:http://psiexp.ss.uci.edu/research/programs_data/toolbox.htm
(6)LDA(Java):http://www.arbylon.net/projects/
(7)Mochihashi的LDA(C,Matlab):http://chasen.org/~daiti-m/dist/lda/
(8)Chua的LDA(C#):http://www.mysmu.edu/phdis2009/freddy.chua.2009/programs/lda.zip
(9)Chua的HLDA(C#):http://www.mysmu.edu/phdis2009/freddy.chua.2009/programs/hlda.zip
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aihali/article/details/45048843

智能推荐

蚂蚁实时视频通话技术和实践-程序员宅基地

文章浏览阅读310次。小叽导读:从电影、电视到电脑、手机,人们获取视频信息的方式越来越方便、快捷。时下较热门的视频通话、互动直播时长占据了当下年轻人很大一部分的生活时间,可见实时视频技术在生活中的重要性。今天,蚂蚁金服高级技术专家樟松将为我们揭秘“蚂蚁实时视频通话系统”的技术架构及特点,讲述实时视频通话的底层技术以及其运用。引子直播作为一种品牌推广、业务拓展的便捷运营工..._蚂蚁金服 音视频

本人博客排名(2015年10月1日:第67408名)-程序员宅基地

文章浏览阅读56次。本人博客排名目标:进入前3000名2015年10月1日积分 - 500排名 - 67408转载于:https://www.cnblogs.com/hfchenchao/p/4850610.html

Ubuntu如何删除非空文件夹-程序员宅基地

文章浏览阅读1.4k次。rm -rf dir_name转载于:https://www.cnblogs.com/zdj8023/p/10810712.html_ubuntu删除整个非空文件夹

jsp数据库中文乱码处理_jsp数据库中检索中文乱码的问题-程序员宅基地

文章浏览阅读1k次。从服务器中JSP文件到浏览器显示页面的步骤为:服务器JSP------>>(告诉服务器JSP文件本身编码)服务器Servlet------>>(告诉out输出流,输出内容的类型是html,并且内容编码是GBK)服务器HTML文件------>>(告诉浏览器,接受到的这个文件是html类型的,并且文件内容的编码是GBK)浏览器HTML文件------>>浏览器解析并显_jsp数据库中检索中文乱码的问题

Redis事务失效的三种场景_redis事务失败怎么处理-程序员宅基地

文章浏览阅读2.2k次。如果发生这种类型的错误,Redis将向客户端返回包含错误提示信息的响应,同时Redis会清空队列中的命令并取消事务。watch 监控 key 所起的作用实际上是一个乐观锁,它所监控的是在事务期间有没有其他客户端对所监控的值进行修改。在事务提交之前,客户端执行的命令缓存(队列)失败,比如命令的语法错误(命令参数个数错误,不支持的命令等等)。事务提交后开始顺序执行命令,之前缓存在队列中的命令有可能执行失败。由于乐观锁失败,事务提交时将丢弃之前缓存的所有命令序列。最后发现事务里语句失效。最后发现事务里语句失效。_redis事务失败怎么处理

Shell脚本中获取uci配置文件参数_config_foreach-程序员宅基地

文章浏览阅读3.3k次。/lib/function.sh函数其中定义的主要函数功能如下:_config_foreach

随便推点

记录安装tidyverse包遇到的问题_安装tidyverse包冲突-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏12次。说明:电脑是双系统,在ubuntu下进行的安装ggplot2包没什么问题直接在console输入:install.package(“ggplot2”)然后加载:library(ggplot2)安装tidyverse时出现了问题:1.无法打开tar包2.找不到 libxml2-dev3.找不到libcurl、openssl一:更换镜像在RStudio任务栏找到 Tools..._安装tidyverse包冲突

centos默认安装python版本执行python报错_could not find platform independent libraries <pre-程序员宅基地

文章浏览阅读3.4k次。centos系统默认安装python2.7,运行python命令报错[root@pc site-packages]# pythonCould not find platform independent libraries <prefix>Could not find platform dependent libraries <exec_prefix>Consider setting $PYTHONHOME to <prefix>[:<exec_prefix&_could not find platform independent libraries

老胡的周刊(第092期)-程序员宅基地

文章浏览阅读900次。老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。???? 项目chathub[2]ChatHub 是款全能聊天机器人客户端:???? 在一个应用中使用不同的聊天机器人,目前支持 ChatGPT、新的 Bing Chat、Google Bard、Claude(通过 Poe)、Alpaca、Vi..._rubick与utool

【香橙派5】(已解决)nmcli设置完静态ip后ping不通_香橙派ping不通-程序员宅基地

文章浏览阅读638次。原因:发现是PC和开发板的掩码不同,PC是25,开发板是24。结局办法:address后面加个/24,然后重启就可以了。问题:nmcli设置完静态ip后ping不通。_香橙派ping不通

Html.ActionLink 添加样式[email protected] 点击后样式修改-程序员宅基地

文章浏览阅读3.7k次。正确 @Html.ActionLink("修改", "ModifyAdminUser", new { Id = item.Id },new { @class = "a_purse" })错误 @Html.ActionLink("修改", "ModifyAdminUser", new { Id = item.Id , @class = "a_purse" })[email protected] 点击后样式修改

计算机网络实验Cisco Packet Tracer使用_packet tracer sign in using one of the following o-程序员宅基地

文章浏览阅读1w次,点赞25次,收藏323次。Cisco Packet Tracer使用前言1)Cisco Packet Tracer简介2)下载安装一.Cisco Packet Tracer 实验1.直接连接两台 PC 构建 LAN前言我们先了解 VLSM、CIDR、RIP、OSPF、VLAN、STP、NAT 及 DHCP 等概念,以能够进行网络规划和配置。(可以参考博主前面的博客)1)Cisco Packet Tracer简介简介:Cisco Packet Tracer是Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计_packet tracer sign in using one of the following options

推荐文章

热门文章

相关标签