LDA主题模型原文解读
#################LSA和LSI(start)###################
根据wikipedia:
https://en.wikipedia.org/wiki/Latent_semantic_analysis
可以知道文中提到的LSI就是LSA
通常称为LSA,因为维基百科中提到:it is sometimes called latent semantic indexing (LSI).LSA的文档里面則以称为LSI为主.
所以百度上的(包括本文在內)LSA就是LSI,LSI就是LSA
#################LSA和LSI(end)###################\
##################LDA发展史(start)#####################
原文:《Latent Dirichlet Allocation》
原文作者的代码:https://github.com/blei-lab/lda-c
Dirichlet分布是一种多维的β\betaβ分布
主題模型演變順序:LSA->pLSA->LDA
目的:對文檔主題進行聚類,这里可以理解为对几个.txt文本聚类,一个.txt文本在该算法中,被处理为一个无序的词序列
论文分别是:
LSA:
《Indexing by latent semantic analysis》-1990
pLSA:
《Probabilistic Latent Semantic Analysis》 1999
LDA:
《Latent Dirichlet Allocation》-2003
注意:
必須從LSA開始理解,否則看網上各路博客,
每個人理解程度不同,還有亂寫的,是看不懂的。
##################发展史(end)#####################\
################解释文章中的一些词汇(start)################################\
首先解釋为啥取名叫Latent Dirichlet allocation:
因为这个事情是以前发生过类似的,过去的先验概率受到现在类似的事件的影响,所以说是“潜在的”(latent),我们常常说“横穿马路有潜在的危险”,是因为知道不看红绿灯很可能会车祸,如果我们再来一次,那么显然会增加“乱穿马路会车祸”这个事情的概率.
概率具体增加多少?我们就要用到“Dirichlet Distribution”,所以LDALDALDA整个名字中只有“Dirichlet”这个词语带有严谨的数学含义,剩余两个词是为了形象起见,作者加上去的。
"allocation"这个词语可以理解为,现在发生的类似的事件会allocate到概率计算的分子和分母中。
singular value decomposition:SVD分解,效果上类似于PCA之类的降维技术
document:就是一个txt文件,也就是一个词序列
corpus:包含一堆txt文件的文件夹,也就是很多个词序列
information Retrieval:信息检索,你可以理解为在数据库里面搜东西
exchangeability:这个是在提词袋模型的时候提出来的,意思是在对文档进行建模时,假设词的顺序是可以被忽略的,也就是說詞袋模型中的不同詞語之間的順序是exchangeable(可交換的).
https://zhuanlan.zhihu.com/p/32829048
TF⋅IDF=在某一类中词条w出现的次数该类中所有的词条数目⋅log语料库的文档总数包含词条w的文档数+1TF·IDF=\frac{在某一类中词条w出现的次数}{该类中所有的词条数目}·log\frac{语料库的文档总数}{包含词条w的文档数+1}TF⋅IDF=该类中所有的词条数目在某一类中词条w出现的次数⋅log包含词条w的文档数+1语料库的文档总数
注意上面的log在不同的開源包中使用了不同的底數,sklearn使用的就是ln來計算
simplex:就是一个理论层,不是一个很严谨的术语,就是虚晃一指。
比如说:“我要去吃饭。”你要去哪里吃饭?你要吃什么?你都没讲清楚,所以这里的“吃饭”就是虚晃一指。
################解释文章中的一些词汇(start)################################
##########################
下面开始分析论文《Latent Dirichlet Allocation》-2003
该文主要内容如下:
文章结构={1.简介2.符号与术语(其实不全,有些是文章后面才提到的)3.LDA主体4.介绍过往的主题模型(熟悉LSI和PLSI的可以跳过)5.变分EM算法6.举例7.应用8.讨论文章结构=\left\{ \begin{aligned} 1.简介 \\ 2.符号与术语(其实不全,有些是文章后面才提到的) \\ 3.LDA主体\\ 4.介绍过往的主题模型(熟悉LSI和PLSI的可以跳过)\\ 5.变分EM算法\\ 6.举例\\ 7.应用\\ 8.讨论 \end{aligned} \right.文章结构=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧1.简介2.符号与术语(其实不全,有些是文章后面才提到的)3.LDA主体4.介绍过往的主题模型(熟悉LSI和PLSI的可以跳过)5.变分EM算法6.举例7.应用8.讨论
由上可知:
整篇文章的重点是第2,3,5部分,下面依次讲解:
--------Section2开始-----------------Section\ 2开始-----------------Section 2开始---------
w→={w1,w2,⋅⋅⋅,wn}\overrightarrow{w}=\{w_1,w_2,···,w_n\}w={w1,w2,⋅⋅⋅,wn}
w→\overrightarrow{w}w表示一篇文档
D={w1→,w2→,⋅⋅⋅,wm→}D=\{\overrightarrow{w_1},\overrightarrow{w_2},···,\overrightarrow{w_m}\}D={w1,w2,⋅⋅⋅,wm}
词典的下标是:
{1,⋅⋅⋅,V}\{1,···,V\}{1,⋅⋅⋅,V}
---------Section2结束------------------Section\ 2结束------------------Section 2结束---------
---------Section3开始------------------Section\ 3开始------------------Section 3开始---------
算法大意如下:
1.Choose N~Poisson(ξ\xiξ)
2.Choose θ\thetaθ~Dir(α\alphaα)
3.For each of the N words wnw_nwn:
(a)Choose a topic znz_nzn~Multinomial(θ\thetaθ)
(b)Choose a word wnw_nwn from p(wn∣zn,β)p(w_n|z_n,\beta)p(wn∣zn,β),a multinomial probability conditioned on the topic znz_nzn
然后文章介绍了三个假设,对于每个假设,我们先抄引文,然后解释是什么意思.
第一个假设:
First, the dimensionality k of the Dirichlet distribution (and thus the dimensionality
of the topic variable z) is assumed known and fixed.
翻译过来就是:假设文章聚类成几类是知道的。
讲人话:其实我们也不知道要聚类成几类,也就是k等于几我们也不知道,你随便设一个吧。
可以类比想象下,kmeans我们调包前总是需要设定我们要聚类成几类。
第二个假设:
Second, the word probabilities are parameter-
ized by a k×V matrix βββ where βijβ_{ij}βij =p(wj=1∣zi=1)p(w_j=1|z_i=1)p(wj=1∣zi=1), which for now we treat as a fixed quantity
that is to be estimated.
什么意思呢?文章中某个"词"的概率被一个矩阵βk⋅V\beta_{k·V}βk⋅V给参数化了。
这里的k是聚类中心,这里的V是上面提到的某个词在词典中的的下标上限
我们可以回忆下,psla在进行svd分解时,最右侧的一个矩阵也是k·V维。
第三个假设:
Finally, the Poisson assumption is not critical to anything that follows and
more realistic document length distributions can be used as needed.
讲人话:作者自己也不知道为啥服从泊松分布,所以找借口说"is not critical to",意思是:他自己也不懂,但是不好意思承认自己讲话不严谨。
下面开始介绍解释LDA的公式都是啥意思.
p(θ∣α)=(∑i=1kαi)∏i=1kΓ(αi)θ1α1−1⋅⋅⋅θkαk−1(1)p(\theta|\alpha)=\frac{(\sum_{i=1}^k\alpha_i)}{∏_{i=1}^k\Gamma(\alpha_i)}\theta_1^{\alpha_1-1}···\theta_k^{\alpha_k-1} (1)p(θ∣α)=∏i=1kΓ(αi)(∑i=1kαi)θ1α1−1⋅⋅⋅θkαk−1(1)
这个东西是Dirichlet分布(β\betaβ分布的多维形式)的表达式,
注意,这里的θ\thetaθ本身就是一个概率,所以这个式子是在表达“抽中某个文档的概率值”的概率大小。网上有个精简的说法,叫:概率的概率。
对比θ\thetaθ,我们再来回忆一下plsa在svd分解成3个矩阵后,最左侧的一个矩阵是什么?P(wi∣zk)P(w_i|z_k)P(wi∣zk)
☆☆☆
另外注意,这个p(θ∣α)p(\theta|\alpha)p(θ∣α)不是条件概率,这里的“|”只是表达后面有一个参数,不要套用P(AB)=P(A)·P(B)来试图推导。
这个东西需要非常注意,否则后面的公式就没法看了。
那么什么时候“|”表示条件概率?
后面会一一指出。
☆☆☆
这里的Γ\GammaΓ念作"Gamma"
而γ\gammaγ念作"gamma"两者发音一致,都是希腊字母.
计算实例:
Γ(n+1)=n!\Gamma(n+1)=n!Γ(n+1)=n!
看完式(1),来看式(2):
p(θ,z,w∣α,β)=p(θ∣α)∏n=1Np(zn∣θ)p(wn∣zn,β)p(\theta,z,w|\alpha,\beta)=p(\theta|\alpha)∏_{n=1}^Np(z_n|\theta)p(w_n|z_n,\beta)p(θ,z,w∣α,β)=p(θ∣α)n=1∏Np(zn∣θ)p(wn∣zn,β)
注意这个式子中:
p(θ,z,w∣α,β)p(\theta,z,w|\alpha,\beta)p(θ,z,w∣α,β)非条件概率
p(θ∣α)p(\theta|\alpha)p(θ∣α)非条件概率,根据过往经验,选择主题分布向量θ\thetaθ的概率
p(zn∣θ)p(z_n|\theta)p(zn∣θ)是条件概率,根据文章的概率分布选择主题znz_nzn的概率
p(wn∣zn,β)p(w_n|z_n,\beta)p(wn∣zn,β)是条件概率,根据第znz_nzn个主题中选择wnw_nwn的概率
条件概率的意思就是"|“右侧的因子是事件,可以通过乘以另外一个概率来抵消。
非条件概率的意思就是”|"右侧的因子是参数,不能通过乘以另外一个概率来抵消。
由于该论文认为:一篇文章是包含多个主题的。
所以θ\thetaθ是k维度的,就是这个k维度的向量中,每个维度塞进去一个概率值,这个概率是k个主题中,其中一个主题的分布概率大小。
再来回顾下Dirichlet函数,我们知道,β\betaβ分布只有一个维度输入,得到一个函数值,而Dirichlet函数相当于多维的β\betaβ分布,也就是说,在一篇文章中,k个主题的分布概率被输入Dirichlet函数,得到这个“k维主题分布概率”向量的概率值.
☆☆☆
整个式子什么意思呢?
式(2)的等式右边=选择某种主题分布的概率·∏∏∏·根据主题分布选择某个主题的概率·根据某个主题选择某个词的概率
☆☆☆
所以这个模型在模仿人写文章时的顺序。
“主题”的意思:某个文章中的“段落大意”
“根据主题分布选择某个主题的概率”啥意思呢:
举例:
一篇文章怎么写呢?
第一段写,爸爸平时怎么怎么滴
第二段写,妈妈怎么怎么滴
第三段写,爸爸和妈妈怎么认识滴
选择某个主题就是这篇文章的每一段的“段落大意”是啥。
再次注意,这个论文不是“把文章归类到某个主题”,而是任何一个文章都具备“很多个主题”
一句话解释啥意思,式(2)计算的是:
选择某种主题分布然后最终生成整篇文章的概率。
注意这个式子其实是不合理的。
由于这个式子的不合理性,也导致了后面变分EM算法的出现,什么地方不合理呢?这个α\alphaα和β\betaβ其实是有关联的,
文章中的专业说法:α\alphaα和β\betaβ之间有耦合性,
工科数学的说法:“α\alphaα和β\betaβ互相不独立”,
说人话就是:“α\alphaα和β\betaβ有一腿”
“变分EM”算法啥意思,就是把α\alphaα和β\betaβ撇清关系后,然后使用EM算法迭代收敛。
**关键性问题来了,这个论文假设一个文章(论文中,document定义为一个word sequence)包含多个主题,那说好的聚类呢?如何把这个原理用来文章内容聚类?
回到Dirichlet分布,上面提到,这个式子的目的是计算“根据某个主题分布生成某个文档的概率”
也就是说,目标函数是求得,哪个主题分布,能生成某个文章的概率最大,我们就认为,这个文章的各个段落大意,满足这个主题分布。
这样说在理解上又进一步了,但是依然不清晰,回到式(2),其中有一项是:
p(wn∣zn,β)p(w_n|z_n,\beta)p(wn∣zn,β),
这个意思是:
根据"假设满足"的主题znz_nzn,我们从训练集中选择一个单词wnw_nwn,来计算概率p(wn∣zn,β)p(w_n|z_n,\beta)p(wn∣zn,β)
如果确定最终得到的p(θ,z∣w,α,β)p(\theta,z|w,\alpha,\beta)p(θ,z∣w,α,β)是最大的,那么我们就认为这个假设的“主题分布θ\thetaθ”就是我们想要的聚类分布,聚类算法结束。
**
怎么理解文章中给出的示意图呢?
图中方框外侧就是概率P中“|”的右侧
图中方框内侧就是概率P中“|”的左侧,
例如P(θ∣α)P(\theta|\alpha)P(θ∣α)中,
α\alphaα在“|”的右侧,对应图中的方框外侧
θ\thetaθ在“|”的左侧,对应图中的方框内侧
---------Section3结束------------------Section\ 3结束------------------Section 3结束---------
---------Section5开始------------------Section\ 5开始------------------Section 5开始---------
根据上面的那个模型图片,我们大概也能想到α\alphaα和β\betaβ是有关联的,作者在论文的这个部分着重处理这个问题。
这个"变分EM"算法想要完全看懂的话,需要把论文后面的Appendix中所有公式推导一遍,没必要,这里就说个大概。
算法大意是:
试图让α\alphaα与β\betaβ撇清关系,然后使用EM算法。
假定所有的隐变量(θ,α,β\theta,\alpha,\betaθ,α,β)都是服从各自的独立分布的,然后搞出来一个KL散度,KL散度的意思是希望近似处理的前后差别不要太大。
所以由原来的p(θ,z∣w,α,β)p(\theta,z|w,\alpha,\beta)p(θ,z∣w,α,β)改为折腾q(θ,z∣,γ,ϕ)q(\theta,z|,\gamma,\phi)q(θ,z∣,γ,ϕ)
KL散度是两个不同概率分布的差异的衡量指标:
(γ∗,ϕ∗)=argminD(q(θ,z∣γ,ϕ)∣∣p(θ,z∣α,β))(\gamma^{*},\phi^{*})=argminD(q(\theta,z|\gamma,\phi)||p(\theta,z|\alpha,\beta))(γ∗,ϕ∗)=argminD(q(θ,z∣γ,ϕ)∣∣p(θ,z∣α,β))
也就是把EM的E步中的目标函数换了下,
其余不变,依然是EM算法的原理。
---------Section5结束------------------Section\ 5结束------------------Section 5结束---------
好了,一句话概括这个算法:
该算法中,每个document都是一个词序列。
聚类思想是:
每次迭代时选择的一个k维(k需要自己指定)主题分布,选择一个词,根据式(2)来获取最大的p(θ,z∣w,α,β)p(\theta,z|w,\alpha,\beta)p(θ,z∣w,α,β).
复习时需要记住式(2),并且能说出“文章由多个主题组成,主题由多个词组成”的思想
因为作者建模不合理,算法没法直接落地,
硬着头皮搞出来个"变分EM算法"来收拾烂摊子。
LDA主题模型原文解读相关推荐
- 通俗理解LDA主题模型(转载自 v_JULY_v 大佬)
通俗理解LDA主题模型 原文:https://blog.csdn.net/v_july_v/article/details/41209515 0 前言 印象中,最开始听说"LDA" ...
- 深入浅出讲解LDA主题模型(一)
本文转自:深入浅出讲解LDA主题模型(一)_欢迎来到我的酒馆-CSDN博客 原文格式更适合阅读,本文主要是为了备忘. 最近总是遇到主题模型LDA(Latent Dirichlet Allocation ...
- 自然语言处理-LDA主题模型
LDA主题模型 哈尔滨工程大学-537 一.LDA主题模型简介 LDA(Latent Dirichlet Allocation)中文翻译为:潜在狄利克雷分布.LDA主题模型是一种文档生成模型,是一种非 ...
- 《学术小白的学习之路 07》自然语言处理之 LDA主题模型 01
本文主要是学习参考杨秀璋老师的博客,笔记总结与记忆. 原文链接 文章目录 书山有路勤为径,学海无涯苦作舟(行行代码要手敲) 零.吃水不忘挖井人 一.LDA主题模型 1.1简介 1.2安装 二.LDA主 ...
- R语言︱LDA主题模型——最优主题数选取(topicmodels)+LDAvis可视化(lda+LDAvis)
笔者寄语:在自己学LDA主题模型时候,发现该模型有这么几个未解决的问题: 1.LDA主题数量,多少个才是最优的. 2.作出主题之后,主题-主题,主题与词语之间关联如何衡量. 于是在查阅几位老师做的成果 ...
- 【带你玩转主题模型Topic Model】—— 之 利用sklearn 实现Latetnt Dirichlet Allocation(LDA)主题模型
写在前面的话 9月份的第一篇blog, 正好是开学季,作为一个学生,hahahha, 我还是正正经经的贡献一篇认为比较干货的文章给大家吧. 我自己是花了很多时间去看懂LDA的算法了,当然了这篇文章不涉 ...
- lda主题模型的可视化_把LDA主题模型作为自己的硕士课题,有什么可以做的?
经典的LDA主题模型实现了文本的软聚类的工作,将文档转化为基于主题的数值向量,每个维度上的主题概率取值就是对特定主题的聚类中心的隶属度.由于LDA主题模型提出较早,所以作为基础模型有了很多改进和创新, ...
- 【机器学习】基于LDA主题模型的人脸识别专利分析
作者 | Soren Gran 编译 | VK 来源 | Towards Data Science 介绍 作为一名数据科学家,文本数据提出了一个独特的挑战:虽然金融.年龄和温度数据可以立即被注入线性回 ...
- [Pyhon疫情大数据分析] 三.新闻信息抓取及词云可视化、文本聚类和LDA主题模型文本挖掘
思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图显示.情感分析.舆情分析.主题挖掘.威胁情报溯源.知识图谱.预测预警及AI和NL ...
最新文章
- LLVM与Clang局部架构与语法分析
- NVIDIA Turing Architecture架构设计(上)
- python用os.system打开wav文件_使用python读取wav格式文件
- linux线程同步(3)-读写锁
- Introduction to Byteball — Part 3: Smart Contracts
- 关于 web.config impersonate 帐号模拟
- python获取html文本框内容_Python3处理HTML获取所需内容
- linux 64位module内联汇编,@yuanbor: Linux内联汇编总结
- [VB]获取Access数据库的全部对象
- Linux中zip和tar处理软链接的差异与选择
- Castle 开发系列文章
- get 方法向后台提交中文乱码问题
- jQuery模拟页面加载进度条
- 数学建模需要的Matlab知识速成
- Android电量优化全解析 ,赶快收藏备战金九银十
- 扫一下这个神奇的二维码,Wifi不用输密码
- windows XP系统自动关机
- java基于quasar实现协程池
- linux根据文件名查找文件路径
- 关于AD之PCB各层的简单说明