LDA学习

时间:2024-05-31 07:58:27

学习中。。。。。。


隐式狄利克雷划分

Latent Dirichlet Allocation,简称LDA。注意不要和Linear Discriminant Analysis搞混了。

这方面的文章,首推rickjin(靳志辉)写的《LDA数学八卦》一文。全文篇幅长达55页,我实在没有能力写的比他更好,因此这里就做一个摘要好了。

http://vdisk.weibo.com/s/q0sGh/1360334108?utm_source=weibolife  书的下载链接。

注:靳志辉,北京大学计算机系计算语言所硕士,日本东京大学情报理工学院统计自然语言处理方向博士。2008年加入腾讯,主要工作内容涉及统计自然语言处理和大规模并行机器学习工具的研发工作。目前为腾讯社交与效果广告部质量研发中心总监,主要负责腾讯用户数据挖掘、精准广告定向、广告语义特征挖掘、广告转化率预估等工作。
他写的另一篇文章《正态分布的前世今生》,也是统计界著名的科普文,非常值得一看。

马氏链及其平稳分布

Markov chain的定义如下:

P(Xt+1=x|Xt,Xt1,)=P(Xt+1=x|Xt)P(Xt+1=x|Xt,Xt−1,⋯)=P(Xt+1=x|Xt)

即状态转移的概率只依赖于前一个状态的随机过程。

注:上面是1阶Markov过程的定义。类似的还可以定义n阶Markov过程,即状态转移的概率只依赖于前n个状态的随机过程。

Andrey(Andrei) Andreyevich Markov,1856~1922,俄国数学家。圣彼得堡大学博士,导师Pafnuty Chebyshev。最早研究随机过程的数学家之一。圣彼得堡学派的第二代领军人物,俄罗斯科学院院士。
虽然现在将随机过程(stochastic process)划为数理统计科学的一部分,然而在19世纪末期,相关的研究者在学术界分属两个不同的团体。其中最典型的就是英国的剑桥学派(Pearson、Fisher等)和俄国的圣彼得堡学派(Chebyshev、Markov等)。因此将Markov称为统计学家是非常错误的观点。

一些非周期的马氏链,经过若干次的状态转移之后,其状态概率会收敛到一个特定的数值,即平稳分布(stationary distribution)。

如各参考文献所示,这里一般会举社会学上的人口分层问题,引出马氏链的极限和平稳分布的概念。这里要特别注意马氏链收敛定理以及它的具体含义。

细致平稳条件:如果非周期马氏链的转移矩阵P和分布π(x)π(x)满足

π(i)Pij=π(j)Pjifor alli,jπ(i)Pij=π(j)Pjifor alli,j

π(x)π(x)是马氏链的平稳分布,上式被称为细致平稳条件(detailed balance condition)。

满足细致平稳条件的马氏链,其后续状态都是平稳分布状态,不会再改变。

注:细致平稳条件,比平稳分布的条件要强,因此它是平稳分布的充分条件,而非必要条件。

参考:

http://blog.****.net/lanchunhui/article/details/50451620

http://blog.****.net/pipisorry/article/details/46618991

MCMC

对于给定的概率分布p(x)p(x),我们希望能有便捷的方式生成它对应的样本。由于马氏链能收敛到平稳分布,于是一个很的漂亮想法是:如果我们能构造一个转移矩阵为P的马氏链,使得该马氏链的平稳分布恰好是p(x)p(x),那么我们从任何一个初始状态x0x0出发沿着马氏链转移,得到一个转移序列x0,x1,x2,xn,xn+1x0,x1,x2,⋯xn,xn+1⋯,如果马氏链在第n步已经收敛了,于是我们就得到了π(x)π(x)的样本xn,xn+1xn,xn+1⋯

Markov Chain Monte Carlo算法的核心是引入一个参数α(i,j)α(i,j)使得一个普通的马氏链,变成一个满足细致平稳条件的马氏链。即:

p(i)q(i,j)α(i,j)Q(i,j)=p(j)q(j,i)α(j,i)Q(j,i)p(i)q(i,j)α(i,j)⏟Q′(i,j)=p(j)q(j,i)α(j,i)⏟Q′(j,i)

以上即为Metropolis算法。

注:Nicholas Constantine Metropolis,1915~1999,希腊裔美籍物理学家。芝加哥大学博士,反复供职于Los Alamos和芝加哥大学。(其实也就这俩地方,只不过这边干几年到那边去,那边教几年书再回这边来,这么进进出出好几个来回而已)“曼哈顿计划”的主要科学家之一,战后主持MANIAC计算机的研制。

αα的大小,决定了马氏链的收敛速度。αα越大,收敛越快。因此又有Metropolis–Hastings算法,其关键公式为:

α(i,j)=min{p(j)q(j,i)p(i)q(i,j),1}α(i,j)=min{p(j)q(j,i)p(i)q(i,j),1}

注:Wilfred Keith Hastings,1930~2016,美国统计学家,多伦多大学博士,维多利亚大学教授。

Gibbs Sampling

这个算法虽然以Gibbs命名,但却是Geman兄弟于1984年研究Gibbs random field时,发现的算法。

注:Josiah Willard Gibbs,1839~1903,美国科学家。他在物理、化学和数学方面都有重大理论贡献。耶鲁大学博士和教授。统计力学的创始人。

Donald Jay Geman,1943年生,美国数学家。美国西北大学博士,布朗大学教授。随机森林算法的早期研究者之一。

Stuart Alan Geman,1949年生,美国数学家。MIT博士,约翰霍普金斯大学教授。美国科学院院士。最早将Markov random field(MRF)应用于机器视觉和机器学习。

因为高维空间中,沿坐标轴方向上的两点之间的转移,满足细致平稳条件。因此,Gibbs Sampling的核心就是沿坐标轴循环迭代采样,该算法收敛之后的采样点即符合指定概率分布。

这里需要特别指出的是,Gibbs Sampling比Metropolis–Hastings算法高效的原因在于:Gibbs Sampling每次沿坐标轴的转移是必然会被接受的,即α=1α=1

Unigram Model

假设我们的词典中一共有V个词v1,v2,vVv1,v2,⋯vV,那么最简单的Unigram Model是定义一个V面的骰子,每抛一次骰子,抛出的面就对应产生一个词。

频率学派的Unigram Model如下图:

LDA学习

贝叶斯学派的Unigram Model如下图:

LDA学习

这里使用Dirichlet分布的原因在于,数据采用多项分布,而Dirichlet分布正好是多项分布的共轭先验分布。

Dir(p|α)+MultCount(n)=Dir(p|α+n)Dir(p→|α→)+MultCount(n→)=Dir(p→|α→+n→)

和wiki上对Dirichlet分布的pdf函数的描述(参见《数学狂想曲(二)》中的公式1)不同,rickjin在这里采用了如下定义:

Dir(p|α)=1Δ(α)k=1Vpαk1kα=(α1,,αV)Dir(p→|α→)=1Δ(α→)∏k=1Vpkαk−1,α→=(α1,⋯,αV)

其中:

Δ(α)=k=1Vpαk1kdpΔ(α→)=∫∏k=1Vpkαk−1dp→

可以看出两种描述中的B(α)B(α)Δ(α)Δ(α→)是等价的。

下面我们来证明这个结论,即:

B(α)=k=1Vpαk1kdp(1)(1)B(α)=∫∏k=1Vpkαk−1dp→

证明:这里为了简化问题,令V=3。则根据《数学狂想曲(二)》中的公式1可得:

Dir(p|α)=1B(α1,α2,α3)pα111pα212pα313Dir(p→|α→)=1B(α1,α2,α3)p1α1−1p2α2−1p3α3−1

对该pdf进行积分:

1B(α1,α2,α3)pα111pα212pα313dp1dp2dp3=1B(α1,α2,α3)pα111pα212pα313dp∭1B(α1,α2,α3)p1α1−1p2α2−1p3α3−1dp1dp2dp3=1B(α1,α2,α3)∫p1α1−1p2α2−1p3α3−1dp→

由pdf的定义可知,上面的积分值为1。

因此:

B(α1,α2,α3)=pα111pα212pα313dpB(α1,α2,α3)=∫p1α1−1p2α2−1p3α3−1dp→

证毕。

从上面的证明过程,可以看出公式1并不是恒等式,而是在Dirichlet分布下才成立的等式。这也是共轭先验分布能够简化计算的地方。




注:本文中所有公式和思路来自于邹博先生的机器学习升级版,我只是为了加深记忆和理解写的本文。


犹豫了好久终于要开始介绍LDA了,因为其中的概念和分布关系乍一看乱糟糟的,不太容易说明白,也不知道以什么样的形式能更好的说清楚这个小东西,今天斗胆拿出自己学习的心得同大家分享,不太敢确保让读者能明白,请海涵。


矫情够了,该说说正事了!!!!


LDA模型算是pLSA模型的一个升级版吧,全程是Latent Dirichlet Allocation,从字面上可以看得出,这是一个隐藏的Dirichlet分布模型,那什么是Dirichlet分布呢?


Γ函数


既然要说Dirichlet函数,那么就不得不介绍一下Γ函数,Γ函数式欧拉发现的,举例来说Γ(4)=3!=3*2*1,其实就是一个阶乘函数,Γ函数正统的写法是这样的:

LDA学习

那么这个Γ函数和LDA有什么关系呢?别着急,咱们接着谈。


Beat分布


beat分布的概率密度可以如下表示:

LDA学习

其中系数可以这样计算或表示:

LDA学习

接下来我们不妨对beta的概率分布做个积分求期望:

LDA学习

我们可以得到这个结论,还是很漂亮的,计算过程非常简单,只有一些简单地变换而已,只是看起来有点复杂。后边就要用到这个结论。这其中就有两个参数α和β,后边也会介绍这两个参数到底是个什么鬼。


共轭分布


既然要谈LDA,还有个不得不谈共轭分布,很简单的小概念,下边的式子是贝叶斯公式:

LDA学习

其中P(θ|x)是后验概率,P(x|θ)是先验概率,在贝叶斯的理论体系中,如果先验概率分布和后验概率分布满足同样的分布律的话,我们就说先验分布和后验分布是共轭分布,同时,先验分布又叫做似然函数的共轭先验分布。大白话来说就是:如果一个概率分布Z乘以一个分布Y之后的分布仍然是Z,那么就是共轭分布,仅此而已。

先验分布、后验分布、似然估计这几个概念是什么意思,它们之间的关系是什么?

作者:徐鹏
链接:https://www.zhihu.com/question/24261751/answer/153991968
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作为吃瓜群众,尝试回答下。


用“瓜熟蒂落”这个因果例子,从概率(probability)的角度说一下,

先验概率,就是常识、经验所透露出的“因”的概率,即瓜熟的概率。应该很清楚。

后验概率,就是在知道“果”之后,去推测“因”的概率,也就是说,如果已经知道瓜蒂脱落,那么瓜熟的概率是多少。后验和先验的关系可以通过贝叶斯公式来求。也就是:

P(瓜熟 | 已知蒂落)=P(瓜熟)×P(蒂落 | 瓜熟)/ P(蒂落)


似然函数,是根据已知结果去推测固有性质的可能性(likelihood),是对固有性质的拟合程度,所以不能称为概率。在这里就是说,不要管什么瓜熟的概率,只care瓜熟与蒂落的关系。如果蒂落了,那么对瓜熟这一属性的拟合程度有多大。似然函数,一般写成L(瓜熟 | 已知蒂落),和后验概率非常像,区别在于似然函数把瓜熟看成一个肯定存在的属性,而后验概率把瓜熟看成一个随机变量。

---

再扯一扯似然函数和条件概率的关系。似然函数就是条件概率的逆反。意为:

L(瓜熟 | 已知蒂落)= C × P(蒂落 | 瓜熟),C是常数。具体来说,现在有1000个瓜熟了,落了800个,那条件概率是0.8。那我也可以说,这1000个瓜都熟的可能性是0.8C。

注意,之所以加个常数项,是因为似然函数的具体值没有意义,只有看它的相对大小或者两个似然值的比率才有意义,后面还有例子。

----------------------------------------------------------------------------------------------------

同理,如果理解上面的意义,分布就是一“串”概率。

先验分布:现在常识不但告诉我们瓜熟的概率,也说明了瓜青、瓜烂的概率

后验分布:在知道蒂落之后,瓜青、瓜熟、瓜烂的概率都是多少

似然函数:在知道蒂落的情形下,如果以瓜青为必然属性,它的可能性是多少?如果以瓜熟为必然属性,它的可能性是多少?如果以瓜烂为必然属性,它的可能性是多少?似然函数不是分布,只是对上述三种情形下各自的可能性描述。

那么我们把这三者结合起来,就可以得到:后验分布 正比于 先验分布 × 似然函数。先验就是设定一种情形,似然就是看这种情形下发生的可能性,两者合起来就是后验的概率。

至于似然估计

就是不管先验和后验那一套,只看似然函数,现在蒂落了,可能有瓜青、瓜熟、瓜烂,这三种情况都有个似然值(L(瓜青):0.6、L(瓜熟):0.8、L(瓜烂):0.7),我们采用最大的那个,即瓜熟,这个时候假定瓜熟为必然属性是最有可能的。


接上面:

举一个小例子来说吧:

我们都知道抛硬币实验,只有反正两种结果,我们可以认为是两点分布,做k次试验,变成二项分布,概率密度函数(似然函数)我们可以这样表示:

LDA学习

那么先验概率可以如下表示:

LDA学习

如此一来,我们就可以计算后验概率(省区了分母,如果不出输出具体概率值可以省略掉):

LDA学习

从结果可以看出,先验分布和后验分布是形式是一样的,后验概率分布满足(x+α,1-x+β)的Beta分布,即伯努利分布的共轭先验分布式Beat分布。注意,千万别把共轭先验分布和共轭分布搞混淆,共轭先验分布式对于一个似然函数来说的,共轭分布是说该似然函数的先验概率和后验概率的关系是共轭。


那么这个α、β到底是什么呢?

其实是个伪计数,何为伪计数呢?

α、β是决定参数θ的超参数,这么解释吧,投硬币试验中θ是正反面的概率,那么后验概率可以如下表示:

LDA学习

可以很明显的看出,α、β是参数θ的指数,那么实践意义其实就是:α、β在没有任何假设的前提下,硬币朝上的概率分配,因此称之为伪计数。


如果将二项分布推广到多项呢?


共轭分布的直接推广


二项分布的共轭先验分布是Beta分布,多项分布的共轭先验分布是Dirichlet分布(终于扣题了)。

Beta分布:

LDA学习

其中:

LDA学习

Dirichlet分布:

LDA学习

其中:

LDA学习

就是从2到k的一个推广,其中α是一个参数向量,共有K个,那么其中α对Dirichlet分布有何影响呢?

LDA学习

从上图可以看出:

当α=1时,退化为均匀分布

当α>1时,p1=p2=p3=...=pk的概率增大

当α<1时,pi=1的概率增大,p非i的概率增大


LDA的解释:


首先给大家看一张关于LDA过程的“从所周知”的图:

LDA学习

解释:

共有m篇文档,k个主题,每篇文档(长度为Nm)都有各自的主题分布比方说40%的武侠、30%爱情、20%科幻、其余的加起来为10%。这个分布式一个多项分布,该多项分布的参数服从Dirichlet分布,该Dirichlet的参数为α。

每个主题又有各自的词分布,词分布同样是多项分布,参数服从Dirichlet分布,参数为β。

对于每篇分档,中的第n个词的处理,首先从文档中的主题分布采样一个主题,然后在这主题的词分布中采样一个词,不断重复上述过程,知道m篇文档都完成。


那么主题和词是怎么采的呢?


这里先简单介绍一下Gibbs Sampling的过程,后边的采样文章会深入的介绍采样。


Gibbs采样


Gibbs Sampling算法的运行方式是每次概率向量的一个维度,给定其他维度的变量值采样当前维度的值,不断迭代知道收敛输出待估计的参数。


Gibbs在LDA中,初始时随机给文本中的每个词分配主题z0,然后统计每个主题出现的词t的数量以及每个文档m下出现的主题z的数量,每一轮计算LDA学习,即排除当前词的主题分布,根据其他所有词的主题分布估计当前词分配各个主题的概率。

当得到当前词属于所有主题z的概率分布后,根据这个概率分布为该次采样一个新的主题。

用同样方法更新下一个词的主题,知道发现每个文档的主题分布LDA学习和每个主题的词分布LDA学习收敛,算法终止,输出待估计的参数θ和φ,同时每个单词的主题Zmn也可以得到。


实际中应用会设置最大迭代次数,每一次计算LDA学习的公式称为Gibbs updating rule。


那么具体是怎么更新的呢?耐住性子,接着往下看。


我们知道,给定α和β,可以控制主题分布和词分布:

LDA学习

那么我们可以将后边的这两个因子分开来计算:

LDA学习


LDA学习


Gibbs updating rule:

LDA学习

那么最后的结果可以得出结论:

LDA学习

LDA学习

这个也就是我们最终写代码的式子。

我个人觉得这块其实不难,只是我们先搞清楚LDA的过程,再搞明白Gibbs的过程,那么套用思路就可以了,只不过是符号显得很复杂而已,耐心花点时间看一看,其实也就那么回事。


注意


LDA对于短的文章来说效果不是很好,因为还没等收敛就已经结束了,我们可以通过短文拼接来改善。



终于介绍完了,细心地你一定看到我提到过“采样”,没错,采样时贝叶斯学派的做法,后续文章我将会介绍采样相关的文章。



另外一篇:

本系列翻译2003年关于LDA的一篇原始文章


隐狄利克雷分布

摘要
       LDA是一种针对离散数据集合(如文本语料库)的概率生成模型。LDA是一种三层贝叶斯模型,其中集合里的每一个元素都可以看为一些潜在主题集合元素的有限次混合。反之,每一个主题可以看做是一个潜在主题概率空间集的无限混合。文本建模中,主题概率清楚的表示了一个文本。本文采用了有效的逼近推导,我们应用变分法以及用EM算法解决经验主义贝叶斯参数估计。本文最后给出了LDA与一元混合模型、PLSI模型在文本建模、文本分类和协同过滤方面的结果对比。

2.概念和术语
本文使用一些文本语言,如“词”,“文本”,“语料”。这可以帮助我们直接理解,特别是当我们引入隐变量来表示一些抽象概念,例如主题。然而,LDA模型并不仅仅适用于文本,它也有其他方面的应用,包括数据集、协同过滤相关的数据集、基于内容的图像检索以及生物信息学。在7.3节,我们将给出它在协同过滤上的实验结果。
       定义以下几个概念:
  •   词是离散数据的基本单元,可以定义为词库的索引{1,.....V},我们把词表示成单位向量,其中只有一维为1,其他为0。词库里的第v个词,表示成一个V -维向量w (LDA学习LDA学习LDA学习LDA学习)
  •   文本是由N个词组成的序列LDA学习LDA学习,其中LDA学习 LDA学习为序列的第n个词。
  •   语料库由M个文本组成LDA学习
         我们希望找到一个概率模型,使得对给定的语料库,其中的每个文本以高概率出现,并且对于其他相似文本也以高概率出现。
3.隐狄利克雷分布
LDA是关于语料库的生成概率模型,其基本思想是:文本可以表示成潜在主题的随机混合,而每个主题由主题中词的分布决定。
       LDA假设语料库LDA学习中每篇文章LDA学习的生成过程为:
       1. 选择LDA学习LDA学习
       2. 选择LDA学习LDA学习
       3. 对于文本中的任一词LDA学习LDA学习
             (a) 选择一个主题LDA学习LDA学习
             (b) 在主题LDA学习上的一个多项式条件概率分布LDA学习中选择一个词LDA学习LDA学习
基本模型中,我们有以下几点假设:
1. 狄利克雷分布的维数k(主题变量z的个数)已知且为常量
2. 词的概率分布的参数为一个LDA学习LDA学习的矩阵LDA学习LDA学习,其中LDA学习LDA学习,我们暂且把它看成一个要估计的固定常量
3. 泊松假设并不是唯一的,可以根据实际文本长度的需要来决定
4. N是独立的辅助变量,我们可以把它看成一个常量
       k维随机变量LDA学习,可以把它限制在k-1维单纯形上(因为LDA学习LDA学习),且有如下概率密度:
                          LDA学习LDA学习
其中LDA学习LDA学习为k维正实数向量,LDA学习LDA学习是伽马函数。狄利克雷分布是一种很实用的分布---它属于指数分布族;有有限维的充分统计量;是多项式分布的共轭分布。这些性质将有助于第五节LDA算法的推导和参数估计。
        考虑参数LDA学习LDA学习LDA学习LDA学习,则混合主题LDA学习LDA学习,k个主题集LDA学习LDA学习,N个词集LDA学习LDA学习的联合概率分布为:
                         LDA学习LDA学习
其中LDA学习LDA学习是p(LDA学习LDA学习LDA学习|LDA学习)的简化。因此一个文本的边缘分布为:
                         LDA学习
                       LDA学习
而一个语料库的生成概率为所有文本概率的乘积:
                              LDA学习LDA学习
        LDA模型可以表示成如图1所示的概率图模型。
LDA学习
LDA学习
如图所示,LDA是一个三层模型。LDA学习LDA学习LDA学习LDA学习为语料层参数,在形成语料库的过程中被取样一次。变量LDA学习LDA学习为文本层变量,在每个文本中取样一次。变量LDA学习LDA学习LDA学习LDA学习为词层变量,在文本的每个词中取样一次。
        LDA与简单的狄利克雷-多项式分布聚类模型有很大区别。典型的聚类模型为二层模型,其中在语料层,狄利克雷分布被取样一次,而在语料的每个文本中取样一次多项式聚类变量,文本的每个词取决于在这些聚类变量上的条件分布,正如其他聚类模型,文本只跟一个主题相关。LDA是三层模型,文本可以跟多个主题相关。
       贝叶斯统计模型的结构跟图1类似,我们把它叫着层次模型LDA学习LDA学习,准确来讲应该为条件独立的层次模型LDA学习,这种模型也可称为参数化经验主义的贝叶斯模型,它不仅是一种特殊的模型结构,也可用于参数估计。事实上,在第5节中,我们将采用经验主义的贝叶斯方法估计参数,比如LDA的LDA学习LDA学习参数,但我们也会充分利用贝叶斯定理。
3.1 LDA和可交换性

随机变量有穷集LDA学习LDA学习是可交换的,如果它们的联合分布对置换集不变。即,LDA学习LDA学习为整数集1到N的一个置换,则
                                             LDA学习                                       LDA学习
随机变量无穷集是无穷可交换的,如果它的任一有限子序列是可交换的。
        LDA学习LDA学习的表示法理论认为随机变量无穷可交换集的联合概率分布,可以看为随机参数服从某种分布,而相应的随机变量是条件独立同分布的。
       在LDA中,我们假设词由主题生成,且某个文本中的主题是无穷可交换的,由LDA学习LDA学习理论可知,词和主题的概率分布为:
                                     LDA学习     LDA学习
其中LDA学习LDA学习是产生主题的随机参数,通过边缘化主题变量,且LDA学习LDA学习服从狄利克雷分布,可得文本的LDA分布如方程(3)所示。
3.2 连续一元混合
图1所示的LDA模型一般比经常用于分类层次贝叶斯语言的二层模型更精细,通过对隐变量主题z边缘化,我们可以把LDA看成二层模型。
  词的概率分布LDA学习LDA学习
                                           LDA学习
            LDA学习
注意这是一个取决于LDA学习LDA学习的随机量。
  现在我们定义文本LDA学习的生成过程:
  1. 选择LDA学习LDA学习
  2. 对文本中的任一词LDA学习LDA学习
    (a) 从概率分布LDA学习LDA学习选择LDA学习
因此一个文本的边缘分布为连续的混合分布:
                                 LDA学习       LDA学习 
其中LDA学习LDA学习是混合的成分,LDA学习LDA学习是混合的权值。
       图2解释了上述LDA的观点。注意,这个只有LDA学习LDA学习个参数的LDA学习LDA学习单纯形产生了一个有趣的多峰结构。
                                LDA学习LDA学习
                                                                   图2:三个词,四个主题的LDA的一元分布LDA学习LDA学习的例子。
LDA学习平面上的三角形区域表示三个词的所有可能的多项式分布。三角形的每个顶点对应于词之间的确定性分布;三角形的边的中点代表给边上二个词的概率都为0.5;而三角形的中心代表这三个词的一元分布;四个标记为x的点为四个主题下的多项式分布LDA学习LDA学习;在单纯形顶端的表面是关于LDA的LDA学习LDA学习单纯形分布(词的多项式分布)的一个例子