#################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∏N​p(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主题模型原文解读相关推荐

  1. 通俗理解LDA主题模型(转载自 v_JULY_v 大佬)

    通俗理解LDA主题模型 原文:https://blog.csdn.net/v_july_v/article/details/41209515 0 前言 印象中,最开始听说"LDA" ...

  2. 深入浅出讲解LDA主题模型(一)

    本文转自:深入浅出讲解LDA主题模型(一)_欢迎来到我的酒馆-CSDN博客 原文格式更适合阅读,本文主要是为了备忘. 最近总是遇到主题模型LDA(Latent Dirichlet Allocation ...

  3. 自然语言处理-LDA主题模型

    LDA主题模型 哈尔滨工程大学-537 一.LDA主题模型简介 LDA(Latent Dirichlet Allocation)中文翻译为:潜在狄利克雷分布.LDA主题模型是一种文档生成模型,是一种非 ...

  4. 《学术小白的学习之路 07》自然语言处理之 LDA主题模型 01

    本文主要是学习参考杨秀璋老师的博客,笔记总结与记忆. 原文链接 文章目录 书山有路勤为径,学海无涯苦作舟(行行代码要手敲) 零.吃水不忘挖井人 一.LDA主题模型 1.1简介 1.2安装 二.LDA主 ...

  5. R语言︱LDA主题模型——最优主题数选取(topicmodels)+LDAvis可视化(lda+LDAvis)

    笔者寄语:在自己学LDA主题模型时候,发现该模型有这么几个未解决的问题: 1.LDA主题数量,多少个才是最优的. 2.作出主题之后,主题-主题,主题与词语之间关联如何衡量. 于是在查阅几位老师做的成果 ...

  6. 【带你玩转主题模型Topic Model】—— 之 利用sklearn 实现Latetnt Dirichlet Allocation(LDA)主题模型

    写在前面的话 9月份的第一篇blog, 正好是开学季,作为一个学生,hahahha, 我还是正正经经的贡献一篇认为比较干货的文章给大家吧. 我自己是花了很多时间去看懂LDA的算法了,当然了这篇文章不涉 ...

  7. lda主题模型的可视化_把LDA主题模型作为自己的硕士课题,有什么可以做的?

    经典的LDA主题模型实现了文本的软聚类的工作,将文档转化为基于主题的数值向量,每个维度上的主题概率取值就是对特定主题的聚类中心的隶属度.由于LDA主题模型提出较早,所以作为基础模型有了很多改进和创新, ...

  8. 【机器学习】基于LDA主题模型的人脸识别专利分析

    作者 | Soren Gran 编译 | VK 来源 | Towards Data Science 介绍 作为一名数据科学家,文本数据提出了一个独特的挑战:虽然金融.年龄和温度数据可以立即被注入线性回 ...

  9. [Pyhon疫情大数据分析] 三.新闻信息抓取及词云可视化、文本聚类和LDA主题模型文本挖掘

    思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图显示.情感分析.舆情分析.主题挖掘.威胁情报溯源.知识图谱.预测预警及AI和NL ...

最新文章

  1. LLVM与Clang局部架构与语法分析
  2. NVIDIA Turing Architecture架构设计(上)
  3. python用os.system打开wav文件_使用python读取wav格式文件
  4. linux线程同步(3)-读写锁
  5. Introduction to Byteball — Part 3: Smart Contracts
  6. 关于 web.config impersonate 帐号模拟
  7. python获取html文本框内容_Python3处理HTML获取所需内容
  8. linux 64位module内联汇编,@yuanbor: Linux内联汇编总结
  9. [VB]获取Access数据库的全部对象
  10. Linux中zip和tar处理软链接的差异与选择
  11. Castle 开发系列文章
  12. get 方法向后台提交中文乱码问题
  13. jQuery模拟页面加载进度条
  14. 数学建模需要的Matlab知识速成
  15. Android电量优化全解析 ,赶快收藏备战金九银十
  16. 扫一下这个神奇的二维码,Wifi不用输密码
  17. windows XP系统自动关机
  18. java基于quasar实现协程池
  19. linux根据文件名查找文件路径
  20. 关于AD之PCB各层的简单说明

热门文章

  1. UltraEdit 使用操作
  2. 再赠邓超明(帮别人名字作诗)
  3. npm安装教程 集成npm webpack vue-cli
  4. 前端js vue遇到的一些简单的数据处理-持续更新
  5. 路由守卫-vue切换路由登录判断、条件判断
  6. Webpack搭建ES6开发环境步骤
  7. 热部署插件JRebel使用解决方案(安装+踩坑+使用方法)傻瓜式超详细!!!
  8. Yoga710笔记本Win10和Ubuntu系统共存
  9. -1.#IND000 图像类型转换
  10. Xcode使用心得01:断点中断问题和调整编译目标[转]