LDA主题模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LDA主题模型
(⼀)LDA作⽤
传统判断两个⽂档相似性的⽅法是通过查看两个⽂档共同出现的单词的多少,如TF-IDF等,这种⽅法没有考虑到⽂字背后的语义关联,可能在两个⽂档共同出现的单词很少甚⾄没有,但两个⽂档是相似的。
举个例⼦,有两个句⼦分别如下:
“乔布斯离我们⽽去了。
”
“苹果价格会不会降?”
可以看到上⾯这两个句⼦没有共同出现的单词,但这两个句⼦是相似的,如果按传统的⽅法判断这两个句⼦肯定不相似,所以在判断⽂档相关性的时候需要考虑到⽂档的语义,⽽语义挖掘的利器是主题模型,LDA就是其中⼀种⽐较有效的模型。
在主题模型中,主题表⽰⼀个概念、⼀个⽅⾯,表现为⼀系列相关的单词,是这些单词的条件概率。
形象来说,主题就是⼀个桶,⾥⾯装了出现概率较⾼的单词,这些单词与这个主题有很强的相关性。
怎样才能⽣成主题?对⽂章的主题应该怎么分析?这是主题模型要解决的问题。
⾸先,可以⽤⽣成模型来看⽂档和主题这两件事。
所谓⽣成模型,就是说,我们认为⼀篇⽂章的每个词都是通过“以⼀定概率选择了某个主题,并从这个主题中以⼀定概率选择某个词语”这样⼀个过程得到的。
那么,如果我们要⽣成⼀篇⽂档,它⾥⾯的每个词语出现的概率为:
这个概率公式可以⽤矩阵表⽰:
其中”⽂档-词语”矩阵表⽰每个⽂档中每个单词的词频,即出现的概率;”主题-词语”矩阵表⽰每个主题中每个单词的出现概率;”⽂档-主题”矩阵表⽰每个⽂档中每个主题出现的概率。
给定⼀系列⽂档,通过对⽂档进⾏分词,计算各个⽂档中每个单词的词频就可以得到左边这边”⽂档-词语”矩阵。
主题模型就是通过左边这个矩阵进⾏训练,学习出右边两个矩阵。
主题模型有两种:pLSA(ProbabilisticLatent Semantic Analysis)和LDA(Latent Dirichlet Allocation),下⾯主要介绍LDA。
(⼆)LDA介绍
如何⽣成M份包含N个单词的⽂档,LatentDirichlet Allocation这篇⽂章介绍了3⽅法:
⽅法⼀:unigram model
该模型使⽤下⾯⽅法⽣成1个⽂档:
For each ofthe N words w_n:
Choose a word w_n ~ p(w);
其中N表⽰要⽣成的⽂档的单词的个数,w_n表⽰⽣成的第n个单词w,p(w)表⽰单词w的分布,可以通过语料进⾏统计学习得到,⽐如给⼀本书,统计各个单词在书中出现的概率。
这种⽅法通过训练语料获得⼀个单词的概率分布函数,然后根据这个概率分布函数每次⽣成⼀个单词,使⽤这个⽅法M次⽣成M个⽂档。
其图模型如下图所⽰:
⽅法⼆:Mixture of unigram
unigram模型的⽅法的缺点就是⽣成的⽂本没有主题,过于简单,mixture of unigram⽅法对其进⾏了改进,该模型使⽤下⾯⽅法⽣成1个⽂档:
Choose a topicz ~ p(z);
For each ofthe N words w_n:
Choose a word w_n ~ p(w|z);
其中z表⽰⼀个主题,p(z)表⽰主题的概率分布,z通过p(z)按概率产⽣;N和w_n同上;p(w|z)表⽰给定z时w的分布,可以看成⼀个k×V的矩阵,k为主题的个数,V为单词的个数,每⾏表⽰这个主题对应的单词的概率分布,即主题z所包含的各个单词的概率,通过这个概率分布按⼀定概率⽣成每个单词。
这种⽅法⾸先选选定⼀个主题z,主题z对应⼀个单词的概率分布p(w|z),每次按这个分布⽣成⼀个单词,使⽤M次这个⽅法⽣成M份不同的⽂档。
其图模型如下图所⽰:
从上图可以看出,z在w所在的长⽅形外⾯,表⽰z⽣成⼀份N个单词的⽂档时主题z只⽣成⼀次,即只允许⼀个⽂档只有⼀个主题,这不太符合常规情况,通常⼀个⽂档可能包含多个主题。
⽅法三:LDA(Latent Dirichlet Allocation)
LDA⽅法使⽣成的⽂档可以包含多个主题,该模型使⽤下⾯⽅法⽣成1个⽂档:
Chooseparameter θ~ p(θ);
For each ofthe N words w_n:
Choose a topic z_n ~ p(z|θ);
Choose a word w_n ~ p(w|z);
其中θ是⼀个主题向量,向量的每⼀列表⽰每个主题在⽂档出现的概率,该向量为⾮负归⼀化向量;p(θ)是θ的分布,具体为Dirichlet分布,即分布的分布;N和w_n同上;z_n表⽰选择的主题,p(z|θ)表⽰给定θ时主题z的概率分布,具体为θ的值,即p(z=i|θ)= θ_i;p(w|z)同上。
这种⽅法⾸先选定⼀个主题向量θ,确定每个主题被选择的概率。
然后在⽣成每个单词的时候,从主题分布向量θ中选择⼀个主题z,按主题z的单词概率分布⽣成⼀个单词。
其图模型如下图所⽰:
从上图可知LDA的联合概率为:
把上⾯的式⼦对应到图上,可以⼤致按下图理解:
从上图可以看出,LDA的三个表⽰层被三种颜⾊表⽰出来:
1. corpus-level(红⾊):α和β表⽰语料级别的参数,也就是每个⽂档都⼀样,因此⽣成过程只采样⼀次。
2.document-level(橙⾊):θ是⽂档级别的变量,每个⽂档对应⼀个θ,也就是每个⽂档产⽣各个主题z的概率是不同的,所有⽣成每个⽂档采样⼀次θ。
3. word-level(绿⾊):z和w都是单词级别变量,z由θ⽣成,w由z和β共同⽣成,⼀个单词w对应⼀个主题z。
通过上⾯对LDA⽣成模型的讨论,可以知道LDA模型主要是从给定的输⼊语料中学习训练两个控制参数α和β,学习出了这两个控制参数就确定了模型,便可以⽤来⽣成⽂档。
其中α和β分别对应以下各个信息:
α:分布p(θ)需要⼀个向量参数,即Dirichlet分布的参数,⽤于⽣成⼀个主题θ向量;
β:各个主题对应的单词概率分布矩阵p(w|z)。
把w当做观察变量,θ和z当做隐藏变量,就可以通过EM算法学习出α和β,求解过程中遇到后验概率p(θ,z|w)⽆法直接求解,需要找⼀个似然函数下界来近似求解,原⽂使⽤基于分解(factorization)假设的变分法(varialtional inference)进⾏计算,⽤到了EM算法。
每次E-step输⼊α和β,计算似然函数,M-step 最⼤化这个似然函数,算出α和β,不断迭代直到收敛。
参考⽂献:
David M. Blei, AndrewY. Ng, Michael I. Jordan, LatentDirichlet Allocation, Journal of Machine Learning Research 3, p993-1022,2003。