前言

这段时间先把LDA需要的数学知识先给学了一遍,本文将数学知识以及自己对其的理解梳理成这三个部分:

  1. 一些最基础概念
  2. 基础函数-Gamma函数
  3. 概率分布-Beta与Dirichlet分布

一些最基础概念

  • 分布函数:设X是一个随机变量,x是任意实数,函数F(x)=P(X≤x)称为X的分布函数。有时也记为X~F(x)

    由其定义易知有下述性质

    1. 单调非降性
      1. 有界性:0F(x)1 ;F()=0 ;F(+)=1
      2. 右连续性:F(x)=F(x+0)
  • 概率密度函数:对于一维实随机变量X,设它的累积分布函数是FX(x),如果存在可测函数fX(x),满足

    Fx(a)=afx(x)dx,<a<

    X 是一个连续型随机变量,并且fX(x)是它的概率密度函数

    简而言之就是分布函数是概率密度函数的积分,概率密度函数是分布函数的导数

基础函数-Gamma函数

  • Gamma 函数的定义

    Γ(x)=0tx1etdt

    其函数形状如下

    LDA主题模型之数学基础

    通过分部积分可以推导出这个函数有如下的递归性质

    Γ(x+1)=xΓ(x)

    分部积分以及推导过程如下:
    (4)Γ(x)=0tx1etdt(5)=0tx1det(6)=[(ettx1|0)0etdtx1](7)=[00etdtx1](8)=0ettx2(x1)dt

    (9)Γ(x+1)=0ettx2(x1)dt(10)=xΓ(x)

    由于上述递归性质,Γ(x)函数可以当成是阶乘在实数集上的延拓

    Γ(n)=(n1)!

    使得阶乘能在实数集上的延拓,这也是我认为Gamma函数最大的贡献

    另外,由Gamma函数延伸出的一个函数如下,称为 Digamma 函数

    Ψ(x)=dlogΓ(x)dx

    涉及求Dirichlet 分布相关的参数的极大似然估计时,往往需要使用到这个Digamma函数。与Gamma函数一样,Digamma 函数具有递归性质,如下
    Ψ(x+1)=Ψ(x)+1x

    问题

    1. 该积分式有原函数吗,不然是如何计算的?
    2. 由matlab计算得到Γ(0)=那么Γ(1)=0Γ(0)=1是为什么?
  • Gamma 函数用处

    上面也说了,Gamma 函数重要意义是使得阶乘能在实数集上进行延拓,那么只要是能用阶乘表示的都可以使用Gamma 函数将其延拓至实数域

    例如导数。 xn的k阶导数如下:

    f(k)(xn)=n!(nk)!xnk

    其中的阶乘可以用Gamma 函数表达,表达为
    Γ(n+1)Γ(nk+1)xnk

    这样就将导数的阶从整数延拓到实数,例如,取n=1我们可以计算 x 的 阶导数为
    Γ(1+1)Γ(11/2+1)x11/2=2xπ

  • Gamma 分布

    Gamma函数定义为Γ(x)=0tx1etdt,稍作变换可得

    0xα1exΓ(α)dx=1

    由于其结果等于1,于是可以取积分中的函数作为概率密度,得到一个Gamma 分布的密度函数
    Gamma(x|α)=xα1exΓ(α)

    如果做一个变换x=βx,则
    Γ(α)=0(βt)α1eβtdβt=βα0tα1etβdt

    这样变换之后就得到Gamma 分布的更一般的形式
    Gamma(t|α,β)=βαtα1eβtΓ(α)

    其中 α 称为 shape parameter, 主要决定了分布曲线的形状;而β 称为 rate parameter 或者inverse scale parameter (1β称为scale parameter),主要决定曲线有多陡

    自己的一点理解

    指数分布与gamma分布息息相关,指数分布又与泊松分布密不可分。因此从泊松分布到指数分布再到gamma分布可能会稍微好理解一点

    1. 泊松分布

    描述单位时间内,事件具体的发生概率

    P(N=n)=(λ)neλn!

    P 表示概率,N表示某种函数关系,n 表示数量。

    例如,单位时间(假设为1分钟)经过某路口的人次为5人次的概率,就表示为P(N=5),加入观察得到平均每分钟(注意此处单位相同)有10人次经过该路口,则式中的λ=10

    将上式进行变换,可得到本质相同的扩展式

    P(N(t)=n)=(λt)neλtn!

    它描述了t个单位时间内,事件具体的发生概率。 其实本质相同,只是它将原本的单位时间(记为d)变成了新的“单位时间” d=td

    1. 泊松分布→指数分布:

    描述事件发生的时间间隔的概率。

    其可以从泊松分布中推出。如果下次事件发生要间隔时间t,那就等同于t时间内没有事件发生,由泊松分布可得

    P(N(t)=0)=(λt)0eλt0!=eλt

    上式是指t时间内没有事件发生的概率,那么事件在时间 t 之内发生的概率就是
    1P(N(t)=0)=1eλt

    这就导出了指数分布公式了

    1. 指数分布→gamma分布

    指数分布是gamma分布当α=1时候的情况:

    (11)Γ(t|α,λ)=λαtα1eλtΓ(α)(12)α=1:Γ(t|1,λ)=λαeλt

    指数分布描述事件发生的时间间隔的概率,那么gamma分布就是描述的是α个事件都发生,需要经历多长时间

概率分布-Beta与Dirichlet分布

  • Beta分布

    1. 从一个例子导出beta分布

      问:机器产生10个符合均匀分布的[0,1]之间的随机数,求这10个数里面第7小的数(记为X(7))最有可能是多少?

      ​   很明显,这个数有可能是0~1上的任意一个数,但是它出现在数轴的不同地方的可能性是不同的。就简单这么想,如果X(7)=0.01(0),那么那6个比它小的数就分布在0~0.01之间,显然很难出现这样的情况。如果X(7)=0.99(1) 也是同理。

      ​   我们很可能会认为X(7)应该是在0.7左右比较合理,因为我们认为这样的话出现题目中的情况的可能性最大。 这就和似然函数的定义很像,由已知某些观测所得到的结果,对有关事物的性质的参数进行估计

      ​   于是我们现在只需要找出X(7)在0~1上的概率分布,取密度函数的峰值对应的x值就是最有可能的数字了。

      我们先考虑如下一个符合上述要求的事件e:

      e={X1[x,x+Δx],Xi[0,x)(i=2,,k),Xj(x+Δx,1](j=k+1,,n)}

      这样的话,可以求得P(e):
      P(e)=i=1nP(Xi)=xk1(1xΔx)nkΔx=xk1(1x)nkΔx+o(Δx)

      这里的e是有考虑顺序的,下面再考虑一个事件E:
      E={n1[x,x+Δx],nk1[0,x),nnk(x+Δx,1]}

      这时候由组合数定理可得
      P(E)=nCk1n1P(e)=nCk1n1i=1nP(Xi)=nCk1n1xk1(1x)nkΔx+o(Δx)

      考虑n 个数中有两个数落在了区间[x,x+Δx]的情况
      e={X1,X2[x,x+Δx],Xi[0,x)(i=3,,k),Xj(x+Δx,1](j=k+1,,n)}

      这时,P(E)=xk2(1xΔx)nk(Δx)2=o(Δx),结果是Δx的高阶无穷小

      因此

      P(xX(k)x+Δx)=n(n1k1)P(E)+o(Δx)=n(n1k1)xk1(1x)nkΔx+o(Δx)

      由此可求X(k)的概率密度函数
      f(x)=limΔx0P(xX(k)x+Δx)Δx=n(n1k1)xk1(1x)nk=n!(k1)!(nk)!xk1(1x)nkx[0,1]=Γ(n+1)Γ(k)Γ(nk+1)xk1(1x)nk

      α=k,β=nk+1,得到
      (13)f(x)=Γ(α+β)Γ(α)Γ(β)xα1(1x)β1(beta)

      终于,导出了一般意义上的 Beta 分布。

      说说我对beta分布的理解

      ​   beta函数表达的是概率的概率分布,例如知道总共N次的抛硬币实验中,正面k次,反面N-k次,那么根据这些数据(知识)就能计算出P在[0,1]上的取值的概率,假如P(0.5)=0.8就表示P为0.5的概率为0.8,这样的分布就是上面推导出来的beta分布。对于这个例子,α=k+1,β=Nk+1

      ​ 为什么?

      ​   因为上述的10个随机数的例子完全可以转化成与抛硬币相同的一个二元问题:产生9个随机数(待会解释为什么是9),有6个随机数属于A集合,有3个随机数属于A的补集(CA),求随机数属于A集合的概率最可能是多少。 能这样转化的原因是原题中的第7小的数(记为X(7))是分界点,它将数据分成了小于它的数(6个),以及大于它的数(3个),这样的话,X(7)的取值就等同于Px<x(7) 。也就是说,上面求出的X(7)的概率分布,就是Px<x(7)的概率分布,这也就是为什么beta分布是概率的概率分布的原因

    2. Beta-Binomial 共轭

        我们知道,贝叶斯参数估计的基本过程是 先验分布 + 数据的知识 = 后验分布,Beta-Binomial 共轭表明的是这么一个共轭性质

      Beta+Binomial=Beta

      也就是说,一个beta分布当新增了符合Binomial分布的实验数据之后,其更新得到的分布仍然是Beta分布。

      对共轭性质的理解

      ​   上一节讨论过,一个正面次数为k,反面次数为N-k的抛硬币实验,其正面的概率P的概率分布符合beta分布,其参数为α=k+1,β=Nk+1

      ​   对于这个实验,如果再继续做M次实验,M次中有u次为正,明显的,这样的实验符合二项分布

      ​   那么,有了新的这些实验数据之后,原来的k次正面就变成了k+u次正面,而N-k的反面次数变成了N+M-k-u次。 明显更新后的数据得出的P的概率分布仍然符合概率分布,只是其参数发生变化α=k+u+1 ,

      β=M+Nku+1

      ​   所以,二项分布的数据只是使得原来的beta分布变成了新的beta分布,共轭的更准确的公式表达是:

      Beta(p|α,β)+BinomialCount(m1,m2)=Beta(p|α+m1,β+m2)

      ​   因此,对于一个beta分布Beta(p|α,β)可以写成这样的后验分布:
      Beta(p|1,1)+BinomialCount(α1,β1)=Beta(p|α,β)

      ​   这个等式的理解是,Beta(p|1,1)就等同于均匀分布,也就是说这里的先验分布是Uniform(0,1),这个很容易理解,因为没有任何的正面还是反面的数据,因此P在[0,1]上的取值的可能性是完全一样的。 这时候添加“α1次正面 β1次反面”的数据,就得到了后验分布Beta(p|α,β)

      ​   下图是beta分布在不同参数下的分布曲线

      LDA主题模型之数学基础

  • Dirichlet分布

    1. 随机数的例子导出Dirichlet分布公式

      ​   将之前的随机数的问题变成这样的问题:产生20个随机数(0到1之间的),猜排序后的第7和第13个的数最可能是什么。

      ​   找的思路和上面其实是一样的,设第7个数为X(7),第13个数为X(13),那么求出概率分布,取概率最大的点就是最有可能的取值点了。不过这里的概率分布要求的是X(7)X(13)在[0,1]上的联合概率分布,即P(x(7)=x1,x(13)=x2)

      ​   上面的问题泛化为求这么一个事件E

      E={n1[x1,x1+Δx],nk11[0,x1),n1[x2,x2+Δx],nk21(x1+Δx,x2),nnk1k2(x2+Δx,1]}

      ​   该事件如下图所示

      LDA主题模型之数学基础

      ​   仿照beta分布的推导,我们对该事件进行推导

      P(X(k1)(x1,x1+Δx),X(k1+k2)(x2,x2+Δx))=n(n1)(n2k11,k21)x1k11x2k21x3nk1k2(Δx)2=n!(k11)!(k21)!(nk1k2)!x1k11x2k21x3nk1k2(Δx)2(x3=1x1x2)

      ​ 这样就得到联合概率
      f(x1,x2,x3)=n!(k11)!(k21)!(nk1k2)!x1k11x2k21x3nk1k2=Γ(n+1)Γ(k1)Γ(k2)Γ(nk1k2+1)x1k11x2k21x3nk1k2

      ​ 令α1=k1,α2=k2,α3=nk1k2+1,上式子变成
      (14)f(x1,x2,x3)=Γ(α1+α2+α3)Γ(α1)Γ(α2)Γ(α3)x1α11x2α21x3α31

      ​ 这就是三维的Dirichlet分布,更一般的形式容易归纳如下:
      (15)f(x1,...,xk;α1,...,αk)=Γ(i=1Kαi)i=1KΓ(αi)i=1Kxiai1

      1. 说说我对Dirichlet分布的理解

      ​    我认为Dirichlet分布其实就是beta分布在更高维度上的扩展而已。因此,可以完全类比beta分布的理解。

        对于beta分布而言,它是二项分布中的成功的概率的概率分布,那么对于Dirichlet分布而言,它是多项分布中的多个概率的联合概率分布。

      ​   在beta分布的理解中我举的例子是抛硬币,那么对于这里的多项分布而言,一个很自然的例子就是抛骰子,为了理解方便,这里简化成三面的骰子(三个面记为a,b,c)。这个骰子抛出N次,a面朝上的有A次,b面朝上的有B次(很显然的,c面朝上的是N-A-B次),由这些试验结果就可以得到联合概率P(Pa,Pb,Pc)在[0,1]上的取值的概率。若用颜色深浅表示概率的大小,三个轴分别表示a,b,c的概率,那么下图就是分别由不同的α初始化得到不同的Dirichlet 分布,红颜色代表概率密度较大,蓝颜色的区域概率密度较小

      LDA主题模型之数学基础

      ​   同时注意到Pa+Pb+Pc=1,因此原本的3+1=4维的概率分布函数就可以映射到三维的空间上(P(Pa,Pb)),其中Pa,Pb具有相互约束,约束条件为Pa+Pb<=1。降低维度之后,得到的就是《数学八卦》中的分布图了

      LDA主题模型之数学基础

      疑问:映射到三维空间后,其x-y平面上的覆盖范围应该是一个直角三角形,直角位于(0,0,0),为什么上图画出来并不是直角三角形

      1. Dirichlet-Multinomial 共轭

      Dirichlet-Multinomial共轭表明的是这么一个共轭性质

      Dirichlet+Multinomial=Dirichlet

      也就是说,一个Dirichlet分布当新增了符合Multinomial分布的实验数据之后,其更新得到的分布仍然是Dirichlet分布。

      对共轭性质的理解

      ​   上一节讨论过,一个a面次数为k1,b面次数为k2,c面次数为Nk1k2的抛三面骰子实验,其a面和b面的联合概率P(a,b)的概率分布符合Dirichlet分布,其参数为

      α1=k1+1,α2=k2+1,α3=Nk1k2+1

      ​   对于这个实验,如果再继续做M次实验,M次中有m1次为a面,有m2次为b面,当然,c面是Mm1m2,明显的,这样的实验符合多项分布

      ​   有了新的这些实验数据之后,原来的k1次a面就变成了k1+m1次正面,而k2的b面次数变成了k2+m2次。 明显更新后的数据得出的联合概率P(a,b)的概率分布仍然符合Dirichlet分布,只是其参数发生变化

      α1=k1+m1+1,α2=k2+m2+1,α3=N(k1+m1)(k2+m2)+1

      ​   所以,新增加的多项分布的数据只是使得原来的Dirichlet分布变成了新的Dirichlet分布,共轭的更准确的公式表达是:
      Dirichlet(p|k)+MultCount(m)=Dirichlet(p|k+m)

      ​ 因此,对于一个Dirichlet分布Dirichlet(p|α1,α2,α3)可以写成这样的后验分布:
      Dirichlet(p|1,1,1)+MultCount(α11,α21,α31)=Dirichlet(p|α1,α2,α3)

      ​   这个等式的理解是,Dirichlet(p|1,1,1)就因为是没有任何实验时的分布,因此等同于均匀分布,也就是说这里的先验分布是Uniform(0,1),这个很容易理解,因为没有任何的实验数据,因此P(a,b)在[0,1]上的取值的可能性是完全一样的。 这时候添加“α11次a面, α21次b面, α31次c面”的数据,就得到了后验分布Dirichlet(p|α1,α2,α3)

相关文章:

  • 2021-07-18
猜你喜欢
  • 2021-04-15
  • 2021-11-17
  • 2021-12-24
  • 2022-01-23
  • 2021-09-30
  • 2021-09-30
相关资源
相似解决方案