主题模型探讨

一)简介

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下;

下面将从下述的五个方面继续阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的了解。

  1. 一个函数:gamma函数
  2. 四个分布:二项分布、多项分布、beta分布、Dirichlet分布
  3. 一个概念和一个理念:共轭先验和贝叶斯框架
  4. 两个模型:pLSA、LDA
  5. 一个采样:Gibbs采样

1 gamma函数

1.0 整体把握LDA

    关于LDA有两种含义,一种是线性判别分析(Linear Discriminant Analysis),一种是概率主题模型:隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),本文讲后者。

    另外,我先简单说下LDA的整体思想,不然我怕你看了半天,铺了太长的前奏,却依然因没见到LDA的影子而显得“心浮气躁”,导致不想再继续看下去。所以,先给你吃一颗定心丸,明白整体框架后,咱们再一步步抽丝剥茧,展开来论述。

    按照wiki上的介绍,LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,是一种主题模型,它可以将文档集 中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。同时,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。

    此外,一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

    人类是怎么生成文档的呢?LDA的这三位作者在原始论文中给了一个简单的例子。比如假设事先给定了这几个主题:Arts、Budgets、Children、Education,然后通过学习训练,获取每个主题Topic对应的词语。如下图所示:

 

 

    然后以一定的概率选取上述某个主题,再以一定的概率选取那个主题下的某个单词,不断的重复这两步,最终生成如下图所示的一篇文章(其中不同颜色的词语分别对应上图中不同主题下的词):

  

    而当我们看到一篇文章后,往往喜欢推测这篇文章是如何生成的,我们可能会认为作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。

    LDA就是要干这事:根据给定的一篇文档,反推其主题分布

    通俗来说,可以假定认为人类是根据上述文档生成过程写成了各种各样的文章,现在某小撮人想让计算机利用LDA干一件事:你计算机给我推测分析网络上各篇文章分别都写了些啥主题,且各篇文章中各个主题出现的概率大小(主题分布)是啥

    然,就是这么一个看似普通的LDA,一度吓退了不少想深入探究其内部原理的初学者。难在哪呢,难就难在LDA内部涉及到的数学知识点太多了。

    在LDA模型中,一篇文档生成的方式如下:

  • 从狄利克雷分布中取样生成文档 i 的主题分布
  • 从主题的多项式分布中取样生成文档i第 j 个词的主题
  • 从狄利克雷分布中取样生成主题对应的词语分布
  • 从词语的多项式分布中采样最终生成词语

    其中,类似Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。

    此外,LDA的图模型结构如下图所示(类似贝叶斯网络结构):

    恩,不错,短短6句话整体概括了整个LDA的主体思想!但也就是上面短短6句话,却接连不断或重复出现了二项分布、多项式分布、beta分布、狄利克雷分布(Dirichlet分布)、共轭先验概率分布、取样,那么请问,这些都是啥呢?

    这里先简单解释下二项分布、多项分布、beta分布、Dirichlet 分布这4个分布。

  •  二项分布(Binomial distribution)

    二项分布是从伯努利分布推进的。伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布,其中的随机变量只有两类取值,非正即负{+,-}。而二项分布即重复n次的伯努利试验,记为 。简言之,只做一次实验,是伯努利分布,重复做了n次,是二项分布。二项分布的概率密度函数为:

    

    对于k = 0, 1, 2, ..., n,其中的是二项式系数(这就是二项分布的名称的由来),又记为。回想起高中所学的那丁点概率知识了么:想必你当年一定死记过这个二项式系数就是

  • 多项分布,是二项分布扩展到多维的情况

    多项分布是指单次试验中的随机变量的取值不再是0-1的,而是有多种离散值可能(1,2,3...,k)。比如投掷6个面的骰子实验,N次实验结果服从K=6的多项分布。其中

 

    多项分布的概率密度函数为:

  • Beta分布,二项分布的共轭先验分布

    给定参数,取值范围为[0,1]的随机变量 x 的概率密度函数:

    其中:

。 

   注:便是所谓的gamma函数,下文会具体阐述。

  • Dirichlet分布,是beta分布在高维度上的推广

    Dirichlet分布的的密度函数形式跟beta分布的密度函数如出一辙:

    其中

    至此,我们可以看到二项分布和多项分布很相似,Beta分布和Dirichlet 分布很相似,而至于Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布这点在下文中说明。

    OK,接下来,咱们就按照本文开头所说的思路:“一个函数:gamma函数,四个分布:二项分布、多项分布、beta分布、Dirichlet分布,外加一个概念和一个理念:共轭先验和贝叶斯框架,两个模型:pLSA、LDA(文档-主题,主题-词语),一个采样:Gibbs采样”一步步详细阐述,争取给读者一个尽量清晰完整的LDA。

    (当然,如果你不想深究背后的细节原理,只想整体把握LDA的主体思想,可直接跳到本文第4 部分,看完第4部分后,若还是想深究背后的细节原理,可再回到此处开始看)

1.1 gamma函数

    咱们先来考虑一个问题(此问题1包括下文的问题2-问题4皆取材自LDA数学八卦):

 

  1. 问题1 随机变量
  2. 把这n 个随机变量排序后得到顺序统计量
  3. 然后请问的分布是什么。

    为解决这个问题,可以尝试计算落在区间[x,x+Δx]的概率。即求下述式子的值:

 

    首先,把 [0,1] 区间分成三段 [0,x),[x,x+Δx],(x+Δx,1],然后考虑下简单的情形:即假设n 个数中只有1个落在了区间 [x,x+Δx]内,由于这个区间内的数X(k)是第k大的,所以[0,x)中应该有 k−1 个数,(x+Δx,1] 这个区间中应该有n−k 个数。如下图所示:

    从而问题转换为下述事件E:

 

    对于上述事件E,有:

    其中,o(Δx)表示Δx的高阶无穷小。显然,由于不同的排列组合,即n个数中有一个落在 [x,x+Δx]区间的有n种取法,余下n−1个数中有k−1个落在[0,x)的有种组合,所以和事件E等价的事件一共有个。

    如果有2个数落在区间[x,x+Δx]呢?如下图所示:

    类似于事件E,对于2个数落在区间[x,x+Δx]的事件E’:

    有:

   从上述的事件E、事件E‘中,可以看出,只要落在[x,x+Δx]内的数字超过一个,则对应的事件的概率就是 o(Δx)。于是乎有:

    从而得到的概率密度函数为:

    至此,本节开头提出的问题得到解决。然仔细观察的概率密度函数,发现式子的最终结果有阶乘,联想到阶乘在实数上的推广函数:

    两者结合是否会产生奇妙的效果呢?考虑到具有如下性质:

    故将代入到的概率密度函数中,可得:

    然后取,转换得到:

    如果熟悉beta分布的朋友,可能会惊呼:哇,竟然推出了beta分布!

 

2 beta分布

2.1 beta分布

    在概率论中,beta是指一组定义在区间的连续概率分布,有两个参数,且

    beta分布的概率密度函数是:

    其中的便是函数:

    随机变量X服从参数为的beta分布通常写作:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值