潜在狄利克雷分配(LDA)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了潜在狄利克雷分配(LDA)相关的知识,希望对你有一定的参考价值。
参考技术A 潜在狄利克雷分配(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个单词的概率
第四项推导,求
对于稀疏数据,训练 LDA(潜在狄利克雷分配)和预测新文档的更快方法是啥?
【中文标题】对于稀疏数据,训练 LDA(潜在狄利克雷分配)和预测新文档的更快方法是啥?【英文标题】:With sparse data,what is the faster way to train LDA( Latent Dirichlet allocation ) and predict for a new document?对于稀疏数据,训练 LDA(潜在狄利克雷分配)和预测新文档的更快方法是什么? 【发布时间】:2018-03-07 20:09:18 【问题描述】:关于训练 LDA:
当我们尝试实现LDA时,我们需要构造一个word-documents矩阵,但是这个矩阵是稀疏数据,因为我们的token字典非常大(几百万个单词),而一个documents有一个小的token集合( ~ 1000 - 10000 words),所以在 word-documents 矩阵中,它有很多 0 值,训练模型需要更长的时间。那么我们怎样才能做得更快呢?
关于预测一个新文件:
经过训练,现在我们有了一个新的 LDA 模型,因此我们可以使用它来预测哪些主题具有新文档。但是在向我们的模型提供新文档之前,我们需要将其转换为单词向量,其向量长度将是我们的字典长度(几百万个单词)。所以,它会有很多零值,实际上,我们的成本时间随着向量长度的增加而增加。
那么文档-单词矩阵是实现 LDA 的有效方法吗?我们能有其他更好的方法吗?我需要一些推荐给我的项目,所以请帮忙
【问题讨论】:
【参考方案1】:对于稀疏数据,您当然应该使用稀疏向量而不是密集向量。
您只保留非零值,而不是存储所有零值。
典型的数据模型(参见文献中的替代方案)是简单地使用元组列表 (i,v),其中 i 是列索引,v 是非零值。
【讨论】:
是的,我在 spark LDA repo 中看到了相同的示例。现在我知道它的原因了。谢谢以上是关于潜在狄利克雷分配(LDA)的主要内容,如果未能解决你的问题,请参考以下文章
潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型
潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型