3、LDA的数学基础

3、LDA的数学基础

  将贝叶斯框架应用在主题模型中,需要知道Beta分布、二项分布,Dirichlet分布、多项分布。本部分讲解LDA的数学基础,涉及到大量公式,理解起来有一定难度。如果对这些内容已经熟悉或暂时不想对LDA加以深刻的理解而是想快速入手,那么请先跳到下一章。

(1)Gamma函数

学高等数学的时候,我们都学习过如下一个长相有点奇特的Gamma函数:

Γ(x)=0tx1etdt\Gamma \left( x \right) = \int_0^\infty {{t^{x - 1}}{e^{ - t}}dt}

通过分部积分的方法,可以推导出这个函数有如下递归性质(证明参照LDA算法漫游指南,此处省略):

Γ(x+1)=xΓ(x)\Gamma \left( {x + 1} \right) = x\Gamma \left( x \right)

很容易证明,Gamma函数可以当成是阶乘在实数集上的拓展,具有如下性质:

Γ(n)=(n1)!\Gamma \left( n \right) = \left( {n - 1} \right)!

上面这个阶乘形式需要注意,该式子将在GibbsLDA的推导中用到。

(2)共轭先验分布

在前面已经讲过贝叶斯思想,了解了先验概率和后验概率的概念。贝叶斯公式:

p(θχ)=p(χθ)p(θ)p(χ)p\left( {\theta |\chi } \right) = {{p\left( {\chi |\theta } \right) \cdot p\left( \theta \right)} \over {p\left( \chi \right)}}

其中是p(θ)p\left( \theta \right)先验概率,p(θχ)p\left( {\theta |\chi } \right)是后验概率,p(χθ)p\left( {\chi |\theta } \right)是似然,p(χ)p\left( \chi \right)是证据(Evidence)即观察到的数据的概率。

在贝叶斯概率理论中,如果后验概率p(θχ)p\left( {\theta |\chi } \right)和先验概率p(θ)p\left( \theta \right)满足同样的分布形式,那么,先验分布p(θ)p\left( \theta \right)叫做似然函数p(χθ)p\left( {\chi |\theta } \right)的共轭先验分布。共轭的意义在于其共轭特性可以使得先验分布和后验分布的形式相同,这样一方面符合人的直观(它们应该是相同形式的)另外一方面是可以形成一个先验链,即现在的后验分布可以作为下一次计算的先验分布,如果形式相同,就可以形成一个链条,后验又可以作为下一次的先验分布。

举例

举个例子。投掷一个非均匀硬币,可以使用参数为θ\theta的伯努利模型,θ\theta为硬币为正面的概率,那么结果x的分布形式为:

p(xθ)=θx(1θ)1xp\left( {x|\theta } \right) = {\theta ^x} \cdot {\left( {1 - \theta } \right)^{1 - x}}

其共轭先验为beta分布,具有两个参数和,称为超参数(hyperparameters)。且这两个参数决定了参数θ\theta,其Beta分布形式为:

p(θα,β)=θα1(1θ)β101θα1(1θ)β1dθp\left( {\theta |\alpha ,\beta } \right) = {{{\theta ^{\alpha - 1}}{{\left( {1 - \theta } \right)}^{\beta - 1}}} \over {\int_0^1 {{\theta ^{\alpha - 1}}{{\left( {1 - \theta } \right)}^{\beta - 1}}d\theta } }}

然后计算后验概率

P(θx)P(xθ)P(θ)(θx(1θ)1x)(θα1(1θ)β1)=θx+α1(1θ)1x+β1\begin{array}{l} P\left( {\theta |x} \right)\\ \propto P\left( {x|\theta } \right) \cdot P\left( \theta \right)\\ \propto \left( {{\theta ^x}{{\left( {1 - \theta } \right)}^{1 - x}}} \right)\left( {{\theta ^{\alpha - 1}}{{\left( {1 - \theta } \right)}^{\beta - 1}}} \right)\\ = {\theta ^{x + \alpha - 1}}{\left( {1 - \theta } \right)^{1 - x + \beta - 1}} \end{array}

归一化这个等式后会得到另一个Beta分布,从而证明了Beta分布确实是伯努利分布的共轭先验分布。(这一点也可以参见参数估计方法中贝叶斯估计里面的例子)

(3)Beta分布和二项分布共轭

Beta分布(Beta distribution)

在概率论中,Beta是指一组定义在区间的连续概率分布,有两个参数α\alphaβ\beta,且α,β>0\alpha,\beta>0

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

f(x;α,β)=xα1(1x)β101uα1(1u)β1du=Γ(α+β)Γ(α)Γ(β)xα1(1x)β1=1B(α,β)xα1(1x)β1\begin{array}{l} f\left( {x;\alpha ,\beta } \right) = \frac{{{x^{\alpha - 1}}{{\left( {1 - x} \right)}^{\beta - 1}}}}{{\int_0^1 {{u^{\alpha - 1}}{{\left( {1 - u} \right)}^{\beta - 1}}du} }}\\ = \frac{{\Gamma \left( {\alpha + \beta } \right)}}{{\Gamma \left( \alpha \right)\Gamma \left( \beta \right)}}{x^{\alpha - 1}}{\left( {1 - x} \right)^{\beta - 1}}\\ = \frac{1}{{B\left( {\alpha ,\beta } \right)}}{x^{\alpha - 1}}{\left( {1 - x} \right)^{\beta - 1}} \end{array}

其中的Γ\Gamma便是Γ(x)\Gamma \left( x \right)函数:

Γ(x)=0tx1etdt\Gamma \left( x \right) = \int_0^\infty {{t^{x - 1}}{e^{ - t}}dt}

随机变量X服从Beta分布通常写作:

XBeta(α,β)X \sim Beta\left( {\alpha ,\beta } \right)

如何理解Beta分布中的两个参数:α\alphaβ\beta

α\alphaβ\beta可以认为是形状参数,α\alphaβ\beta共同控制Beta分布的函数“长的样子”:形状千奇百怪,高低胖瘦,如下图13所示:

图片
图13 Beta分布

关于Beta分布有一个非常重要的公式,该公式在LDA算法的Gibbs Sampling公式中也有使用,这个关系就是Beta函数和Gamma函数的关系(该公式也被成为第一型欧拉积分):

B(a,b)=Γ(a)Γ(b)Γ(a+b)B\left( {a,b} \right) = {{\Gamma \left( a \right)\Gamma \left( b \right)} \over {\Gamma \left( {a + b} \right)}}

其中

B(a,b)=01μa1(1μb1)dμB\left( {a,b} \right) = \int_0^1 {{\mu ^{a - 1}}\left( {1 - {\mu ^{b - 1}}} \right)d\mu }

该等式的证明过程参照“LDA算法漫游指南”,此处省略证明过程。

Beta分布的期望(重要)

如果pBeta(tα,β)p \sim Beta\left( {t|\alpha ,\beta } \right)则:

E(p)=01tBeta(tα,β)=01tΓ(α+β)Γ(α)Γ(β)tα1(1t)β1dt=Γ(α+β)Γ(α)Γ(β)01tα(1t)β1dt\begin{array}{l} E\left( p \right) = \int_0^1 {t \cdot Beta\left( {t|\alpha ,\beta } \right)} \\ = \int_0^1 {t \cdot \frac{{\Gamma \left( {\alpha + \beta } \right)}}{{\Gamma \left( \alpha \right)\Gamma \left( \beta \right)}}{t^{\alpha - 1}}{{\left( {1 - t} \right)}^{\beta - 1}}dt} = \frac{{\Gamma \left( {\alpha + \beta } \right)}}{{\Gamma \left( \alpha \right)\Gamma \left( \beta \right)}}\int_0^1 {{t^\alpha }{{\left( {1 - t} \right)}^{\beta - 1}}dt} \end{array}

这个式子右边积分的概率可以对应到对Beta(tα+1,β)Beta\left( {t|\alpha + 1,\beta } \right)这个分布概率密度函数求积分,有

01Γ(α+β+1)Γ(α+1)Γ(β)tα1(1t)β1dt=1\int_0^1 {{{\Gamma \left( {\alpha + \beta + 1} \right)} \over {\Gamma \left( {\alpha + 1} \right)\Gamma \left( \beta \right)}}{t^{\alpha - 1}}{{\left( {1 - t} \right)}^{\beta - 1}}dt} = 1

带回到E(p)E\left( p \right)式:

E(p)=Γ(α+β)Γ(α)Γ(β)Γ(α+1)Γ(β)Γ(α+β+1)=αα+βE\left( p \right) = {{\Gamma \left( {\alpha + \beta } \right)} \over {\Gamma \left( \alpha \right)\Gamma \left( \beta \right)}} \cdot {{\Gamma \left( {\alpha + 1} \right)\Gamma \left( \beta \right)} \over {\Gamma \left( {\alpha + \beta + 1} \right)}} = {\alpha \over {\alpha + \beta }}

上式说明,Beta分布的均值可以用αα+β{\alpha \over {\alpha + \beta }}来估计。

同理,对于Dirichlet(是Beta分布在高维的扩展)分布也有相似的结论

如果pDir(tα)\vec p \sim Dir\left( {\vec t|\vec \alpha } \right),可以证明:(重要)

E(p)=(α1i=1Kαi,α2i=1Kαi,α3i=1Kαi,...,αKi=1Kαi)E\left( {\vec p} \right) = \left( {{{{\alpha _1}} \over {\sum\limits_{i = 1}^K {{\alpha _i}} }},{{{\alpha _2}} \over {\sum\limits_{i = 1}^K {{\alpha _i}} }},{{{\alpha _3}} \over {\sum\limits_{i = 1}^K {{\alpha _i}} }},...,{{{\alpha _K}} \over {\sum\limits_{i = 1}^K {{\alpha _i}} }}} \right)

上式的结论将在LDA模型求解的Gibbs Sampling中用以估计,文档-主题分布和主题-词分布。

二项分布(Binomial distribution)

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

图片

对于k=0,1,2,…,n,其中
图片是二项式系数(这就是二项分布的名称的由来),又记为C(n,k)C\left( {n,k} \right)

Beta分布与二项分布共轭

我们回顾贝叶斯学派思考问题的模式:

先验分布π(θ)\pi \left( \theta \right)+ 样本信息χ\chi \Rightarrow后验分布π(θx)\pi \left( {\theta |x} \right)

上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。换言之,在得到新的样本信息之前,人们对θ\theta的认知是先验分布π(θ)\pi \left( \theta \right),在得到新的样本信息后,人们对θ\theta的认知为后验分布π(θx)\pi \left( {\theta |x} \right)

以Beta分布和二项分布为例:

  1. 为了猜测p=X(k)p = {X_{\left( k \right)}},在获得一定的观测数据前,我们pp对的认知是:f(p)=Beta(pk,nk+1)f\left( p \right) = Beta\left( {p|k,n - k + 1} \right),此称为pp的先验分布;

  2. 然后为了获得这个结果”Yi{Y_i}中有m1{m_1}个比pp小,m2{m_2}个比pp大”,针对Yi{Y_i}是做了mm次贝努利实验,所以m1m_1服从二项分布B(m,p)B\left( {m,p} \right)

  3. 在给定了来自数据提供的(m1,m2)\left( {{m_1},{m_2}} \right)知识后,pp的后验分布变为f(pm1,m2)=Beta(pk+m1,nk+1+m2)f\left( {p|{m_1},{m_2}} \right) = Beta\left( {p|k + {m_1},n - k + 1 + {m_2}} \right)

当先验分布和后验分布都是相同类型的分布的时候,其先验称为共轭先验分布。如上述先验分布和后验都服从Beta分布,而新增观测数据服从二项分布,那么就称为Beta-Binomial共轭。即,Beta分布是二项式分布的共轭先验概率分布。Beta分布是二项分布的共轭先验分布,其证明过程在“LDA算法漫游指南”中有详细介绍, 具体如下:

似然函数是二项分布:

图片

先验分布Beta分布如下:

p(q=x)=xa1(1x)b1B(α,β)p\left( {q = x} \right) = {{{x^{a - 1}}{{\left( {1 - x} \right)}^{b - 1}}} \over {B\left( {\alpha ,\beta } \right)}}

其中,B(a,b)=Γ(α)Γ(β)Γ(α+β)B\left( {a,b} \right) = {{\Gamma \left( \alpha \right)\Gamma \left( \beta \right)} \over {\Gamma \left( {\alpha + \beta } \right)}}

由贝叶斯 先验分布 * 似然 = 后验分布

图片

可以看出后验分布的形式又变成了Beta分布,和前驱分布类型一致,称之为共轭。

观察到后验和先验都是Beta分布,但XBeta(α,β)X \sim Beta\left( {\alpha ,\beta } \right)变成了XBeta(α+s,β+f)X \sim Beta\left( {\alpha + s,\beta + f} \right)alpha,βalpha ,\beta是超参数变量。如果以后有新增的观测数据,后验分布又变成先验分布来进行计算,Beta分布的超参数也会继续发生变化。

可以看到,新增的参数f,s。我们可以将参数f看做是x=1出现的“次数”;参数s看作是x=0出现的“次数”:当有一个新的x=0的观测数据到来的时候s=α+1s = \alpha + 1,$f = \beta $,更新相应的参数。当观测数据为x=1时,,。其实就是数量的增加,所以这两个超参数,也被称为伪计数(pseudo
count)。

(4)Dirichlet分布和多项式分布共轭

Dirichlet分布

Dirichlet分布是Beta分布在多项情况下的推广,也是多项分布的共轭前驱分布,其概率密度函数如下:

这里有

其中的称为Dirichlet 分布的归一化系数

关于Dirichlet分布,了解到Dirichlet分布是Beta分布在多项的扩展。至于“Beta分布是二项分布的共轭先验分布”,也有“Dirichlet分布是多项分布的共轭先验分布”。关于Dirichlet分布有以下重要的式子:

该公式的证明思路与“Beta函数与Gamma函数的关系”类似。

Dirichlet分布和多项分布共轭

如果x的取值有K种情况,就称x服从多项分布。往往用维数为K的矢量来描述。矢量中仅可能一个取值为1,其他都为0,用来描述x取第k个值。这样其概率分布可以描述为:

其中且。当对多项分布的事件进行多次,取值为1至K项的事件分别发生次的概率则为:

与beta分布之于二项分布一样,我们找寻多项分布的共轭先验,其共轭先验应该具有这样的形式:

归一化后的表达形式为:

这个分布就叫做Dirichlet分布,其中α是dirichlet分布的参数,μ是变量。

由于限制且,因此被限制在单纯形中(下图以k=3为例展示了这个单纯形,注意这个单纯形是一个平面,而不是那个三角体。因为使得虽然有三个参数但实际自由度为2,换句话说可以投影到的平面上成为一个平面三角形)。

D:\Mywork\shengsheng\LDA\img\图片5.png

在上面这个介绍的例子中,可以将Dirichlet分布理解为概率的概率。因为表示的是多项分布的概率,而Dir()表达的是取某种值情况下的概率,所以可以理解为概率的概率。举个经典的例子,扔骰子。很显然这是一个多项分布,骰子的呈现只可能是1-6中的一种情况。如果我们将这个事件重复10000次,其中出现1-6的次数分别为2000,2000,2000,1500,1500,1000,那么的取值就是(0.2,0.2,0.2,0.15,0.15,0.1)。那么Dirichlet概率描述的就是取值为(0.2,0.2,0.2,0.15,0.15,0.1)的概率。

根据“LDA数学八卦”所述,用贝叶斯分析过程直观的表述
Dirichlet分布与多项式分布的关系:

http://img.blog.csdn.net/20141118221128562

,可把

http://img.blog.csdn.net/20141118221159725

从整数集合延拓到实数集合,从而得到更一般的表达式如下:

针对于这种观测到的数据符合多项分布,参数的先验分布和后验分布都是Dirichlet
分布
的情况,就是Dirichlet-Multinomial
共轭
。换言之,至此已经证明了Dirichlet分布的确就是多项式分布的共轭先验概率分布。

这意味着,如果我们为多项分布的参数p选取的先验分布是Dirichlet分布,那么以p为参数的多项分布用贝叶斯估计得到的后验分布仍然服从Dirichlet分布。

进一步,一般形式的Dirichlet 分布定义如下:

而对于给定的和,其多项分布为:

结论是:Dirichlet分布和多项分布是共轭关系

参考文献

  1. Blei D M, Ng A Y, Jordan M I. Latent dirichlet allocation[M]. JMLR, 2003. —LDA原始论文

  2. http://blog.csdn.net/v_july_v/article/details/41209515 —July blog通俗理解LDA主题模型

  3. http://vdisk.weibo.com/s/zrFL6OXKgKMAf —Machine Learning读书会第8期上,沈博讲主题模型的PPT

  4. http://www.arbylon.net/publications/text-est.pdf —《Parameter estimation for text analysis》

  5. http://itfish.net/article/61104.html —贝叶斯公式、参数估计

  6. http://blog.jqian.net/post/plsa.html —BLOG | 逍遥郡(主题模型之pLSA)

  7. http://blog.jqian.net/post/lda.html —BLOG | 逍遥郡(主题模型之LDA)

  8. PLSA原始论文—Hofmann T. Probabilistic latent semantic analysis[C]// Fifteenth Conference on Uncertainty in Artificial Intelligence. Morgan
    Kaufmann Publishers Inc. 1999:289-296.

  9. rickjin的LDA数学八卦—http://vdisk.weibo.com/s/q0sGh/1360334108?utm_source=weibolife

  10. 马晨的LDA算法漫游指南—https://yuedu.baidu.com/ebook/d0b441a8ccbff121dd36839a.html

  11. July blog贝叶斯方法介绍—http://blog.csdn.net/v_july_v/article/details/40984699#t6

展开全文
相关主题
Top