主题模型(三)潜在狄利克雷分配 LDA 求解之变分EM算法

本文涉及的知识点有,最大似然,贝叶斯估计,共轭分布,EM算法变分推断等。

极大似然估计、极大后验估计和贝叶斯估计

在进行下面的推导之前,首先要了解参数估计的相关内容,见最大似然估计(MLE)、最大后验估计(MAP)和贝叶斯估计

LDA初探

在PLSA模型中,doc-topic分布和topic-word分布(也就是在主题模型(二)概率潜在语义分析(PLSA或PLSI)中求解的 p ( z k ∣ d i ) 和 p ( w j ∣ z k ) p(z_k|d_i)和p(w_j|z_k) p(zkdi)p(wjzk))一旦被求解,就是固定的,是一个常数。但是在贝叶斯学派认为,未知的参数应该是一个随机变量,应该考虑其先验知识,而且根据贝叶斯估计的方法,随机变量应该也服从一个分布,而不是一个常数。

也就是说:文档 d i d_i di的主题分布 θ → i = ( p ( z 1 ∣ d i ) , p ( z 2 ∣ d i ) , . . . , p ( z K ∣ d i ) ) \overrightarrow{\theta}_{i}=(p(z_1|d_i), p(z_2|d_i),...,p(z_K|d_i)) θ i=(p(z1di),p(z2di),...,p(zKdi))应该服从一个先验分布 p ( θ → i ) p(\overrightarrow{\theta}_{i}) p(θ i),主题的单词分布 β → k = ( p ( w 1 ∣ z k ) , p ( w 2 ∣ z k ) , . . . , p ( w N ∣ z k ) ) \overrightarrow{\beta}_{k}=(p(w_1|z_k),p(w_2|z_k),...,p(w_N|z_k)) β k=(p(w1zk),p(w2zk),...,p(wNzk))应该也服从一个先验分布。

这里解释一下,有人可能有疑问: θ → i \overrightarrow{\theta}_{i} θ i不是服从多项式分布吗,怎么又服从一个先验分布了?其实是这样的, θ → i \overrightarrow{\theta}_{i} θ i并不是服从多项式分布,而是多项式分布的参数,多项式分布的随机变量不是 θ → i \overrightarrow{\theta}_{i} θ i,而是重复n次实验后,K种实验结果的频次。贝叶斯学派认为,虽然 θ → i \overrightarrow{\theta}_{i} θ i是多项式分布的参数,但是这个参数也是一个随机变量,服从一个分布。比如在贝叶斯学派眼中,高斯分布的协方差阵也是服从一个分布的,叫逆威沙特分布。所以 θ → i \overrightarrow{\theta}_{i} θ i服从的分布可以理解为是分布的参数(比如多项式分布)的先验分布(比如狄利克雷分布)。

通常为了计算方便,使用共轭分布来进行贝叶斯估计,多项式分布的共轭先验是狄利克雷分布。

在LDA中,文档的主题的生成过程 p ( z ∣ d i ) p(z|d_i) p(zdi)是服从多项式分布的,这个多项式分布的参数是 θ i \theta_{i} θi θ i = ( θ i , 1 , θ i , 2 , . . . θ i , K ) \theta_{i}=(\theta_{i,1}, \theta_{i,2},...\theta_{i,K}) θi=(θi,1,θi,2,...θi,K)是一个 K K K维的向量, θ i , k = p ( z k ∣ d i ) \theta_{i,k}=p(z_k|d_i) θi,k=p(zkdi)表示文档 d i d_i di生成话题 z k z_k zk的概率。 θ i \theta_{i} θi本身也服从一个先验分布,叫做狄利克雷分布,但是这个狄利克雷分布本身也是有参数的,其参数记为 α \alpha α α \alpha α是一个 K K K维的向量。

主题 k k k的单词的生成过程 p ( w ∣ z k ) p(w|z_k) p(wzk)是服从多项式分布的,这个多项式分布的参数是 β k \beta_{k} βk β k = ( β k , 1 , β k , 2 , . . . β k , N ) \beta_{k}=(\beta_{k,1}, \beta_{k,2},...\beta_{k,N}) βk=(βk,1,βk,2,...βk,N)是一个 N N N维的向量, β k , j = p ( w j ∣ z k ) \beta_{k,j}=p(w_j|z_k) βk,j=p(wjzk)表示主题 z k z_k zk生成单词 w j w_j wj的概率。 β k \beta_{k} βk本身也服从一个狄利克雷分布,这个狄利克雷分布的参数是 η \eta η η \eta η是一个 N N N维的向量。

所以从上面的分析可以看出,LDA在PLSA的基础上加入了先验信息,是PLSA的贝叶斯版本。

下面我们也按照在讲解PLSA的时候,分布讲解5项内容。

  1. 主题模型的输入
  2. 主题模型的基本假设
  3. 主题模型的表示
    1. 概率图模型
    2. 生成过程
  4. 参数估计
  5. 新样本的推断
1. 主题模型的输入

在LDA模型中,输入与PLSA的相同,都是文档-词共线矩阵,矩阵元素是词在文档中的词频或者TF-IDF值。

2. 主题模型的基本假设

这一部分也与PLSI的相同,就是词袋假设,没有考虑词序,交换词序不会影响最终结果。

3. 主题模型的表示
3.1 LDA的概率图模型

在这里插入图片描述
上图就是LDA的概率图模型,简单解释一下。

  • LDA的概率图模型中,可观测变量只有文档的单词
  • α , β \alpha, \beta α,β是模型的参数, θ , β , z \theta, \beta, z θ,β,z是隐变量
  • LDA的参数也分为3个级别, α , η , β \alpha, \eta, \beta α,η,β是模型级别的参数,作用域是整个文档集。 θ \theta θ是文档级别的参数,表示某一篇文档的主题分布,作用域是一篇文档。 z z z是词级别的参数,作用域是某一个词,表示那个词的主题。
  • α ⟶ θ ⟶ z \alpha \longrightarrow \theta \longrightarrow z αθz组成了狄利克雷-多项式共轭,也就是 p ( θ ∣ α ) p(\theta|\alpha) p(θα)是狄利克雷分布, p ( θ ∣ α ) = D i r ( θ ∣ α ) = Γ ( ∑ k = 1 K α k ) ∏ k = 1 K Γ ( α k ) ∏ k = 1 K θ k α k − 1 p(\theta|\alpha)=Dir(\theta|\alpha)={\Gamma(\sum_{k=1}^K \alpha_k) \over \prod_{k=1}^K \Gamma(\alpha_k)} \prod_{k=1}^K\theta_k^{\alpha_{k}-1} p(θα)=Dir(θα)=k=1KΓ(αk)Γ(k=1Kαk)k=1Kθkαk1
    p ( z ∣ θ ) p(z|\theta) p(zθ)是多项式分布(严格意义上是类别分布,因为只做了一次实验)。
    p ( z = k ∣ θ ) = M u l t ( z = k ∣ θ ) = θ k p(z=k|\theta)= Mult(z=k|\theta) = \theta_k p(z=kθ)=Mult(z=kθ)=θk
  • η ⟶ β ⟶ w \eta \longrightarrow \beta \longrightarrow w ηβw组成了狄利克雷-多项式共轭。也就是 p ( β ∣ η ) p(\beta|\eta) p(βη)是狄利克雷分布, V V V表示词表长度。
    p ( β k ∣ η ) = D i r ( β k ∣ η ) = Γ ( ∑ j = 1 V η j ) ∏ j = 1 V Γ ( η j ) ∏ j = 1 V β k , j η j − 1 p(\beta_k|\eta)=Dir(\beta_k|\eta)={\Gamma(\sum_{j=1}^V \eta_j) \over \prod_{j=1}^V\Gamma(\eta_j)} \prod_{j=1}^V\beta_{k,j}^{\eta_{j}-1} p(βkη)=Dir(βkη)=j=1VΓ(ηj)Γ(j=1Vηj)j=1Vβk,jηj1
    p ( w ∣ β ) p(w|\beta) p(wβ)是多项式分布,(严格意义上是类别分布,因为只做了一次实验)。
    p ( w j ∣ β k ) = M u l t ( w j ∣ β k ) = β k , j p(w_j|\beta_k)= Mult(w_j|\beta_k) = \beta_{k,j} p(wjβk)=Mult(wjβk)=βk,j
3.2 LDA的生成过程
  • 根据参数为 α \alpha α狄利克雷分布采样得到文档 d i d_i di的主题分布 θ i \theta_{i} θi

  • 根据参数为 η \eta η的狄利克雷分布采样得到主题 z k z_k zk的词分布 β k \beta_{k} βk,每个话题采样一次,一共采样 K K K次。

  • 假设文档 d i d_i di的单词数是 n d i n_{d_i} ndi,对文档 d i d_i di中每个单词的位置重复下面的过程:

    • 根据参数为 θ i \theta_{i} θi多项式分布随机生成一个话题 z k z_k zk,选择的主题 z k z_k zk的词分布 β k \beta_k βk
    • 根据参数为 β k \beta_k βk的多项式分布随机生成一个单词 w j w_{j} wj
  • 重复上面的步骤 M M M次,就得到了一篇文档集。

4. 参数估计

EM算法总结一文中,得到了EM算法的一般框架,在E步要求隐变量的后验分布。在LDA中,隐变量是 θ , β , z \theta, \beta, z θ,β,z,所以我们要求解 p ( θ , β , z ∣ W , α , η ) p(\theta, \beta, z|W, \alpha, \eta) p(θ,β,zW,α,η)

p ( θ , β , z ∣ W , α , η ) = p ( θ , β , z , W ∣ α , η ) p ( W ∣ α , η ) (1) \tag{1} p(\theta, \beta, z|W, \alpha, \eta) = {p(\theta, \beta, z, W| \alpha, \eta) \over p(W|\alpha, \eta)} p(θ,β,zW,α,η)=p(Wα,η)p(θ,β,z,Wα,η)(1)

根据概率图模型和生成过程 ,可以得到
p ( θ , β , z , W ∣ α , η ) = [ ∏ k = 1 K p ( β k ∣ η ) ] ∏ i = 1 M [ p ( θ i ∣ α ) ∏ j = 1 N d i p ( z i , j ∣ θ i ) p ( w i , j ∣ z i , j , β ) ] (2) \tag{2} p(\theta, \beta, z, W| \alpha, \eta) =[\prod_{k=1}^Kp(\beta_k|\eta)]\prod_{i=1}^{M} [p(\theta_i|\alpha)\prod_{j=1}^{N_{d_i}}p(z_{i,j}|\theta_i)p(w_{i,j}|z_{i,j}, \beta)] p(θ,β,z,Wα,η)=[k=1Kp(βkη)]i=1M[p(θiα)j=1Ndip(zi,jθi)p(wi,jzi,j,β)](2)

p ( W ∣ α , η ) = ∫ θ ∫ β ∑ z p ( θ , β , z , W ∣ α , η ) d β d θ = ∫ θ ∫ β ∑ z [ ∏ k = 1 K p ( β k ∣ η ) ] ∏ i = 1 M [ p ( θ i ∣ α ) ∏ j = 1 N d i p ( z i , j ∣ θ i ) p ( w i , j ∣ z i , j , β ) ] d θ d β = ∫ β [ ∏ k = 1 K p ( β k ∣ η ) ] ∫ θ ∏ i = 1 M [ p ( θ i ∣ α ) ∏ j = 1 N d i ∑ l = 1 K p ( z i , j = l ∣ θ i ) p ( w i , j ∣ β l ) ] d θ d β = ∏ k = 1 K ∫ β k p ( β k ∣ η ) [ ∏ i = 1 M ∫ θ i p ( θ i ∣ α ) ∏ j = 1 N d i [ ∑ l = 1 K p ( z i , j = l ∣ θ i ) p ( w i , j ∣ β l ) ] d θ i ] d β k (3) \tag{3} \begin{aligned} p(W|\alpha,\eta) = & \int_{\theta}\int_{\beta}\sum_{z}p(\theta,\beta,z,W|\alpha,\eta)d\beta d\theta \\ = & \int_{\theta}\int_{\beta}\sum_{z}[\prod_{k=1}^Kp(\beta_k|\eta)]\prod_{i=1}^{M} [p(\theta_i|\alpha)\prod_{j=1}^{N_{d_i}}p(z_{i,j}|\theta_i)p(w_{i,j}|z_{i,j}, \beta)]d\theta d\beta \\ = & \int_{\beta}[\prod_{k=1}^Kp(\beta_k|\eta)] \int_{\theta}\prod_{i=1}^{M} [p(\theta_i|\alpha)\prod_{j=1}^{N_{d_i}}\sum_{l=1}^Kp(z_{i,j}=l|\theta_i)p(w_{i,j}|\beta_l)]d\theta d\beta \\ = & \prod_{k=1}^{K} \int_{\beta_k}p(\beta_k|\eta)[\prod_{i=1}^{M}\int_{\theta_i}p(\theta_i|\alpha)\prod_{j=1}^{N_{d_i}}[\sum_{l=1}^{K}p(z_{i,j}=l|\theta_i)p(w_{i,j}|\beta_l)]d\theta_i]d\beta_k \end{aligned} p(Wα,η)====θβzp(θ,β,z,Wα,η)dβdθθβz[k=1Kp(βkη)]i=1M[p(θiα)j=1Ndip(zi,jθi)p(wi,jzi,j,β)]dθdββ[k=1Kp(βkη)]θi=1M[p(θiα)j=1Ndil=1Kp(zi,j=lθi)p(wi,jβl)]dθdβk=1Kβkp(βkη)[i=1Mθip(θiα)j=1Ndi[l=1Kp(zi,j=lθi)p(wi,jβl)]dθi]dβk(3)
由于 θ , β , z \theta, \beta, z θ,β,z之间的耦合性,(1)式是没有办法直接求解的,但是如果不求就没有办法使用EM算法了。因此使用变分推断的方法,具体就是引入平均场理论的变分推断,这个推断假设,所有的隐藏变量都是通过各自的独立分布形成的,如下图所示:
在这里插入图片描述
我们假设隐藏变量 θ \theta θ是由独立分布 γ \gamma γ形成的, β \beta β是由独立分布 λ \lambda λ形成的, z z z是由独立分布 ϕ \phi ϕ形成的。这样就得到了隐藏变量的联合变分分布 q q q为:

q ( θ , β , z ∣ γ , λ , ϕ ) = ∏ k = 1 K q ( β k ∣ λ k ) ∏ i = 1 M q ( θ i , z i ∣ γ i , ϕ i ) = ∏ k = 1 K q ( β k ∣ λ k ) ∏ i = 1 M [ q ( θ i ∣ γ i ) ∏ j = 1 N d i q ( z i , j ∣ ϕ i , j ) ] (4) \begin{aligned} \tag{4} q(\theta, \beta, z|\gamma, \lambda, \phi)= & \prod_{k=1}^{K}q(\beta_{k}|\lambda_{k})\prod_{i=1}^{M}q(\theta_i,z_i|\gamma_i, \phi_i) \\ = & \prod_{k=1}^{K}q(\beta_{k}|\lambda_{k})\prod_{i=1}^{M}[q(\theta_i|\gamma_i)\prod_{j=1}^{N_{d_i}} q(z_{i,j}|\phi_{i,j})] \end{aligned} q(θ,β,zγ,λ,ϕ)==k=1Kq(βkλk)i=1Mq(θi,ziγi,ϕi)k=1Kq(βkλk)i=1M[q(θiγi)j=1Ndiq(zi,jϕi,j)](4)
变分推断这篇文章中,推导了变分推断的ELBO:
E L B O = ∫ Z q ( Z ) l o g p ( X , Z ∣ Θ ) q ( Z ) d Z = E q [ l o g p ( X , Z ∣ Θ ) ] − E q [ l o g q ( Z ) ] (5) \tag{5} ELBO = \int_Zq(Z)log{p(X,Z|\Theta) \over q(Z)}dZ =E_{q}[logp(X,Z|\Theta)]-E_{q}[logq(Z)] ELBO=Zq(Z)logq(Z)p(X,ZΘ)dZ=Eq[logp(X,ZΘ)]Eq[logq(Z)](5)
这 里 的 Z 这里的Z Z指的不仅仅是一个隐变量,而是像LDA中多个隐变量, Θ \Theta Θ是模型的参数,也就是在LDA模型中, q ( Z ) = q ( θ , β , z ∣ γ , λ , ϕ ) q(Z)=q(\theta, \beta, z|\gamma, \lambda, \phi) q(Z)=q(θ,β,zγ,λ,ϕ) p ( X , Z ∣ Θ ) = p ( θ , β , z , W ∣ α , η ) p(X,Z|\Theta)=p(\theta, \beta, z, W|\alpha, \eta) p(X,ZΘ)=p(θ,β,z,Wα,η)

将(2)式和(4)式带入(5)式得到了LDA的变分EM算法的下界:
L ( γ , λ , ϕ ; α , η ) = E q [ l o g p ( θ , β , z , W ∣ α , η ) ] − E q [ l o g q ( θ , β , z ∣ γ , λ , ϕ ) ] = E q [ l o g p ( θ ∣ α ) ] + E q [ l o g p ( β ∣ η ) ] + E q [ l o g p ( z ∣ θ ) ] + E q [ l o g p ( W ∣ z , β ) ] − E q [ l o g q ( θ ∣ γ ) ] − E q [ l o g q ( β ∣ λ ) ] − E q [ l o g q ( z ∣ ϕ ) ] (6) \tag{6} \begin{aligned} L(\gamma, \lambda, \phi; \alpha,\eta) = & E_{q}[logp(\theta, \beta, z, W|\alpha, \eta)]-E_{q}[logq(\theta, \beta, z|\gamma, \lambda, \phi)] \\ = & E_{q}[logp(\theta|\alpha)]+E_{q}[logp(\beta|\eta)]+E_{q}[logp(z|\theta)]+E_{q}[logp(W|z,\beta)] \\ & - E_{q}[logq(\theta|\gamma)]-E_{q}[logq(\beta|\lambda)]-E_{q}[logq(z|\phi)] \end{aligned} L(γ,λ,ϕ;α,η)==Eq[logp(θ,β,z,Wα,η)]Eq[logq(θ,β,zγ,λ,ϕ)]Eq[logp(θα)]+Eq[logp(βη)]+Eq[logp(zθ)]+Eq[logp(Wz,β)]Eq[logq(θγ)]Eq[logq(βλ)]Eq[logq(zϕ)](6)
(6)式可以分解成这样是因为对分布取了 l o g log log,而原来的(2)和(4)式内部都是乘积的形式,取 l o g log log之后就变成了和式,所以可以将所有的相同的变量提取到一起进行求期望。

(6)式展开之后有7项,为了简化篇幅,以 E q [ l o g p ( β ∣ η ) ] E_{q}[logp(\beta|\eta)] Eq[logp(βη)]为例讲解。在讲解之前,先了解一下指数分布簇相关的内容:指数分布簇是指形如下面形式的概率分布:
p ( x ∣ θ ) = h ( x ) e η ( θ ) ∗ T ( x ) − A ( θ ) p(x|\theta) = h(x)e^{\eta(\theta)*T(x)-A(\theta)} p(xθ)=h(x)eη(θ)T(x)A(θ)
其中, A ( θ ) A(\theta) A(θ)是归一化因子,保证积分为1,引入指数分布簇,是因为指数分布簇具有这样的性质:
E p ( x ∣ θ ) [ T ( x ) ] = d A ( θ ) d η ( θ ) E_{p(x|\theta)}[T(x)] = { dA(\theta) \over d\eta(\theta)} Ep(xθ)[T(x)]=dη(θ)dA(θ)

常见的分布,比如高斯分布、多项式分布、狄利克雷分布、伯努利分布、泊松分布、指数分布都是指数分布簇。有了这个性质,意味着(6)式中期望的计算可以转化为求导来完成。下面来求解 E q [ l o g p ( β ∣ η ) ] E_{q}[logp(\beta|\eta)] Eq[logp(βη)]
E q [ l o g p ( β ∣ η ) ] = E q [ l o g ∏ k = 1 K ( Γ ( ∑ j = 1 V η j ) ∏ j = 1 V Γ ( η j ) ∏ j = 1 V β k , j η j − 1 ) ] = K l o g Γ ( ∑ j = 1 V η j ) − K ∑ j = 1 V Γ ( η j ) + ∑ k = 1 K E q [ ∑ j = 1 V ( η j − 1 ) l o g β k , j ] (7) \tag{7} \begin{aligned} E_{q}[logp(\beta|\eta)] = &E_{q}[log\prod_{k=1}^{K}({\Gamma(\sum_{j=1}^V \eta_j) \over \prod_{j=1}^V\Gamma(\eta_j)} \prod_{j=1}^V\beta_{k,j}^{\eta_{j}-1})] \\ = & Klog \Gamma(\sum_{j=1}^V \eta_j) - K\sum_{j=1}^{V}\Gamma(\eta_j)+\sum_{k=1}^{K}E_{q}[\sum_{j=1}^{V}(\eta_{j}-1)log\beta_{k,j}] \end{aligned} Eq[logp(βη)]==Eq[logk=1K(j=1VΓ(ηj)Γ(j=1Vηj)j=1Vβk,jηj1)]KlogΓ(j=1Vηj)Kj=1VΓ(ηj)+k=1KEq[j=1V(ηj1)logβk,j](7)
(7)式中的期望部分可以转化为求导来完成。即:
在这里插入图片描述
其中:在这里插入图片描述
最终得到ELBO中第一项的展开式为:
在这里插入图片描述
其他6项的表达式为:
在这里插入图片描述
到这里,我们求得到了隐变量 θ , β , z \theta, \beta, z θ,β,z的期望的表达式,ELBO貌似可以求解了,但是前提是要知道变分参数 γ , λ , ϕ \gamma, \lambda, \phi γ,λ,ϕ和模型参数 α , η \alpha, \eta α,η的值,下面就用变分EM算法来迭代更新变分参数和模型参数。

E-STEP: 获取最优变分参数

EM算法是求解隐变量的后验,这里不同的是计算变分分布的参数 γ , λ , ϕ \gamma, \lambda, \phi γ,λ,ϕ。令ELBO对各个变分参数求导,并令偏导数为0,可以得到迭代表达式,多次迭代就得到了最优变分参数。这里不详细推导,直接给出表达式。
在这里插入图片描述(8)
其中, w n i = 1 w_{n}^i = 1 wni=1当且仅当文档中第 n n n个词为词汇表中的第 i i i个词。
在这里插入图片描述
(9)
在这里插入图片描述
(10)

由于变分参数 λ \lambda λ决定了 β \beta β的分布,对于整个语料库是共享的,所以有:
在这里插入图片描述
(11)
 最终我们的E步就是用(8)(9)(11)式来更新三个变分参数。当我们得到三个变分参数后,不断循环迭代更新,直到这三个变分参数收敛。当变分参数收敛后,下一步就是M步,固定变分参数,更新模型参数 α , η \alpha, \eta α,η了。

M-STEP: 更新模型参数

由于我们在E步,已经得到了当前最佳变分参数,现在我们在M步就来固定变分参数,极大化ELBO得到最优的模型参数 α , η \alpha, \eta α,η。求解最优的模型参数 α , η \alpha, \eta α,η的方法有很多,梯度下降法,牛顿法都可以。LDA这里一般使用的是牛顿法,即通过求出ELBO对于 α , η \alpha, \eta α,η的一阶导数和二阶导数的表达式,然后迭代求解 α , η \alpha, \eta α,η在M步的最优解。

在这里插入图片描述
参考:https://www.cnblogs.com/pinard/p/6873703.html#!comments

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值