关于主题模型(从LDA到PLSA)

以下内容有部分源于课件,主要是上课推导太快了没听明白所以这里又来整理了一遍。

LDA

首先是从LSA入手。他对于一篇文章的初始标识和向量空间模型相似,使用词表维度的向量来表示,但是向量内的元素是单词在文档中出现的次数。

SVD for LDA

此外,我们了解一下奇异值分解(SVD):
A m × n = U m × m Σ m × n V n × n T A_{m×n} = U_{m×m}\Sigma_{m×n} V_{n×n}^T Am×n=Um×mΣm×nVn×nT
其中, U U U为左奇异矩阵, V V V为右奇异矩阵, Σ \Sigma Σ为奇异值矩阵,且 U , V U,V U,V都是正交矩阵。这里要提到一个SVD的性质:在奇异值矩阵中按序排列,奇异值减少很迅速(很多时候前10%甚至1%就占了全部奇异值之和的99%以上),也就是说我们可以用最大的K个其意志和对应的左右奇异向量来描述近似矩阵。

这里就是想要找到一个比较小的值k,保留前k个奇异向量和奇异值,其中 U U U 的维度从 m × m m×m m×m 变成了 m × k m×k m×k , V V V的维度从 n × n n×n n×n 变成了 m × k m×k m×k Σ Σ Σ 的维度从 m × n m×n m×n 变成了 k × k k×k k×k 的方阵,从而达到降维效果。
A m × n = U m × m Σ m × n V n × n T ≈ U m × k Σ k × k V m × k T A_{m×n} = U_{m×m}\Sigma_{m×n} V_{n×n}^T \approx U_{m×k}\Sigma_{k×k} V_{m×k}^T Am×n=Um×mΣm×nVn×nTUm×kΣk×kVm×kT
请添加图片描述

把上面的SVD应用到主题模型,可以认为:

  • K是主题数;
  • 经过SVD分解后, U i , l U_{i,l} Ui,l对应第 i i i个单词和第 l l l个词义类的相关性,矩阵 U U U就是词-词义类矩阵;
  • V l , j V_{l,j} Vl,j表示第 j j j篇文档与第 l l l个主题的相关性,矩阵 V V V是主题-文档矩阵;
  • Σ l , l \Sigma_{l,l} Σl,l表示第 l l l个词义类与第 l l l个主题之间的相关性。

EM for LDA

EM算法

首先了解一下一般的EM算法:

对于观测变量 X X X和潜在变量 Z Z Z,在参数 θ \theta θ控制下,根据分布 p ( X , Z ∣ θ ) p(X,Z|\theta) p(X,Zθ),目标为最大化关于 θ \theta θ的可能性 p ( X ∣ θ ) p(X|\theta) p(Xθ)

过程描述如下:

  1. θ o l d \theta^{old} θold选一个初始设定(初始化)
  2. E step来计算 p ( Z ∣ X , θ o l d ) p(Z|X,\theta^{old}) p(ZX,θold)
  3. M step来计算 θ n e w \theta^{new} θnew θ n e w = a r g m a x θ Q ( θ , θ o l d ) Q ( θ , θ o l d ) = ∑ Z p ( Z ∣ X , θ o l d ) ln ⁡ p ( X , Z ∣ θ ) \theta^{new}=arg max_\theta Q(\theta, \theta^{old})\\ Q(\theta, \theta^{old}) = \sum_Z p(Z|X,\theta^{old}) \ln p(X,Z|\theta) θnew=argmaxθQ(θ,θold)Q(θ,θold)=Zp(ZX,θold)lnp(X,Zθ)
  4. 检查对数似然或参数值的收敛性,如果不满足收敛准则,就计算 θ o l d ← θ n e w \theta^{old}\leftarrow\theta^{new} θoldθnew,并返回第2.步

EM for LDA

通常根据迪利克雷分布采样得到单词和主题、文档和主题的分布,并基于主题采样单词、基于文本采样主题。

可以抽象为下面的上帝掷骰子:
请添加图片描述

Gibbs Sampling for LDA

变量初设

假设语料库中有M篇文档,所有的word和topic如下表示:
w → = ( w → 1 , ⋯ , w → M ) z → = ( z → 1 , ⋯   , z → M ) 其 中 , w → m 表 示 第 m 篇 文 档 中 的 词 , z → m 表 示 这 些 词 对 应 的 t o p i c 编 号 注 意 w → 和 z → 都 是 由 更 小 的 、 代 表 每 篇 文 章 内 内 容 的 向 量 构 成 的 \overrightarrow{\pmb w} = (\overrightarrow{w}_1, \cdots,\overrightarrow{w}_M)\\ \overrightarrow{\pmb z} = (\overrightarrow{z}_1,\cdots,\overrightarrow{z}_M)\\ 其中,\\ \overrightarrow{w}_m表示第m篇文档中的词,\\\overrightarrow{z}_m表示这些词对应的topic编号\\ 注意\overrightarrow{w}和\overrightarrow{z}都是由更小的、代表每篇文章内内容的向量构成的 www =(w 1,w M)zzz =(z 1,,z M),w mmz mtopicw z

结合LDA分析推导过程

LDA可以分为以下两个主要的物理过程
  1. α → → θ → m → z m , n \overrightarrow\alpha \rightarrow \overrightarrow\theta_m \rightarrow z_{m,n} α θ mzm,n,表示在生成第 m m m篇文档的时候,现从第一个坛子中抽一个doc-topic骰子 θ → m \overrightarrow\theta_m θ m,然后投掷这个骰子生成了文档中第 n n n个词的topic编号 z m , n z_{m,n} zm,n
  2. β → → ψ → k → w m , n ∣ k = z m , n \overrightarrow\beta \rightarrow \overrightarrow\psi_k \rightarrow w_{m,n}|k=z_{m,n} β ψ kwm,nk=zm,n,表示你用如下动作生成语料中第m篇文档的第n个词:在上帝手下的K个topic-word骰子 ψ → k \overrightarrow\psi_k ψ k中,挑选编号为 k = z m , n k=z_{m,n} k=zm,n的那个骰子进行透支,然后生成word w m , n w_{m,n} wm,n
过程一

对于过程一,显然 α → → θ → m \overrightarrow\alpha \rightarrow \overrightarrow\theta_m α θ m对应于Dirichlet分布, θ m → z m , n \theta_m \rightarrow z_{m,n} θmzm,n对应于Mutinomial分布,所以说整体上有 D i r i c h l e t − M u t i n o m i a l Dirichlet-Mutinomial DirichletMutinomial共轭结构:
p ( z → m ∣ α → ) = Δ ( n → m + α → ) Δ ( α → ) p(\overrightarrow z_m|\overrightarrow\alpha)=\frac{\Delta(\overrightarrow n_m+\overrightarrow\alpha)}{\Delta(\overrightarrow\alpha)} p(z mα )=Δ(α )Δ(n m+α )
其中 n → m = ( n → m ( 1 ) , ⋯   , n → m ( K ) ) \overrightarrow n_m=(\overrightarrow n_m^{(1)},\cdots,\overrightarrow n_m^{(K)}) n m=(n m(1),,n m(K)) n → m ( k ) \overrightarrow n_m^{(k)} n m(k)表示第 m m m篇文档中第 k k k个topic产生的词的数量。

进一步,利用 D i r i c h l e t − M u t i n o m i a l Dirichlet-Mutinomial DirichletMutinomial共轭结构,我们得到参数 θ → m \overrightarrow\theta_m θ m的后验分布恰好是: D i r ( θ → m ∣ n → m + α → ) Dir(\overrightarrow\theta_m|\overrightarrow n_m + \overrightarrow\alpha) Dir(θ mn m+α )
由于语料库中M篇文档的topics生成过程相互独立,所以我们得到M个相互独立的 D i r i c h l e t − M u t i n o m i a l Dirichlet-Mutinomial DirichletMutinomial共轭结构,从而我们可以得到整个语料中topics生成概率: p ( z → ∣ α → ) = ∏ m = 1 M p ( z m → ∣ α → ) = ∏ m = 1 M Δ ( n → m + α → ) Δ ( α → ) p(\overrightarrow{\pmb z}|\overrightarrow{\alpha})=\prod_{m=1}^Mp(\overrightarrow{z_m}|\overrightarrow{\alpha})=\prod_{m=1}^M\frac{\Delta(\overrightarrow n_m+\overrightarrow\alpha)}{\Delta(\overrightarrow\alpha)} p(zzz α )=m=1Mp(zm α )=m=1MΔ(α )Δ(n m+α )

过程二

在语料中所有词的topic已经生成的条件下,任何两个word的生成动作都是可交换的,于是我们把语料中的词进行交换,把具有相同topic的词放在一起:
w → = ( w → ( 1 ) , ⋯ , w → ( M ) ) z → = ( z → ( 1 ) , ⋯   , z → ( M ) ) \overrightarrow{\pmb w} = (\overrightarrow{w}_{(1)}, \cdots,\overrightarrow{w}_{(M)})\\ \overrightarrow{\pmb z} = (\overrightarrow{z}_{(1)},\cdots,\overrightarrow{z}_{(M)}) www =(w (1),w (M))zzz =(z (1),,z (M))
从而有:
p ( w → ( k ) ∣ β → ) = Δ ( n → k + β → ) Δ ( β → ) p(\overrightarrow w_{(k)}| \overrightarrow \beta)=\frac{\Delta(\overrightarrow n_k+\overrightarrow\beta)}{\Delta(\overrightarrow\beta)} p(w (k)β )=Δ(β )Δ(n k+β )
其中, n → k = ( n k ( 1 ) , ⋯   , n k ( V ) ) \overrightarrow n_k=(n_k^{(1)},\cdots,n_k^{(V)}) n k=(nk(1),,nk(V)) n k ( t ) n_k^{(t)} nk(t)表示第 k k k个topic产生的词中word t的个数

综合

利用共轭结构,我们得到参数 ψ → k \overrightarrow\psi_k ψ k的后验分布恰好是: D i r ( ψ → k ∣ n → k + β → ) Dir(\overrightarrow\psi_k|\overrightarrow n_k + \overrightarrow\beta) Dir(ψ kn k+β )
而利用K个相互独立的topics生成words的过程,借助K个独立共轭结构,可以得到整个语料中词生成概率: p ( w → ∣ z → , β → ) = p ( w → ′ ∣ z → ′ , β → ) = ∏ k = 1 K p ( w → ( k ) ∣ z → ( k ) , β → ) = ∏ k = 1 K Δ ( n → k + β → ) Δ ( β → ) p(\overrightarrow{\pmb{w}}|\overrightarrow{\pmb{z}}, \overrightarrow\beta)=p(\overrightarrow{\pmb{w}}\prime|\overrightarrow{\pmb{z}}\prime, \overrightarrow\beta)=\prod_{k=1}^Kp(\overrightarrow w_{(k)}|\overrightarrow z_{(k)}, \overrightarrow \beta)=\prod_{k=1}^K\frac{\Delta{(\overrightarrow n_k+\overrightarrow \beta)}}{\Delta(\overrightarrow \beta)} p(www zzz ,β )=p(www zzz ,β )=k=1Kp(w (k)z (k),β )=k=1KΔ(β )Δ(n k+β )
结合 p ( w → ∣ z → , β → ) p(\overrightarrow{{w}}|\overrightarrow{{z}}, \overrightarrow\beta) p(w z ,β ) p ( z → ∣ α → ) p(\overrightarrow{{z}}|\overrightarrow\alpha) p(z α )可以得到联合分布:
p ( z → , w → ∣ α → , β → ) = ∏ k = 1 K Δ ( n → k + β → ) Δ ( β → ) ∗ ∏ m = 1 M Δ ( n → m + α → ) Δ ( α → ) p(\overrightarrow{{z}},\overrightarrow{{w}}|\overrightarrow\alpha,\overrightarrow\beta)=\prod_{k=1}^K\frac{\Delta{(\overrightarrow n_k+\overrightarrow \beta)}}{\Delta(\overrightarrow \beta)}*\prod_{m=1}^M\frac{\Delta(\overrightarrow n_m+\overrightarrow\alpha)}{\Delta(\overrightarrow\alpha)} p(z ,w α ,β )=k=1KΔ(β )Δ(n k+β )m=1MΔ(α )Δ(n m+α )
请添加图片描述

算法模型

综上我们有算法模型如下:
请添加图片描述

PLSA

有以下参数和推导关系:
θ d = p ( z ∣ d ) ψ k = p ( w ∣ z k ) p ( w ∣ d m ) = ∑ z = 1 K p ( w ∣ z ) p ( z ∣ d m ) = ∑ z = 1 K ψ z w θ m z p ( w → ∣ d m ) = ∏ i = 1 n ∑ z = 1 K p ( w i ∣ z ) p ( z ∣ d m ) = ∏ i = 1 n ∑ z = 1 K ψ z w i θ d z \theta_d=p(z|d) \\ \psi_k = p(w|z_k)\\ p(w|d_m)=\sum_{z=1}^Kp(w|z)p(z|d_m)=\sum_{z=1}^K\psi_{zw}\theta_{mz}\\ p(\overrightarrow{w}|d_m)=\prod_{i=1}^n\sum_{z=1}^Kp(w_i|z)p(z|d_m)=\prod_{i=1}^n\sum_{z=1}^K\psi_{zw_i}\theta_{dz} θd=p(zd)ψk=p(wzk)p(wdm)=z=1Kp(wz)p(zdm)=z=1Kψzwθmzp(w dm)=i=1nz=1Kp(wiz)p(zdm)=i=1nz=1Kψzwiθdz
第一行 θ d \theta_d θd表示对于每篇文档而言topic的概率;
第二行 ψ k \psi_k ψk表示对于每个topic而言单词的概率;
第三行 p ( w ∣ d m ) p(w|d_m) p(wdm)表示第m篇文章 d m d_m dm中每个单词的生成概率;
由此可知第四行 p ( w → ∣ d m ) p(\overrightarrow{w}|d_m) p(w dm)表示的整篇文档的生成概率

其过程可抽象为这样的上帝掷骰子:
请添加图片描述

EM for PLSA

请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值