LDA
2022-10-27

 

LDA简介

潜在狄利克雷分配(latent Dirichlet allocation,LDA),是基于贝叶斯学习的话题模型。

LDA模型是文本集合的生成概率模型。假设每个文本由话题的一个多项分布表示,每个话题由单词的一个多项分布表示。特别假设文本的话题分布的先验分布是狄利克雷分布,话题的单词分布的先验分布也是狄利克雷分布。

LDA的文本集合的生成过程如下:

  1. 随机生成一个文本的话题分布;
  2. 在该文本的每个位置,依据该文本的话题分布随机生成一个话题,然后在该位置依据该话题的单词分布随机生成一个单词,直到文本的最后一个位置,生成整个文本;
  3. 重复以上步骤,生成所有文本。

 

LDA模型是含有隐变量的概率图模型:

  1. 隐变量:

    • 每个文本的话题分布
    • 每个话题的单词分布
    • 文本的每个位置的话题
  2. 观测变量:

    • 文本的每个位置的单词

 

LDA模型的学习通常使用吉布斯采样或变分EM算法,前者是蒙特卡罗法,后者是近似算法。

 

狄利克雷分布

分布定义

概率分布关系

概率分布的关系如上图所示,各概率分布定义如下所述。

 

多项分布

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

多项分布定义:若多元随机变量 X=(X1,X2,,Xk)

(1)P(X1=n1,X2=n2,,Xk=nk)=n!n1!n2!nk!p1n1p2n2pknk=n!i=1kni!i=1kpinip=(p1,p2,,pk)pi0i=1,2,,ki=1kpi=1i=1kni=n

X(n,p)XMult(n,p)

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

 

狄利克雷分布

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

θ=(θ1,θ2,,θk)

(2)p(θα)=Γ(i=1kαi)i=1kΓ(αi)i=1kθiαi1i=1kθi=1θi0i=1,2,,kα=(α1,α2,,αk)αi>0i=1,2,,k

θαθDir(α)

式中Γ(s)是伽马函数,定义为:

(3)Γ(s)=0xs1ex dx,s>0

该函数具有如下性质:

(4)Γ(s+1)=sΓ(s)Γ(s+1)=s!s

令:

(5)B(α)=i=1kΓ(αi)Γ(i=1kαi)

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

(6)p(θα)=1B(α)i=1kθiαi1B(α)

由概率密度函数性质得:

(7)Γ(i=1kαi)i=1kΓ(αi)i=1kθiαi1 dθ=Γ(i=1kαi)i=1kΓ(αi)i=1kθiαi1 dθ=1

因此:

(8) B(α)=i=1kθiαi1 dθ

上式为多元贝塔函数的积分表示。

 

二项分布

二项分布是多项分布的特殊情况,是指如下概率分布:X是离散随机变量,取值为m,其概率质量函数为:

(9)P(X=m)=(nm)pm(1p)nm,m=0,1,2,,nnp(0p1)

n为1时,二项分布变成伯努利分布或0-1分布。

贝塔分布

贝塔分布是狄利克雷分布的特殊情况,是指如下概率分布:X是随机变量,取值范围是[0,1],其概率密度函数为:

(10)p(x)={1 B(s,t)xs1(1x)t1,0x10, 其他 s>0t>0

 B(s,t)是贝塔函数,定义为:

(11) B(s,t)=Γ(s)Γ(t)Γ(s+t)=01xs1(1x)t1 dxs>0t>0

s,t是自然数时,

(12) B(s,t)=(s1)!(t1)!(s+t1)!

共轭先验

狄利克雷重要性质:(1)狄利克雷分布属于指数族分布;(2)狄利克雷分布是多项分布的共轭先验。

如果后验分布与先验分布属于同类,则先验分布与后验分布称为共轭分布,先验分布称为共轭先验

如果多线分布的先验分布是狄利克雷分布,则其后验分布也是狄利克雷分布,两者构成共轭先验。作为先验分布的狄利克雷分布的参数又称为超参数。使用共轭分布的好处是便于从先验分布计算后验分布。

W={w1,w2,,wk}是由k个元素组成的集合。随机变量X服从W上的多项分布,XMult(n,θ),其中n=(n1,n2,,nk)θ=(θ1,θ2,,θk)是参数。参数n为从W中重复独立抽取样本的次数,ni为样本中wi(i=1,2,,k)出现的次数,参数θiwi出现的概率。

将样本数据表示为D,目标是计算在样本数据D给定条件下参数θ的后验概率p(θD)

对于给定的样本数据D,似然函数是:

(13)p(Dθ)=θ1n1θ2n2θknk=i=1kθini

假设随机变量θ服从狄利克雷分布p(θα),其中α=(α1,α2,,αk)为参数,则θ的先验分布为:

(14)p(θα)=Γ(i=1kαi)i=1kΓ(αi)i=1kθiαi1=1 B(α)i=1kθiαi1=Dir(θα),αi>0

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

(15)p(θD,α)=p(θ,D,α)p(D,α)=p(α)p(θ,Dα)p(α)p(Dα)=p(θα)p(Dθ,α)p(Dα)=p(θα)p(Dθ)p(Dα)=i=1kθini1 B(α)θiαi1i=1kθini1 B(α)θiαi1 dθ=1 B(α+n)i=1kθiαi+ni1=Dir(θα+n)

可以看出,先验分布p(θα)和后验分布p(θD,α)都是狄利克雷分布,两者有不同的参数,所以狄利克雷分布是多项分布的共轭先验。狄利克雷后验分布的参数等于狄利克雷先验分布参数α=(α1,α2,,αk)加上多项分布的观测计数n=(n1,n2,,nk)

备注:关于上述的公式推导,补充个人的解释

p(θα)p(Dθ)=p(θα)p(Dθ,α)

等式左边可以理解为给定超参数α,先生成参数θ,然后生成数据集D,可以理解为αθD,参考马尔可夫性,可得p(Dθ)=p(Dθ,α)

 

LDA模型

基本想法

LDA文本生成过程

上图为LDA的文本生成过程:

  1. 基于单词分布的先验分布(狄利克雷分布)生成多个单词分布,即决定多个话题内容
  2. 基于话题分布的先验分布(狄利克雷分布)生成多个话题分布,即决定多个文本内容
  3. 对每个文本,基于该文本的话题分布生成话题序列,针对每一个话题,基于话题的单词分布生成单词,整体构成一个单词序列,即生成文本,重复这个过程生成所有文本

LDA是概率图模型,其特点是以狄利克雷分布为多项分布的先验分布,学习就是给定文本集合,通过后验概率分布的估计,推断模型的所有参数。利用LDA进行话题分析,就是对给定文本集合,学习到每个文本的话题分布,以及每个话题的单词分布。

LDA与PLSA的异同:

  1. 相同点

    • 假设话题是单词的多项分布,文本是话题的多项分布;
  2. 不同点

    • 对文本生成过程假设不同:LDA使用狄利克雷分布作为先验分布,而PLSA不使用先验分布(或假设先验分布是均匀分布);
    • 学习过程不同:LDA基于贝叶斯学习,PLSA基于极大似然估计。

 

模型定义

模型要素

LDA使用三个集合:

  1. 单词集合

    W={w1,,wv,,wV},其中,wv是第v个单词,v=1,2,,VV是单词的个数。

  2. 文本集合

    D={w1,,wm,,wM},其中,wm是第m个文本,m=1,2,,MM是文本的个数。

    文本wm是一个单词序列,wm=(wm1,,wmn,,wmNm),其中wmn是文本wm的第n个单词,n=1,2,,Nm是文本wm中单词的个数。

  3. 话题集合

    Z={z1,,zk,,zK},其中,zk是第k个话题,k=1,2,,KK是话题的个数。

 

对每个话题zk生成单词Dir(β)φkp(wzk)Mult(1,φk)

  1. 话题zk由一个单词的条件概率分布p(wzk)决定,wW
  2. 分布p(wzk)服从多项分布(严格意义上讲是类别分布,每次只做1次试验),其参数为φk
  3. 参数φk服从狄利克雷分布(先验分布),其超参数为β
  4. 参数φk是一个V维向量,φk=(φk1,φk2,,φkV),其中,φkv表示话题zk生成单词wv的概率
  5. 所有话题的参数向量构成一个K×V的矩阵φφ={φk}k=1K
  6. 超参数β也是一个V维向量,β=(β1,β2,,βV)

总结:φkDir(β)

p(wzk)Mult(1,φk)

 

对每个文本wm生成话题Dir(α)θmp(zwm)Mult(1,θm)

  1. 文本wm由一个话题的条件概率分布p(zwm)决定,zZ

  2. 分布p(zwm)服从多项分布(严格意义上的类别分布),其参数为θm

  3. 参数θm服从狄利克雷分布(先验分布),其超参数为α

  4. 参数θm是一个K维向量,θm=(θm1,θm2,,θmK),其中,θmk表示文本wm生成话题zk的概率

  5. 所有文本的参数向量构成一个M×K的矩阵θθ={θm}m=1M

  6. 超参数α也是一个K维向量,α=(α1,α2,,αK)

    总结:θmDir(α)

    p(zwm)Mult(1,θm)

 

分布示例(以文本生成话题为例):

  1. 狄利克雷分布 - 初始化参数α=[10,5,1]

  2. 根据狄利克雷分布,生成多项分布的参数θ

  3. 根据多项分布,生成话题:p(zwm)Mult(1,p),p=[0.60858225,0.30296113,0.08845661]

 

生成过程

给定单词集合W,文本集合D,话题集合Z,狄利克雷分布的超参数αβ

(1)生成话题的单词分布

随机生成K个话题的单词分布。按照狄利克雷分布Dir(β)随机生成一个参数向量φkφkDir(β),将φk作为话题zk的单词分布(多项分布)p(wzk)的参数,wWk=1,2,,K

(2)生成文本的话题分布

随机生成M个文本的话题分布。按照狄利克雷分布Dir(α)随机生成一个参数向量θmθmDir(α),将θm作为文本wm的话题分布(多项分布)p(zwm)的参数,wmDm=1,2,,M

(3)生成文本的单词序列

文本wm(m=1,2,,M)的单词wmn(n=1,2,,Nm)的生成过程如下:

(3-1)生成话题:按照多项分布Mult(θm)随机生成一个话题zmnzmnMult(θm)

(3-2)生成单词:按照多项分布Mult(φzmn)随机生成一个单词wmnwmnMult(φzmn)

 

伪代码

LDA生成架构图

  1. 初始化话题分布的超参数α,长度为K,和话题数一样

    α=(α1,α2,,αK)

  2. 生成话题分布的参数θ,其长度为K,共M个,一个文档对应一个话题分布

    θmDir(α)

    p(zwm)Mult(1,θm)

    假设有三个话题,对第一个文档:p(zw1)Mult(1,θ1=[0.7,0.2,0.1]),则可以按该分布生成话题序列:

  3. 初始化单词分布的超参数β,长度为V,和单词数一样

    β=(β1,β2,,βV)

  4. 生成单词分布的参数φ,其长度为V,共K个,一个话题对应一个单词分布

    φkDir(β)

    p(wzk)Mult(1,φk)

    假设第一个文档有两个单词,因为一共有三个话题,使用φkDir(β)生成三个φ,如下:

    p(wz1)Mult(1,φ1=[0.9,0.1])

    p(wz2)Mult(1,φ2=[0.5,0.5])

    p(wz3)Mult(1,φ3=[0.7,0.3])

     

  5. 生成文本

    all_text = []

    for m in [1,M]:

    cur_text = []

    for n in [1,NM]:

    根据p(zwm)Mult(1,θm)生成话题,假设选择的是第k个话题

    根据p(wzk)Mult(1,φk)生成单词假设生成的是第v个单词

    cur_text.append(word[v])#word为单词数组

    all_text.append(cur_word)

     

    以第一个文档为例,该文档有两个单词,假设:

    p(zw1)Mult(1,θ1=[0.7,0.2,0.1])

    p(wz1)Mult(1,φ1=[0.9,0.1])

    p(wz2)Mult(1,φ2=[0.5,0.5])

    p(wz3)Mult(1,φ3=[0.7,0.3])

 

概率图模型

LDA本质是概率图模型。下图为LDA作为概率图模型的板块表示,解释如下:

  1. 实心圆:观测变量
  2. 空心圆:隐变量
  3. 有向边:概率依存关系
  4. 矩形:表示重复,矩形内的数字表示重复的次数。

LDA板块表示

板块表示的优点是简洁,板块表示展开之后,称为普通的有向图表示(如下图所示)。有向图中结点表示随机变量,有向边表示概率依存关系。

LDA的展开图模型

随机变量序列的可交换性

如果随机变量的联合概率分布对随机变量的排列不变,则称该随机变量序列是可交换的。即:

(16)P(x1,x2,,xN)=P(xπ(1),xπ(2),,xπ(N))π(1),π(2),,π(N)1,2,,N

一个无限的随机变量序列是无限可交换的,是指它的任意一个有限子序列都是可交换的。

如果一个随机变量序列X1,X2,,XN,是独立同分布的,那么它们是无限可交换的。反之不然。

根据De Finetti定理,任意一个无限可交换的随机变量序列对一个随机参数是条件独立同分布的。即:

(17)P(X1,X2,,Xi,,Y)=P(X1Y)P(X2Y)P(XiY)

LDA假设文本由无限可交换的话题序列组成。由De Finetti定理可知,实际是假设文本中的话题对一个随机参数是条件独立同分布的。所以,在参数给定的条件下,文本中的话题顺序可以忽略。作为对比,概率潜在语义模型假设文本中的话题是独立同分布的,文本中的话题的顺序也可以忽略。

 

概率公式

LDA模型整体是由观测变量和隐变量组成的联合概率分布,可以表示为:

(18)p(w,z,θ,φα,β)=[k=1Kp(φkβ)][m=1Mp(θmα)n=1Nmp(zmnθm)p(wmnzmn,φ)]

其中,各符号含义如下:

  1. w:所有文本中的单词序列
  2. 隐变量z:所有文本中的话题序列
  3. 隐变量θ:所有文本的话题分布的参数
  4. 隐变量φ:所有话题的单词分布的参数
  5. αβ :超参数
  6. p(φkβ):给定β 条件下第k个话题的单词分布的参数φk的生成概率
  7. p(θmα):给定α条件下第m个文本的话题分布的参数θm的生成概率
  8. p(zmnθm):第m个文本的话题分布θm给定条件下文本的第n个位置的话题zmn的生成概率
  9. p(wmnzmn,φ):在第m文本的第n个位置的话题zmn及所有话题的单词分布的参数φ给定条件下第m个文本的第n个位置的单词wmn的生成概率

m个文本的联合概率分布可以表示为:

(19)p(wm,zm,θm,φα,β)=p(φβ)p(wm,zm,θmα,φ)=[k=1Kp(φkβ)][p(θmα)n=1Nmp(zmnθm)p(wmnzmn,φ)]wmzmθm

LDA模型的联合分布含有隐变量,对隐变量进行积分得到边缘分布。

参数θmφ给定条件下第m个文本的生成概率是(第二个公式是原书20.17,第一个公式是补充):

(20)p(wmθm,φ)=n=1Nm[zmnZp(zmnθm)p(wmnzmn,φ)]=m=1Nm[k=1Kp(zmn=kθm)p(wmnφk)]

超参数αβ给定条件下第m个文本的生成概率是:

(21)p(wmα,β)=[k=1Kp(φkβ)][p(θmα)n=1Nm[zmnZp(zmnθm)p(wmnzmn,φ)]dθm]dφ

超参数αβ给定条件下所有文本的生成概率是:

(22)p(wmα,β)=[k=1Kp(φkβ)][m=1Mp(θmα)n=1Nm[zmnZp(zmnθm)p(wmnzmn,φ)]dθm]dφ

LDA的吉布斯抽样算法

基本想法

已知:文本序列的集合D={w1,,wm,,wM},其中wm是第m个文本,wm=(wm1,,wmn,,wmNM)

超参数αβ

目标是要推断:

(1) 话题序列的集合z={z1,,zm,,zM}的后验概率分布p(zw),其中zm是第m个文本的话题序列,zm=(zm1,,zmn,,zmNM)

(2) 参数θ={θ1,,θm,,θM},其中θm是文本wm的话题分布的参数;

(3) 参数φ={φ1,,φk,,φK},其中φk是话题zk的单词分布的参数。

概括:要对联合概率分布p(w,z,θ,φα,β)进行估计,其中w是观测变量,而z,θ,φ是隐变量。

 

LDA模型的学习可以采用收缩的吉布斯抽样方法,其基本想法是:

  1. 对隐变量θφ进行积分,得到边缘概率分布p(w,zα,β),其中w是可观测的,z是不可观测;
  2. 对后验概率分布p(zw,α,β)进行吉布斯抽样,得到分布p(zw,α,β)的样本集合;
  3. 利用步骤2的样本集合对参数θφ进行估计,最终得到LDA模型p(w,z,θ,φα,β)的所有参数估计。

 

算法的主要部分

根据上面的分析,问题转化为对后验概率分布p(zw,α,β)的吉布斯抽样。该分布表示在所有文本的单词序列给定条件下所有可能话题序列的条件概率。例如,假设有10个文本,3个话题,那么p(zw,α,β)=p(z1,z2,z3w1,w2,,w10,α,β)表示已知10个文本的内容,3个话题各种情况的概率是多少。

抽样分布的表达式

首先有关系:

(23)p(zw,α,β)=p(w,zα,β)p(wα,β)p(w,zα,β)

因为变量w,α,β已知,分母相同,可以不予考虑。

根据Dir(α)θmp(zwm)Mult(1,θm)Dir(β)φkp(wzk)Mult(1,φk),联合分布p(w,zα,β)的表达式可以进一步分解为:

(24)p(w,zα,β)=p(wz,α,β)p(zα,β)=p(wz,β)p(zα)

接下来,对两个因子分别处理:

  1. p(wz,β)

    首先:

    (25)p(wz,φ)=k=1Kv=1Vφkvnkvφkvkvnkvkv

    于是:

    (26)p(wz,β)=p(wz,φ)p(φβ)dφ=k=1K1 B(β)v=1Vφkvnkv+βv1 dφ=k=1K1 B(β)v=1Vφkvnkv+βv1 dφ=k=1KB(nk+β)B(β)nk={nk1,nk2,,nkV}
  2. p(zα)

    首先:

    (27)p(zθ)=m=1Mk=1Kθmknmkθmkmknmkmk

    于是:

    (28)p(zα)=p(zθ)p(θα)dθ=m=1M1 B(α)k=1Kθmknmk+αk1 dθ=m=1M1 B(α)k=1Kθmknmk+αk1 dθ=m=1MB(nm+α)B(α)nm={nm1,nm2,,nmK}

由上式推导可得:

(29)p(z,wα,β)=k=1KB(nk+β)B(β)m=1MB(nm+α)B(α)

因此,收缩的吉布斯抽样分布的公式为:

(30)p(zw,α,β)k=1KB(nk+β)B(β)m=1MB(nm+α)B(α)

满条件分布的表达式

分布p(zw,α,β)的满条件分布可以写成:

(31)p(zizi,w,α,β)=1Zzip(zw,α,β)wiiziwizi={zj:ji}Zzip(zw,α,β)zi

上式是在所有文本单词序列、其它位置话题序列给定条件下第i个位置的话题的条件概率分布。

由上式可得:

(32)p(zizi,w,α,β)nkv+βvv=1V(nkv+βv)nmk+αkk=1K(nmk+αk)mnwivziknkvkvnmkmk

算法的后处理

通过吉布斯抽样得到的分布p(zw,α,β)的样本,可以得到变量z的分配值,也可以估计变量θφ

  1. 参数θ={θm}的估计

    根据LDA模型的定义,后验概率满足:

    (33)p(θmzm,α)=1Zθmn=1Nmp(zmnθm)p(θmα)=Dir(θmnm+α)nm={nm1,nm2,,nmK}mzθmp(θmzm,α)θm

    于是得到参数θ={θm}的估计式:

    (34)θmk=nmk+αkk=1K(nmk+αk),m=1,2,,M;k=1,2,,K
  2. 参数φ={φk}的估计

    后验概率满足:

    (35)p(φkw,z,β)=1Zφki=1Ip(wiφk)p(φkβ)=Dir(φknk+β)nk={nk1,nk2,,nkV}kZφkp(φkw,z,β)φkIw

    于是得到参数的估计式:

    (36)φkv=nkv+βvv=1V(nkv+βv),k=1,2,,K;v=1,2,,V

吉布斯抽样具体算法

对给定的所有文本的的单词序列w,每个位置上随机指派一个话题,整体构成所有文本的话题序列z。然后循环执行以下操作:

在每一个位置上计算在该位置上的话题的满条件概率分布,然后进行随机抽样,得到该位置的新的话题,分配给这个位置。

(37)p(zizi,w,α,β)nkv+βvv=1V(nkv+βv)nmk+αkk=1K(nmk+αk)

上述条件概率分布由两个因子组成:

  1. 话题生成该位置的单词的概率
  2. 该位置的文本生成话题的概率

整体准备两个计数矩阵:话题-单词矩阵NK×V=[nkv]和文本-话题矩阵NM×K=[nmk]。在每一个位置,对两个矩阵中该位置的已有话题的计数减1,计算满条件概率分布,然后进行抽样,得到该位置的新话题,之后对两个矩阵中该位置的新话题的计数加1。计算移到下一个位置。

在燃烧期之后得到的所有文本的话题序列就是条件概率分布p(zw,α,β)的样本。

 

算法1.1:LDA吉布斯抽样算法

w={w1,,wm,,wM}wm=(wm1,,wmn,,wmNm)

z={z1,,zm,,zM}zm=(zm1,,zmn,,zmNm)p(zw,α,β)

φθ

αβK

(1)nmknkvnmnk0

(2)wm,m=1,2,,M

mwmn,n=1,2,,Nm

(a)zmn=zkMult(1K)

nmk=nmk+1

nm=nm+1

nkv=nkv+1

nk=nk+1

(3)

wm,m=1,2,,M

mwmn,n=1,2,,Nm

(a)wmnvzmnk

nmk=nmk1

nm=nm1

nkv=nkv1

nk=nk1

(b)

(38)p(zizi,w,α,β)nkv+βvv=1V(nkv+βv)nmk+αkk=1K(nmk+αk)

kzmn

(c)

nmk=nmk+1

nm=nm+1

nkv=nkv+1

nk=nk+1

(d)NK×V=[nkv]NM×K=[nmk]p(zw,α,β)

(4)

(39)θmk=nmk+αkk=1K(nmk+αk)φkv=nkv+βvv=1V(nkv+βv)

变分EM算法

变分推理

本质上讲,是一种退而求其次的办法。

变分推理的基本想法如下:假如模型是联合概率分布p(x,z),其中x是观测变量(已有数据,如文档),z是隐变量,包括参数。目标是学习模型的后验概率分布p(zx),用模型进行概率推理。

但是,一般情况下p(x,z)是复杂的分布,直接估计分布的参数很困难。所以考虑用概率分布q(z)近似条件概率分布p(zx),用KL散度D(q(z)||q(zx))计算两者的相似度,q(z)称为变分分布。

如果能找到有p(zx)KL散度意义下最近的分布q(z),则可以用该分布近似表示p(zx)

(40)p(zx)q(z)

下图给出了q(z)p(zx)的关系。

变分推理原理

KL散度可以写成以下形式:

(41)D(q(z)p(zx))=zq(z)logq(z)p(zx)=zq(z)logq(z)zq(z)logp(zx)=zq(z)logq(z)zq(z)logp(z,x)p(x)=zq(z)logq(z)zq(z)logp(z,x)+zq(z)logp(x)=Eq[logq(z)]Eq[logp(x,z)]+logp(x)=logp(x){Eq[logq(x,z)]Eq[logp(z)]}

因为KL散度大于等于零,当且仅当两个分布一致时为零。由此可知:

(42)logp(x)Eq[logp(x,z)]Eq[logq(z)]

不等式右端是左端的下界,左端称为证据,右端称为证据下界,证据下界记作:

(43)L(q)=Eq[logp(x,z)]Eq[logq(z)]

KL散度的最小化可以通过证据下界的最大化实现。因为目标是求q(z)使KL散度最小化,这时logp(x)是常量,因此,变分推理变成求解证据下界最大化的问题。

变分推理也可以从另一个角度理解。目标是通过证据logp(x)的最大化,估计联合概率分布p(x,z)。因为含有隐变量z,直接对证据进行最大化比较困难,转而根据logp(x)Eq[logp(x,z)]Eq[logq(z)]对证据下界进行最大化。

对变分分布q(z)要求是需要具有容易处理的形式,通常假设q(z)z的所有分量都是互相独立的(实际是条件独立于参数),即满足:

(44)q(z)=q(z1)q(z2)q(zn)

这时的变分分布称为平均场

KL散度的最小化或证据下界最大化实际是在平均场的集合中,即满足独立假设的分布集合Q={q(z)q(z)=i=1nq(zi)}之中进行的。

总的来说,变分推理有以下几个步骤:

  1. 定义变分分布q(z)
  2. 推导其证据下界表达式
  3. 用最优化方法对证据下界进行优化,如坐标上升,得到最优分布q(z),作为后验分布p(zx)的近似。

 

变分EM算法

变分推理中,可以通过迭代的方法最大化证据下界,这时算法是EM算法的推广,称为变分EM算法。

假设模型是联合概率分布p(x,zθ),其中x是观测变量,z是隐变量,θ是参数。目标是通过观测数据的概率(证据)logp(xθ)的最大化,估计模型的参数θ。使用变分推理,导入平均场q(z)=i=1nq(zi),定义证据下界:

(45)L(q,θ)=Eq[logp(x,zθ)]Eq[logq(z)]

通过迭代,分别以qθ为变量对证据下界进行最大化,就得到变分EM算法。如下所述:

1.2EM

EM

(1)E:θL(q,θ)q

(2)M:qL(q,θ)θ

根据变分推理,观测数据的概率和证据下界满足:

(46)logp(xθ)L(q,θ)=D(q(z)p(zx,θ))0

变分EM算法的迭代过程中,以下关系成立:

(47)logp(xθ(t1))=L(q(t),θ(t1))L(q(t),θ(t))logp(xθ(t))t1t

公式解释如下:

  1. logp(xθ(t1))=L(q(t),θ(t1)):基于E步计算和变分推理原理
  2. L(q(t),θ(t1))L(q(t),θ(t)):基于M步计算
  3. L(q(t),θ(t))logp(xθ(t)):基于变分推理原理

说明每次迭代都能保证观测数据的概率不递减。因此,变分EM算法一定收敛,但可能收敛到局部最优。

算法推导

LDA简化模型

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

证据下界的定义

为简单起见,一次只考虑一个文本,记作w。文本的单词序列w=(w1,w2,,wn,,wN),对应的话题序列z=(z1,z2,,zn,,zN),以及话题分布θ

随机变量wzθ的联合分布是:

(48)p(θ,z,wα,φ)=p(θα)n=1Np(znθ)p(wnzn,φ)wθzαφ

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

(49)q(θ,zγ,η)=q(θγ)n=1Nq(znηn)γη=(η1,η2,,ηn)θz

目标是求KL散度意义下最相近的变分分布q(θ,zγ,η),以近似LDA模型的后验分布p(θ,zw,α,φ)

下图是变分分布的板块表示。LDA模型中的隐变量θz之间存在依存关系,变分分布中这些依存关系被去掉,变量θz条件独立。

基于平均场的变分分布

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

(50)L(γ,η,α,φ)=Eq[logp(θ,z,wα,φ)]Eq[logq(θ,zγ,η)]γηαφLDA

其中,数学期望是对分布q(θ,zγ,η)定义的,为了方便写作Eq[]

所有文本的证据下界为:

(51)Lw(γ,η,α,φ)=m=1M{Eqm[logp(θm,zm,wmα,φ)]Eqm[logq(θm,zmγm,ηm)]}

为求证据下界L(γ,η,α,φ)的最大化,首先写出证据下界的表达式。为此展开单个文本的证据下界式:

(52)L(γ,η,α,φ)=Eq[logp(θα)]+Eq[logp(zθ)]+Eq[logp(wz,φ)]Eq[logq(θγ)]Eq[logq(zη)]

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

(53)L(γ,η,α,φ)=logΓ(l=1Kαl)k=1KlogΓ(αk)+k=1K(αk1)[Ψ(γk)Ψ(l=1Kγl)]+n=1Nk=1Kηnk[Ψ(γk)Ψ(l=1Kγl)]+n=1Nk=1Kv=1VηnkwnvlogφkvlogΓ(l=1Kγl)+k=1KlogΓ(γk)k=1K(γk1)[Ψ(γk)Ψ(l=1Kγl)]n=1Nk=1Kηnklogηnk

式中Γ(αk)是对数伽马函数的导数,即:

(54)Ψ(αk)=ddαklogΓ(αk)

第一项推导,求Eq[logp(θα)],是关于分布q(θ,zγ,η)的数学期望。

(55)Eq[logp(θα)]=k=1K(αk1)Eq[logθk]+logΓ(l=1Kαl)k=1KlogΓ(αk)

其中,θdir(θγ),所以,利用狄利克雷分布的性质:

(56)Ep(θα)[logθk]=ddαkA(α)=ddαk[k=1KlogΓ(αk)logΓ(l=1Kαl)]=Ψ(αk)Ψ(l=1Kαl),k=1,2,,K

有:

(57)Eq(θγ)[logθk]=Ψ(γk)Ψ(l=1Kγl)

故得:

(58)Eq[logp(θα)]=logΓ(l=1Kαl)k=1KlogΓ(αk)+k=1K(αk1)[Ψ(γk)Ψ(l=1Kγl)]αkγkk

第二项推导,求Eq[logp(zθ)],是关于分布q(θ,zγ,η)的数学期望。

(59)Eq(logp(zθ))=n=1NEq[logp(znθ)]=n=1NEq(θ,znγ,η)[log(znθ)]=n=1Nk=1Kq(znkη)Eq(θγ)[logθk]=n=1Nk=1Kηnk[Ψ(γk)Ψ(l=1Kγl)]ηnknkγkk

第三项推导,求Eq[logp(wz,φ)],是关于分布q(θ,zγ,η)的数学期望。

(60)Eq[logp(wz,φ)]=n=1NEq[logp(wnzn,φ)]=n=1NEq(znη)[logp(wnzn,φ)]=n=1Nk=1Kq(znkη)logp(wnznk,φ)=n=1Nk=1Kv=1Vηnkwnvlogφkvηnknkwnvnv10φkvkv

第四项推导,求Eq[logq(θγ)],是关于分布q(θ,zγ,η)的数学期望。由于θDir(γ),可以得到:

(61)Eq[logq(θγ)]=logΓ(l=1Kγl)k=1KlogΓ(γk)+k=1K(γk1)[Ψ(γk)Ψ(l=1Kγl)]γkk

第五项推导,求Eq[logq(zη)],是关于分布q(θ,zγ,η)的数学期望。

(62)Eq[logq(zη)]=n=1NEq[logq(znη)]=n=1NEq(znη)[logq(znη)]=n=1Nk=1Kq(znkη)logq(znkη)=n=1Nk=1Kηnklogηnkηnknkγkk

变分参数γη的估计

首先通过证据下界最优化估计参数η

ηnk表示第n个位置的单词是由第k个话题生成的概率。考虑到53关于ηnk的最大化,ηnk满足约束条件l=1Kηnl=1。包含ηnk的约束最优化问题拉格朗日函数为:

(63)L[ηnk]=ηnk[Ψ(γk)Ψ(l=1Kγl)]+ηnklogφkvηnklogηnk+λn(l=1Kηnl1)φkv(n)kv

ηnk求偏导数,可得:

(64)Lηnk=Ψ(γk)Ψ(l=1Kγl)+logφkvlogηnk1+λn

令偏导数为零,得到参数ηnk的估计值:

(65)ηnkφkvexp(Ψ(γk)Ψ(l=1Kγl))

接着,通过证据下界最优化估计参数γγk是第k个话题的狄利克雷分布参数。考虑53关于γk的最优化:

(66)L[γk]=k=1K(αk1)[Ψ(γk)Ψ(l=1Kγl)]+n=1Nk=1Kηnk[Ψ(γk)Ψ(l=1Kγl)]logΓ(l=1Kγl)+logΓ(γk)k=1K(γk1)[Ψ(γk)Ψ(l=1Kγl)]

简化为:

(67)L[γk]=k=1K[Ψ(γk)Ψ(l=1Kγl)](αk+n=1Nηnkγk)logΓ(l=1Kγl)+logΓ(γk)

γk求偏导数可得:

(68)Lγk=[Ψ(γk)Ψ(l=1Kγl)](αk+n=1Nηnkγk)

令偏导数为零,求解得到参数γk的估计值:

(69)γk=αk+n=1Nηnk

据此,得到由坐标上升算法估计变分参数的方法,具体算法如下:

1.3LDA

knηnk(0)=1/K

kγk=αk+N/K

n=1N

k=1K

ηnk(t+1)=φkvexp[Ψ(γk(t))Ψ(l=Kγl(t))]

ηnkt+1使1

γ(t+1)=α+n=1Nηn(t+1)

 

模型参数αφ的估计

给定一个文本集合D={w1,,wm,,wM},模型参数估计对所有文本同时进行。

首先,通过证据下界的最大化估计φφkv表示第k个话题生成单词集合第v个单词的概率。将53扩展到所有文本,并考虑关于φ的最大化。满足K个约束条件:

(70)v=1Vφkv=1,k=1,2,,K

约束最优化问题的拉格朗日函数为:

(71)L[β]=m=1Mn=1Nmk=1Kv=1Vηmnkwmnvlogφkv+k=1Kλk(v=1Vφkv1)

φkv求偏导数并令其为零,归一化求解,得到参数φkv的估计值:

(72)φkv=m=1Mn=1Nmηmnkwmnvηmnkmnkwmnvmnv10

接着,通过证据下界的最大化估计参数ααk表示第k个话题的狄利克雷分布参数。将53扩展到所有文本,并考虑关于α的最大化:

(73)L[α]=m=1M{logΓ(l=1Kαl)k=1KlogΓ(αk)+k=1K(αk1)[Ψ(γmk)Ψ(l=1Kγml)]}

αk求偏导数得:

(74)Lαk=M[Ψ(l=1Kαl)Ψ(αk)]+m=1M[Ψ(γmk)Ψ(l=1Kγml)]

再对αl求偏导数得:

(75)2Lαkαl=M[Ψ(l=1Kαl)δ(k,l)Ψ(αk)]δ(k,l)delta

7374分别是函数72对变量α的梯度g(α)Hessian矩阵H(α)。应用牛顿法求该函数的最大化。用以下公式迭代,得到参数α的估计值。

(76)αnew =αold H(αold )1g(αold )

据此,得到估计参数α的算法。

 

算法总结

根据上面的推导给出简化LDA的变分EM算法。

1.4LDAEM

D={w1,,wm,,wM}

γ,ηα,φ

EM

(1)E

α,φγ,ηγ,η1.3LDA

(2)M

γ,ηα,φα,φ7175

(γ,η)θ=(θ1,,θm,,θM),z=(z1,,zm,,zM)

 

参考文档

  1. 李航 《统计学习方法》
  2. 第二十课 潜在狄利克雷分配 (julyedu.com)
  3. 《统计学习方法》啃书手册|第20章 潜在狄利克雷分配 - 知乎 (zhihu.com)
  4. [统计学习] 2 LDA (潜在狄利克雷分配) 算法过程的直观理解 - 知乎 (zhihu.com)