潜在狄利克雷分配(LDA)

Python06

潜在狄利克雷分配(LDA),第1张

潜在狄利克雷分配(LDA),作为基于贝叶斯学习的话题模型,是潜在语义分析、概率潜在语义分析的扩展,于2002年由Blei等提出。LDA在文本数据挖掘、图像处理、生物信息处理等领域被广泛使用。

LDA模型是文本集合的生成概率模型。假设每个文本由话题的一个多项式分布表示,每个话题由单词的一个多项式分布表示,特别假设文本的话题分布的先验分布是狄利克雷分布,话题的单词分布的先验分布也是狄利克雷分布。先验分布的导入使LDA能够更好地应对话题模型学习的过拟合现象。

LDA的文本集合的生成过程如下:首先随机生成一个文本话题分布,之后再该文本的每个位置,依据该文本的话题分布随机生成一个话题,然后在该位置依据该话题的单词分布随机生成一个单词,直至文本的最后一个位置,生成整个文本。重复以上的过程生成所有文本。

LDA模型是含隐变量的概率图模型。模型中,每个话题的单词分布,每个文本的话题分布,文本的每个位置的话题是隐变量;文本的每个文职的单词是观测变量。LDA模型的学习与推理无法直接求解,通常使用吉布斯抽样和变分EM算法。前者是蒙特卡洛法,后者是近似计算。

多项分布是一种多元离散随机变量的概率分布,是二项分布的扩展。

假设重复进行n次独立随机试验,每次试验可能出现的结果有k种,第i中结果出现的概率为 ,第i种结果出现的次数为 。如果用随机变量 ,表示试验所有可能结果的次数,其中 表示第i种结果出现的次数,那么随机变量 服从多项分布。

若元离散随机变量的概率密度为

其中 ,,则称随机变量X服从参数为(n,p)的多项分布,记作

当试验的次数n为1时,多项分布变成类别分布。类别分布表示试验可能出现的k种结果的概率。显然多先分布包含类别分布。

狄利克雷分布是一种多元随机变量的概率分布,是贝塔分布的扩展。在贝爷斯学习中,狄利克雷分布作为多项分布的先验概率使用。

多元连续型随机变量 的概率密度函数为

其中 ,称随机变量 服从参数为 的狄利克雷分布,记作

式中

具有以下性质

当s是自然数时,有

则狄利克雷分布的密度函数可以写成

是规范化因子,称为多元贝塔函数(称为扩展的贝塔函数)。由密度函数性质

狄利克雷有一些重要性质:(1)狄利克雷分布属于指数分布簇(2)狄利克雷分布是多项分布的共轭先验

贝叶斯学习中常使用共轭分布,如果后验分布与先验分布属于同类,则先验分布与后验分布称为共轭分布,先验分布称为共轭先验。如果多项分布的先验分布是狄利克雷分布,作为先验分布的狄利克雷分布的参数又称为超参数,使用共轭先验分布的好处是便于从先验分布计算后验分布。

将样本数据表示为D,目标是计算样本数据D给定条件下参数 的后验概率 ,对于给定样本数据D,似然函数是

假设随机变量 服从狄利克雷分布 其中 为参数,则 的先验分布为

根据贝爷斯规则,在给定样本数据D和参数a的条件下, 的后验概率分布是

狄利克雷的后验分布等于狄利克雷分布参数 加上多项分布的观测技术

潜在狄利克雷分配(LDA)是文本集合的生成概率模型。模型假设话题由单词的多项分布表示,文本由话题的多项分布表示,单词分布和话题分布的先验分布都是狄利克雷分布。文本内容的不同时由于话题分布不同。

LDA模型表示文本集合的自动生成过程:首先,基于单词分布的先验分布(狄利克雷分布)生成多个单词分布,即决定多个话题内容;之后基于话题分布的先验分布(狄利克雷分布)生成多个话题分布,针对每个话题,基于话题的单词分布生成单词,整体构成一个单词序列,即生成文本,重复这个过程生成所有文本。文本的单词序列是观测变量,文本的话题序列是隐变量,文本的话题分布和话题的单词分布也是隐变量。

可以认为LDA是PLSA的扩展,相同点都假设话题是单词的多项分布,文本是华话题的多项分布。不同点LDA使用狄利克雷分布作为先验,而PLSA不使用先验分布(或者说假设先验分布为均匀分布),两者对文本生成过程有不同假设;学习过程LDA基于贝叶斯学习,PLSA基于极大似然估计。LDA的优点是,使用先验概率分布,可以防止学习过程中产生过拟合。

使用三个集合:一是单词集合 ,其中 是第v个单词, ,V是单词个数。二是文本集合 ,其中 ,其中 是文本 的第n个单词, , 是文本 中单词个数。三是话题集合 ,其中, 是第k个话题, ,K是话题的个数。

每一个话题 是由一个单词的条件概率分布 决定的, 。分布 服从多项分布(严格意义上类别分布),其参数为 。参数 是V维向量 服从狄利克雷分布(先验分布),其超参数为 。参数 ,其中 表示 生成单词 的概率。所有话题的参数向量构成 矩阵, ,超参数 也是V维向量

每一个文本 由一个话题的条件概率分布 决定, ,分布 服从多项分布(严格意义上的类别分布),其参数为 ,参数 服从狄利克雷分布(先验分布),其超参数为a。参数 是K维向量 ,其中 ,其中 表示文本 生成话题 的概率。所有文本构成参数构成一个M*K矩阵 ,超参数a也是一个K维向量

每一个文本 中的每一个单词 由该文本的话题分布 以及所有话题的单词分布 决定

LDA本质上是一个概率图模型,图为LDA作为概率图模型的板块表示,图中结点表示随机变量,实心结点是观测变量,空心结点是隐变量;有向边表示概率依存关系;矩形(板块)内数字表示重复的次数。

结点 表示模型的超参数,结点 表示话题的单词分布的参数,结点 表示文本的话题分布的参数,结点 表示话题,结点 表示单词。结点 指向结点 ,重复K次,表示根据超参数 生成K个话题的单词分布参数 ;结点a指向结点 ,重复M次,表示根据超参数a生成M个文本的话题分布参数 ;结点 指向 ,重复N词,表示根据文本的话题分布 生成 个话题 ;结点 指向结点 ,同时K个结点 也指向结点 ,表示根据话题 以及K个话题的单词 生成单词 。LDA是相同的随机参数被重复多次使用的概率图模型。

潜在狄利克雷分配(LDA)的学习(参数估计)是一个复杂的最优化问题,很难精确求解。常用近似求解的方法有吉布斯抽样和变分推理

吉布斯抽样的优点是实现简单,缺点是迭代次数可能较多。

LDA模型的学习,给定文本(单词序列)的集合 ,其中 是第m个文本集合的单词序列,即 ,超参数 已知。目标是要推断

吉布斯抽样,是一种常用的马尔科夫链蒙特卡罗法。为了估计多元随机变量x的联合概率分布p(x),吉布斯抽样法选择x的一个分量,固定其他分量,按照其条件概率分布进行随机抽样,一次循环对每一个分量执行这个操作,得到联合分布p(x)的一个随机样本,重复这个过程,在燃烧期后,得到联合概率分布p(x)的样本集合。

LDA模型采通常采取收缩的吉布斯抽样方法,基本想法是,通过对隐变量 积分,得到边缘概率分布 (也是联合分布),其中w是可观测变量,z是不可观测的。对后验概率分布 进行吉布斯抽样,得到分布 的样本集合;再利用这个样本集合对参数 和 进行估计,最终得到模型 所有的参数估计。

这里变量 是已知的,分母相同,可以不预考虑。联合概率分布 的表达式可以进一步分解为

两个因子可以分别处理

推导第一个因子 的表达式

其中 是k个话题生成单词集合第v个单词的概率, 是数据中第k个话题生成第v个单词的次数。

其中

第二个因子 的表达式也可以类似推导。首先

其中 是第m个文本生成第k个话题的概率, 是数据根据第m个文本生成的第k个话题,于是

式中 ,可得

通过吉布斯抽样得到的分布 的样本,可以得到变量z的分配值,也可以估计变量 。

变分推理是贝叶斯学中常用的,含隐变量模型的学习和推理方法。变分推理和马尔科夫蒙特卡洛(MCMC)属于不同的技巧。MCMC通过随机抽样的方法近似统计模型的后验概率,变分推理则通过解析的方法计算模型的后验概率。

变分推理的基本想法如下,假设模型是联合桂林分布 ,其中x是观测变量,z是隐变量,包括参数。目标是学习模型的后验概率分布p(z|x),用模型进行概率推理。但这是一个复杂的分布,直接估计分布的参数很困难,所以考虑使用概率分布q(z)近似条件桂林分布p(z|x),用KL散度D(q(z))||p(z|x))计算两者的相似度,q(z)称为变分分布。如果能找到与p(z|x)在KL散度意义下的近似分布 ,则可以用这个分布近似p(z|x)

KL散度可以写成以下形式

将变分EM算法应用到LDA模型的学习上,首先定义具体的变分分布,推导证据下界的表达式,接着推导变分分布的参数和LDA模型的参数的估计形式,最后给出LDA模型的变分EM算法

文本的单词序列 ,对应的话题序列 ,以及话题分布 ,和随机变量 的联合概率分布是

定义基于平均场的变分分布

其中 是可观测变量, 是隐变量, 是参数

定义基于平均场的变分分布

其中 是狄利克雷分布参数, 是多项分布参数,变量 的各个分量都是条件独立的,目标是求KL散度意义下最相近的变分分布 以及近似LDA模型的后验概率分布

由此可得到一个文本的证据下界

所有文本的证据下界为

为了求证据下界 的最大化,首先写出证据下界的表达式。为此展开证据下界表达式

根据变分参数 ,模型参数 继续展开,并将展开式的每一项写成一行

式 是对数伽马函数,即

第一项推导,求 ,是关于分布 的数学期望

其中

所以

故得

式中 分别表示第k个话题的狄利克雷分布参数

第二项推导,求 是关于分布 的数学期望

式中 表示文档第n个位置的单词由第k个话题产生的概率, 表示第k个话题的狄利克雷分布参数。

第三项推导,求 是关于分布 的数学期望

式中 表示文档第n个位置的单词由第k个话题产生的概率, 表示在第n个位置的单词是单词集合的第v个单词时取1,否则取0, 表示第k个话题生成单词集合第v个单词的概率

第四项推导,求

The linear separability of the data is high. Because accuracy of both linear kernel SVM and LDA are high, while accuracy of polynomial kernel SVM with degree 3 and 6 are low.

LDA模型是NLP中很基础也是大家广为熟知的模型,在面试过程也经常遇到。本文简单讲述下其大致流程。

首先,我们来感受下LDA是什么,

看来,不同人在不同场景下对LDA的认识,那我们看下百科的解释:

看到这里我们只需要先记住: LDA的目的就是要识别主题,即把文档—词汇矩阵变成文档—主题矩阵(分布)和主题—词汇矩阵(分布)

对于语料库中的每篇文档,LDA定义了如下生成过程(generativeprocess):

1.对每一篇文档,从主题分布中抽取一个主题;

2.从上述被抽到的主题所对应的单词分布中抽取一个单词;

3.重复上述过程直至遍历文档中的每一个单词。

语料库中的每一篇文档与T(通过反复试验等方法事先给定)个主题的一个多项分布 (multinomialdistribution)相对应,将该多项分布记为θ。每个主题又与词汇表(vocabulary)中的V个单词的一个多项分布相对应,将这个多项分布记为φ。

LDA的核心公式如下:

p(w|d)=p(w|t)*p(t|d)

直观的看这个公式,就是以Topic作为中间层,可以通过当前的θd和φt给出了文档d中出现单词w的概率。其中p(t|d)利用θd计算得到,p(w|t)利用φt计算得到。

实际上,利用当前的θd和φt,我们可以为一个文档中的一个单词计算它对应任意一个Topic时的p(w|d),然后根据这些结果来更新这个词应该对应的topic。然后,如果这个更新改变了这个单词所对应的Topic,就会反过来影响θd和φt。

LDA算法开始时,先随机地给θd和φt赋值(对所有的d和t)。然后上述过程不断重复,最终收敛到的结果就是LDA的输出。再详细说一下这个迭代的学习过程:

1.针对一个特定的文档ds中的第i单词wi,如果令该单词对应的topic为tj,可以把上述公式改写为:

pj(wi|ds)=p(wi|tj)*p(tj|ds)

2.现在我们可以枚举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所需要的结果了。

N个文档组成的语料库(