LDA背景资料
[https://zhuanlan.zhihu.com/p/30226687] LDA模型的前世今生
在文本挖掘中,有一项重要的工作就是分析和挖掘出文本中隐含的结构信息,而不依赖任何提前标注的信息。LDA(Latent Dirichlet Allocation)模型在过去十年里开启了一个主题模型领域。
LDA 的论文作者是戴维·布雷(David Blei)、吴恩达和迈克尔·乔丹(Michael Jordan)。这三位都是今天机器学习界炙手可热的人物。论文最早发表在 2002 年的神经信息处理系统大会(Neural Information Processing Systems,简称 NIPS)上,然后长文章(Long Paper)于 2003 年在机器学习顶级期刊《机器学习研究杂志》(Journal of Machine Learning Research)上发表。迄今为止,这篇论文已经有超过 1 万 9 千次的引用数,也成了机器学习史上的重要文献之一。
[ https://zhuanlan.zhihu.com/p/21377575] 关于LDA, pLSA, SVD, Word2Vec的一些看法
LDA从12年开始,经历了SparseLDA, AliasLDA, LightLDA, WarpLDA的发展道路,到了15年底,已经能非常快的学100万topic了,而且这个快是靠直接降低理论的时间复杂度实现的,代码写的更好只是起了辅助作用。
SparseLDA利用了如果topic很多,那么当模型快收敛时,一个word其实只会属于很少的topic,然后利用稀疏性来加速了算法。但这个算法有个致命的缺陷,就是初始化时,模型并不稀疏,因此迭代的前几轮会非常慢。当然充满智慧的群众发明了一堆奇技淫巧部分解决了这个问题。
AliasLDA是优化了Gibbs Sampling采样的时间复杂度,利用Alias Table让对K个topic采样的时间复杂度从O(K)降低到O(1)
LightLDA修改了采用的分布,把原来基于一个word doc在topic上联合分布的采样过程,改成了2个交替进行的独立采样过程,一个只依赖word,另一个只依赖doc。
WarpLDA做了更多的工程级别的优化,让LightLDA更快。
[http://blog.csdn.net/xianlingmao/article/details/7076165] 话题模型(topic model)的提出及发展历史
如果对目前出现的topic models进行分门别类作者认为topic models主要可以分为四大类:
无监督的、无层次结构的topic model 主要有: PLSA, LDA, Correlated Topic Model, PAM,Concept Topic Model等
无监督的、层次结构的topic model 主要有: HLDA, HDP,HPAM等
有监督的、无层次结构的topic model 主要有: S-LDA, Disc-LDA, MM-LDA, Author-Model, Labeled LDA, PLDA 等等
有监督的、层次结构的topic model 主要有: hLLDA, HSLDA
以上模型对应的文章名字,用google直接搜索即可得到,这里就不列出。下面对于每一类topic model,我都选择一个模型来进行介绍:
对于1) 上述已经介绍了LDA,所以就不介绍这类模型了;
对于2) 我想介绍HLDA(Hierarchical Latent Dirichlet Allocation) 模型
由于LDA产生出来的topic都是孤立的,topic之间没有关系,HLDA模型在LDA的基础上,试图建立topic之间的层次关系,同时考虑到LDA需要指定topic的数量作为参数,如果能自动决定topic的数量就比较理想了。为了自动发现决定topic的数量,HLDA用Chinese Restaurant Process去自动决定每一层的topic数量,然而需要指定topic层次的高度H(也就是有多少层的topic),同时它训练出来的层次结构是等高的,都是H这么高。至于怎么产生文档的每个词,这个和LDA都是一样的。
对于3) 我想介绍Labeled LDA (Labeled Latent Dirichlet Allocation) 模型
这个模型最大的好处是能够训练出来带标签的topic,因为在以前的topic model训练出来的topic都是分布,怎么赋予一个标签给这些topic则是很难的一个问题。
Labeled LDA与LDA最大的不同是: LDA是在所有topics上为某一个词进行选择某个topic,而labeled LDA则是只从文档相关的label对应的topic中去选择,其余和LDA都是一样的。
对于4) 我想介绍hLLDA (hierarchical Labeled Latent Dirichlet Allocation)模型
这个模型最大的好处就是在Labeled Latent Dirichlet Allocation模型的基础上扩展到层次结构,其思想也是很简单的,认为一个文档只是由这个文档对应的层次label所产生,具体学习和推断的时候几乎和Labeled Latent Dirichlet Allocation模型一样。
[https://github.com/baidu/Familia/wiki] Familia 说明文档
由于LDA中采用文档内的Bag-of-Words假设,词与词之间的位置信息是被忽略的。在很多工业界场景中,我们往往需要限制某些位置相近的词产生自同一主题,通过SentenceLDA能很好地满足这个需求。
SentenceLDA假设同一个句子里的词产生自同一主题,对句子内的词进行了进一步的建模,能捕捉到更加细粒度的共现关系。
但是LDA产生的主题往往被高频词占据,这种现象导致低频词在实际应用中的作用非常有限。
Topical Word Embedding (TWE) 利用LDA训练获得的主题为词向量的训练提供补充信息,进而得到词和主题的向量表示。有鉴于向量表示可以较好地建模低频词的语义信息,通过利用词和主题的向量表示,我们可以更好地捕捉每个主题下的低频词的语义信息,提升下游应用的效果。
主题模型在工业界的应用范式可以分为两类:语义表示和语义匹配。
[http://blog.csdn.net/hero_fantao/article/details/70176839] LDA工程化之快速采样算法
标准的Gibbs 采样LDA相关介绍, 采样时间复杂度是O(K),K表示主题数(不同主题有不同命中概率,需要计算累计概率归一化项):
Sparse LDA利用稀疏性的特征,相对标准Gibbs LDA 提升了几十倍速度。现实中一般文档只会包含少数若干个主题,一个词也是参与到少数几个主题中。基于这种假设,Sparse LDA 的时间复杂度是O(Kd + Kw), 其中Kd是表示文档的主题数(稀疏),Kw表示词的主题数 (稀疏)
Alias LDA 时间复杂度是O(Kd),主要是从pw分布采样时间复杂度是O(Kd),而才qw分布采样时间复杂度是O(1)。
把主题采样概率分布分解成两部分,两部分都可以采用Alias table 和Metropolis Hastings 方法进行O(1)时间复杂度采样呢? Light LDA就是试图解决这个问题。
LDA背景资料的更多相关文章
- 深度强化学习资料(视频+PPT+PDF下载)
https://blog.csdn.net/Mbx8X9u/article/details/80780459 课程主页:http://rll.berkeley.edu/deeprlcourse/ 所有 ...
- Spark MLlib LDA 基于GraphX实现原理及源代码分析
LDA背景 LDA(隐含狄利克雷分布)是一个主题聚类模型,是当前主题聚类领域最火.最有力的模型之中的一个,它能通过多轮迭代把特征向量集合按主题分类.眼下,广泛运用在文本主题聚类中. LDA的开源实现有 ...
- LDA线性分析推广到多分类
感谢皮果提的文章: http://blog.csdn.net/itplus/article/details/12038441 http://blog.csdn.net/itplus/article 皮 ...
- 《Spark 官方文档》机器学习库(MLlib)指南
spark-2.0.2 机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib由一些通用的学习算法和工具组成,包括分 ...
- iOS-推送,证书申请,本地推送
介绍一点点背景资料 众所周知,使用推送通知是一个很棒的.给应用添加实时消息通知的方式.这样做的结局是,开发者和用户之间,彼此永远保持着一种令人愉悦的亲密关系. 然而不幸的是,iOS的推送通知并非那么容 ...
- Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx
Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...
- [翻译]利用顶点位移的VR畸变校正
文章英文原网址: http://www.gamasutra.com/blogs/BrianKehrer/20160125/264161/VR_Distortion_Correction_using_V ...
- reflow和repaint(摘录自张鑫旭的翻译)
//正文开始 关于回流(reflows)与重绘(repaints),我已经在twitter和delicious上发布,但是并没有在演讲中提到或是以文章形式发布. 第一次让我开始思考关于回流(reflo ...
- WebService入门案例
关于WebService的作用和好处,大家应该都了解.但如何在Asp.Net中添加Web Service等问题一直是新手朋友的一大难题.鉴于网上没有一个像样的实际案例,特将课程设计中运用到的WebSe ...
随机推荐
- ubuntu 16.04 搭建git小型服务器
最近搭建了一个小型git服务器,由于网上资料鱼龙混杂,让我着实踩了不少地雷.做一个记录,以备不时之需. 一 搞清楚你的需求? 假如你要搭建的服务器只供几十个人使用,并且没有专门的网管服务的话,切记,一 ...
- 机器学习基石笔记:05 Training versus Testing
train:A根据给定训练集D在H中选出g,使得Ein(g)约等于0: test:g在整个输入空间X上的表现要约等于在训练集D上的表现,使得Eout(g)约等于Ein(g). 如果|H|小,更易保证t ...
- LeetCode:94_Binary Tree Inorder Traversal | 二叉树中序遍历 | Medium
题目:Binary Tree Inorder Traversal 二叉树的中序遍历,和前序.中序一样的处理方式,代码见下: struct TreeNode { int val; TreeNode* l ...
- mysql之CREATE DATABASE Syntax(创建数据库)
一:语法 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name #SCHEMA是DATABASE的同义词 [IF NOT EXITTS]可防止建库是已经 ...
- [EXP]Drupal < 8.5.11 / < 8.6.10 - RESTful Web Services unserialize() Remote Command Execution (Metasploit)
## # This module requires Metasploit: https://metasploit.com/download # Current source: https://gith ...
- Python必会的单元测试框架 —— unittest
用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库——unittest. unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那 ...
- Android多线程编程<一>Android中启动子线程的方法
我们知道在Android中,要更新UI只能在UI主线程去更新,而不允许在子线程直接去操作UI,但是很多时候,很多耗时的工作都交给子线程去实现,当子线程执行完这些耗时的工作后,我们希望去修改 ...
- java-Timer类使用方法
Timer: public Timer()创建一个新计时器.相关的线程不 作为守护程序运行. 方法摘要: void schedule(TimerTask task, Date time) ...
- mysql遇见contains nonaggregated column 'information_schema.PROFILING.SEQ'异常
报错如下:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggrega ...
- MongoDB-副本集搭建与管理
目录 MongoDB 副本集 一.副本集概念 二.副本集部署 三 .副本集维护 四.注意事项 MongoDB 副本集 一.副本集概念 单节点的 MongoDB 在数据的安全和冗余方面是比较低的,在生产 ...