主题模型

来源:互联网 发布:朱元璋废丞相知乎 编辑:程序博客网 时间:2024/04/28 14:53

(一)简介

1.主题模型是对文本中隐含主题的一种建模方法;每个主题其实是词表上单词的概率分布;

2.主题模型是一种生成模型,一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到的;

 

3.常见的主题模型有3种:

(1)PLSA(Probabilistic Latent Semantic Analysis)

(2)LDA(Latent Dirichlet Allocation)

(3)L-LDA(Label Latent Dirichlet Allocation)


(二)PLSA模型

1.生成过程:


(1)M个doc,N个word;

(2)doc选择topic服从多项式分布,topic选择word也服从多项式分布;

(3)生成模型如下:


其中p(topic|doc)与p(word|topic)属于模型参数;

2.训练过程:由于存在隐藏变量topic,因此选择EM算法;

(三)LDA模型

1.原理:LDA模型是在PLSA模型的基础上引入了参数的先验知识,也就是假设doc到topic的多项分布参数以及topic到word的多项分布参数服从狄利克雷分布;


(1)m个doc,k个topic;

(2)α和β属于超参数;

(3)数学解释:

        1)贝叶斯公式(后验正比于似然乘以先验)

           

        2)在贝叶斯概率理论中,如果后验概率P(θ|x)和先验概率p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布;

        3)Dirichlet分布是多项分布的共轭先验分布:

            二项分布:

                            

           多项分布:

                 

          Beta分布:

                       

                    

         Dirichlet分布:

                  

                    

     4)选择共轭先验分布可以带来计算上的方便;

2.生成过程:


(1)M个doc,N个word;

(2)生成模型如下:


3.训练过程:GibbsSampling

(1)图示:


初始时,随机给文本中的每个单词w分配主题z;然后统计每个主题z下出现term t的数量分布以及每个文档m下主题z 的数量分布;然后排除当前词的主题分配,根据其他所有词的主题分配估计当前词的主题;用同样的方法不断更新下一个词的主题,直至每个文档下主题的分布以及每个主题下词的分布收敛,算法停止;这里的核心是如何根据其他所有词的主题分配估计当前词的主题,也就是gibbs 采样公式;

(2)gibbs采样公式:


其中zi=k表示第i个词的主题为k,i的形式为(m,n),表示第m篇第n个;¬i 表示去除下标为i的词;

(3)理解

        1)概率计算:

对每个D中的文档d,对应到不同Topic的概率θd<pt1,...,ptk>,其中,pti表示d对应T中第i个topic的概率。计算方法是直观的,pti=nti/n,其中nti表示d中对应第i个topic的词的数目,n是d中所有词的总数;

对每个T中的topict,生成不同单词的概率φt<pw1,...,pwm>,其中,pwi表示t生成VOC中第i个单词的概率。计算方法同样很直观,pwi=Nwi/N,其中Nwi表示对应到topic  t的VOC中第i个单词的数目,N表示所有对应到topic  t的单词总数。

       2)训练过程:

步骤1:先随机地给θd和φt赋值(对所有的d和t)

步骤2:pj(wi|ds)=p(wi|tj)*p(tj|ds)

枚举T中的topic,得到所有的pj(wi|ds),其中j取值1~k;然后可以根据这些概率值结果为ds中的第i个单词wi选择一个topic;最简单的想法是取令pj(wi|ds)最大的tj(注意,这个式子里只有j是变量),即argmax[j]pj(wi|ds);

步骤3:然后,如果ds中的第i个单词wi在这里选择了一个与原先不同的topic,就会对θd和φt有影响了(根据前面提到过的这两个向量的计算公式可以很容易知道)。它们的影响又会反过来影响对上面提到的p(w|d)的计算;对D中所有的d中的所有w进行一次p(w|d)的计算并重新选择topic看作一次迭代;这样进行n次循环迭代之后,就会收敛到LDA所需要的结果了;

4.推理过程:训练与推理的步骤几乎一样,都需要gibbs采样,但是由于推理时,已知topic下word的分布,因此每次迭代只更新文档下topic的分布,迭代速度是比训练快很多的;

5.效果评估(越小越好)

(四)Label LDA

1.      Label LDA的label指的是事先给定每个文档的主题类别;

2.      Label LDA从topic到word的生成过程与LDA一样,不同的是从doc到topic的生成过程;LDA中从doc到topic的生成服从多项分布θd,而θd又服从Dirichlet分布,每个doc的θd都是包括全部topic,而在label LDA中,每个doc的θd只包括其label中对应的topic,与此同时,θd也服从Dirichlet分布;

3.      生成过程如下:


(1) 第1,2步是从topic到word的生成,与LDA一样;
(2) 第4,5步是生成每个doc的label(监督训练中其实就是样本自带的label);
(3) 第6步是对Dirichlet分布的参数α进行降维,从而约束在每个doc的label下;



1 0
原创粉丝点击