LDA文本主题模型的学习笔记

引言

我们经常会听到LDA文本主题模型,经常用于文本分类。LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,用来推测文档的主题分布。它可以将文档集中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题分布后,便可以根据主题分布进行主题聚类或文本分类。LDA全称隐含狄利克雷分布(Latent Dirichlet Allocation),听这个名字我们就知道LDA 模型涉及很多数学知识,这也许是LDA晦涩难懂的主要原因。这里简单说一说我对LDA的一些认知。

LDA简介

LDA是一个无监督分析,对于自然语言处理,可以用来主题分析、关键词提取、文档聚类,计算语义相似度;对于计算机视觉,可以用来图像聚类;换句话说,只要能引入隐变量(主题就是一个隐变量)的场景,都可以尝试。

接下来从比较直观的角度,来看看LDA主题模型做了什么。在LDA模型下,每个文档都对应着一个主题分布,例如上面这个文档,对于黄色主题的概率大一点。这个文档的主题又是从哪里体现出来呢?因为文档中的每个单词都是属于某个主题的,所以根据统计,统计出我们这篇文档的主题分布。如何确定某个单词属于哪个主题的呢?是因为我们在每个主题下有对应着有单词的分布(图最左侧)。

提出者在一开始建模的时候,有一个假设是:我们在一个单词一个单词敲打出一个文档过程中,每当我们想预先写出一个单词时,其实我们心已有一个定好的主题,比方说我们想写一个主题为体育的新闻,那么我们在体育这个主题下再去找我们相对应的一个单词,那么我们就可能敲出“足球”这个单词;然后我们再去体育这个主题下,敲出来“比赛”这个单词;以此类推,我们生成了整篇文章。这也是LDA模型work的原因。

LDA模型的输出如上图所两个分布,一个是主题分布,另外一个是单词分布。在每个主题下,所有单词概率加起来为1;在每个文章下,所有主题的概率加起来为1。以矩阵的观点来看,输入的是一个 N ∗ M N * M NM的文章矩阵,其中 N N N是文章的数量, M M M是单词的数量。输出的是一个 N ∗ K N*K NK的主题分布,其中 K K K是主题个数,里面每一行代表的是每篇文章的主题分布;另外一个输出是 M ∗ K M*K MK的单词分布,里面的每一列对应着每个主题的单词分布。

LDA到底是一个什么模型呢?就像盲人摸象一样,每个人都有自己的理解。可以从下面几个方向来理解LDA“
概率图模型:数据生成过程定义了观测随机变量和隐藏随机变量的联合概率分布。通过使用联合分布来计算在给定观测变量下隐藏变量的条件分布(后验分布)来进行数据分析。 对于LDA来说,观测变量就是文档中的词;隐藏变量就是主题结构。那么推测文档中隐藏的 主题结构的问题其实就是计算在给定文档下隐藏变量的条件分布(后验分布)。
矩阵分解:单词*文档 分解为 单词*主题 + 文档*主题
聚类:根据主题进行聚类。
降维:每一篇文档可看作关于主题的分布。

一些你需要了解的数学知识

LDA涉及到的数学知识有:共轭先验分布 、贝叶斯框架、二项分布、Gamma函数、Beta分布、多项分布、Dirichlet分布、吉布斯采样

共轭先验分布

后验分布 = 似然分布 * 先验分布
在贝叶斯概率理论中,如果后验分布和先验分布满足同样的分布律,那么两者称为共轭分布。而先验分布叫作似然函数的共轭先验分布。

贝叶斯框架

先验分布 + 数据(似然)=> 后验分布
好人与坏人的例子:
• 先验分布:100个好人和100个的坏人,即你认为好人坏人各占一半
• 数据:现在你被2个好人帮助了和1个坏人骗了
• 后验分布:102个好人和101个的坏人
• 现在你的后验分布里面认为好人比坏人多了。这个后验分布接着又变 成你的新的先验分布,当你被1个好人(数据)帮助了和3个坏人(数 据)骗了后,你又更新了你的后验分布为:103个好人和104个的坏人。 依次继续更新下去。

二项分布

二项分布是N重伯努利分布,即为 X − B ( n , p ) X - B(n, p) XB(n,p). 概率密度公式为:

多项分布

多项分布,是二项分布扩展到多维的情况. 多项分布是指单次试验中的随机变量的取值不再是 0 − 1 0-1 01的,而是有多种离散值可能 ( 1 , 2 , 3... , k ) (1,2,3...,k) 1,2,3...,k.概率密度函数为:

Gamma函数

Gamma函数可以看成是阶乘在实数集上的延拓,欧拉应用各种参数替换数学技巧与极 限思想,成功推导出Gamma函数:

Beta分布

Beta分布的定义:对于参数 α > 0 , β > 0 \alpha > 0, \beta > 0 α>0,β>0, 取值范围为 [ 0 , 1 ] [0, 1] [0,1]的随机变量 x x x的概率密度函数为:

其中 B B B的表达式可以由刚才定义的Gamma函数来表达:

Dirichlet分布

Beta分布的多维形式我们一般称他为狄克雷(Dirichlet)分布,所以Dirichlet分布是Beta分布的一种拓展:

其中 B B B的表达式仍可以由刚才定义的Gamma函数来表达:

LDA中的共轭分布

首先,Beta分布为二项分布的共轭先验分布,简单证明如下:
似然概率:

先验概率:

计算后验概率:

后验概率是参数为 ( k + α , n − k + β ) (k+α,n-k+β) k+α,nk+β的Beta分布,与先验概率为同种分布,故两者为共轭分布。

结合贝叶斯框架,我们可以得到:

那么我们推广到多维形式,就是Dirichlet分布为多项分布的共轭先验分布。

吉布斯采样

概率图模型中最常用的采样技术是马尔可夫链脸蒙特卡罗(Markov chain Monte Carlo, MCMC). MCMC方法的关键在于通过构造“平稳分布为p的马尔可夫链”来产生样本:若马尔科夫链运行时间足够长,即收敛到平稳状态,Metropolis-Hastings(简称MH)算法是MCMC的重要代表。它基于“拒绝采样”(reject sampling)来逼近平稳分布 p p p。吉布斯采样(Gibbs sampling)有时被视为MH算法的特例,它也使用马尔科夫链读取样本,而该马尔科夫链的平稳分布也是采用采样的目标分布 p ( x ) p(x) p(x)。假定 X = x 1 , x 2 , . . . , x N X= x_1, x_2, ... ,x_N X=x1,x2,...,xN, 目标分布为 p ( x ) p(x) p(x), 在初始化 x x x的取值后,通过循环执行以下步骤来完成采样:

如何理解LDA

如下图所示:语料中有 M M M篇文章,假定有 K K K个主题。每篇文章(长度为 N m N_m Nm)都有一个主题分布,主题分布为维度大小为 K K K的多项式分布,该分布的参数服从Dirichlet分布( α α α) (即主题的先验分布)。由于有 M M M篇文章,那么有M个文档主题的Dirichlet分布,而对应的数据为 M M M个主题的多项分布,即 M M M组Dirichelet-multi共轭。

同时每个主题都有一个词分布,即一个维度大小为词典大小的多项式分布,该分布的参数服从Dirichlet分布( β β β)(即词的先验分布)。有 K K K个主题与词的Dirichlet分布,而对应的数据为 K K K个主题的词汇的多项分布,即 K K K组Dirichelet-multi共轭。

语料的生成过程:首先从文章的主题分布中采样一个主题,再在此主题下的词分布中采样一个词。不断重复此过程,直到生成一篇文章,进而生成M篇文章。

这里如何利用上面的贝叶斯框架求得后验分布,可以见这里,很详细很有趣。

LDA的一些参数设计

K K K以及两个Dirichlet分布参数事先给定,如何确定这些超参数?

  1. 多次实验。
  2. 已经K个主题,V个词汇,可尝试: • α = 50 / K α=50/K α=50/K β = 200 / V β=200/V β=200/V
  3. α α α越小,不同文档间主题越是鲜明,越大则越不鲜明,分布越平均。
  4. β β β越大,同一词汇可能属于不同主题的可能性越大, 反之则同一词汇仅属于某一主题的可能性更大。

如何求解LDA

LDA 中,生成文档的过程如下:

  1. 按照先验概率选择一篇文档 d i d_i di
  2. 从Dirichlet分布中取样生成文档 d i d_i di的主题分布 θ i \theta_i θi,主题分布 θ i \theta_i θi由超参数为 α \alpha α的Dirichlet分布生成。
  3. 从主题的多项式分布 θ i \theta_i θi中取样生成文档 d i d_i di j j j个词的主题 z i , j z_{i,j} zi,j
  4. 从Dirichlet分布中取样生成主题 z i , j z_{i,j} zi,j对应的词语分布 η z i , j \eta_{z_{i,j}} ηzi,j,词语分布由参数为 β \beta β的Dirichlet分布生成
  5. 从词语的多项式分布 η z i , j \eta_{z_{i,j}} ηzi,j 中采样最终生成词语 w i , j w_{i,j} wi,j

在Gibbs采样算法求解LDA的方法中,我们的 α α α, η η η是已知的先验输入,我们的目标是得到各个 z d n z_{dn} zdn, w k n w_{kn} wkn对应的整体的概率分布,即文档主题的分布和主题词的分布。由于我们是采用Gibbs采样法,则对于要求的目标分布,我们需要得到对应分布各个特征维度的条件概率分布。Gibbs Sampling 算法,我们需要求任一个坐标轴 i i i 对应的条件分布:

只涉及到第 m m m 篇文档和第 k k k个 topic,所以上式的条件概率计算中, 实际上也只会涉及到与之相关的两个Dirichlet-Multinomial 共轭结构,其它的 M + K − 2 M+K−2 M+K2个 Dirichlet-Multinomial 共轭结构和它们是独立的
训练过程:

预测过程:

具体计算可以入下面这个ppt所示:

PLSA 和 LDA 的区别

LDA 在 PLSA 的基础上,为主题分布和词分布分别加了两个 Dirichlet 先验。

在PLSA中,我们会以固定的概率来抽取一个主题词,比如0.5的概率抽取教育这个主题词,然后根据抽取出来的主题词,找其对应的词分布,再根据词分布,抽取一个词汇。由此,可以看出PLSA中,主题分布和词分布都是唯一确定的。但是,在LDA中,主题分布和词分布是不确定的,LDA的作者们采用的是贝叶斯派的思想,认为它们应该服从一个分布,主题分布和词分布都是多项式分布,因为多项式分布和狄利克雷分布是共轭结构,在LDA中主题分布和词分布使用了Dirichlet分布作为它们的共轭先验分布。所以,也就有了一句广为流传的话 – LDA 就是 PLSA 的贝叶斯化版本。下面两张图片很好的体现了两者的区别:

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值