【机器学习】潜在语义分析LSA和PLSA

文章目录

  • 1.词袋模型(BOW)
  • 2.潜在语义分析 (LSA)
    • 2.1 LSA的优点
    • 2.2 LSA的不足
  • 3. PLSA(基于概率的LSA)

1.词袋模型(BOW)

  在自然语言处理NLP领域中,词袋模型(bag of words,BOW)是经典的模型之一。它考虑所有的词汇都装在一个袋子中,任何一篇文档中的单词都可以用袋子中的词汇来描述。如果有10万个词汇,那么每篇文档都可以表示为一个10万维的向量。得到文档向量之后,我们通过可以通过描述向量之间的差异来寻找文档之间的关联。
  但是词袋模型有几个明显的缺点:

  1. 稀疏性(Sparseness):对于大词袋,尤其是包含了生僻字的词袋,文档稀疏性不可避免。
  2. 一词多义:一词多义是一种常见的现象,但是BOW模型只统计单词出现的次数,而忽略了他们之间的区别;
  3. 多词一义:在不同或相同文档中,可能存在多种单词存在同一个意思。
      为了解决同义词以及文档稀疏性的问题,在BOW模型中引入“主题”的概念,提出了Latent Semantic Analysis (LSA)模型。我们在写文章时,首先想到的是文章的主题,然后才根据主题选择合适的单词来表达自己的观点。

2.潜在语义分析 (LSA)

  LSA也称为LSI(latent semantic index)。在PCA降维中,我们利用SVD做矩阵分解,将样本降到低纬度的空间。在LSA中,我们同样也应用SVD来解决相似的问题,将文档从稀疏的n维空间映射到一个低维(k维)的向量空间,我们称之为隐含语义空间(Latent Semantic Space).
  ps:如对SVD算法有不理解的地方,可以参考【机器学习算法推导】奇异值分解SVD与主成分分析PCA
LSA的算法流程如下:

  • (1)分析文档集合,建立词汇-文本矩阵A。
  • (2)对词汇-文本矩阵进行奇异值分解。
  • (3)使用降维后的矩阵构建潜在语义空间,将原始文本映射到k维空间。

2.1 LSA的优点

  • 将一篇文档映射到低维空间,意味着有一些词汇在降维后在同一个点上,也就是说,这些点刻画着同义词。
  • 降维可去除部分噪声,使特征更鲁棒;
  • 充分利用冗余数据;
  • 无监督/完全自动化;
  • 与语言无关;

2.2 LSA的不足

  • 没有刻画词汇出现次数的概率模型;
  • 无法解决多义词的问题;
  • SVD的优化目标基于L-2 norm 或者是 Frobenius Norm的,这相当于隐含了对数据的高斯噪声假设。而term出现的次数是非负的,这明显不符合Gaussian假设;
  • 对于count vectors 而言,欧式距离表达是不合适的(重建时会产生负数);
  • 特征向量的方向没有对应的物理解释;
  • SVD的计算复杂度很高,而且当有新的文档来到时,若要更新模型需重新训练;

3. PLSA(基于概率的LSA)

  对于一个正常人来说,我们是如何构思一篇文章的呢?一般来说我们会先确定我们要写的主题,比如说我正在写的这篇文章是机器学习相关的,可能会涉及到计算机,概率论,机器学习方面的术语,假设线性代数占20%,概率论主题占30%,机器学习主题占50%。而在概率论中,可能会联想到期望,方差,概率等词汇,线性代数可能会联想到矩阵,特征值等词汇,机器学习方面可能会出现模型,权重,空间等词汇。
  我们可以很自然地认为,一篇文章(doc)是由几个主题(topic)组成的,并且不同的主题由该主题下频率较高的一些词汇(word)进行描述。
  我们定义:

  • p ( d m ) p(d_m) p(dm)表示从文档集合D中选择一个文档 d m d_m dm的概率
  • p ( z k ∣ d m ) p(z_k|d_m) p(zkdm)表示从topic set中选择一个主题 z k z_k zk的概率,即给定文档在各个主题的概率分布,服从多项式分布。
  • p ( w n ∣ z k ) p(w_n|z_k) p(wnzk)表示从word set中选择一个词汇 w n w_n wn的概率,即给定主题在各个词汇上的概率分布,服从多项式分布。
      可知联合概率分布 p ( d m , z k , w n ) = P ( d m ) P ( z k ∣ d m ) P ( w n ∣ z k ) p(d_m,z_k,w_n)=P(d_m)P(z_k|d_m)P(w_n|z_k) p(dm,zk,wn)=P(dm)P(zkdm)P(wnzk)
      对于一篇文档,由多个词汇组成,令其为 w ⃗ = ( w 1 , w 2 , . . , w N ) \vec w=(w_1,w_2,..,w_N) w =(w1,w2,..,wN),生成这篇文档的概率为 P ( w ⃗ ∣ d m ) = ∏ n = 1 N P ( w n ∣ d m ) P(\vec w|d_m)=\prod\limits_{n=1}^NP(w_n|d_m) P(w dm)=n=1NP(wndm)
       d m d_m dm w n w_n wn的联合概率为
    P ( d m , w n ) = P ( d m ) P ( w n ∣ d m ) = P ( d m ) ∑ k P ( z k ∣ d m ) P ( w n ∣ z k , d m ) = P ( d m ) ∑ k P ( z k ∣ d m ) P ( w n ∣ z k ) \begin{aligned} P(d_m,w_n) &=P(d_m)P(w_n|d_m) \\ &=P(d_m)\sum_kP(z_k|d_m)P(w_n|z_k,d_m) \\ &=P(d_m)\sum_kP(z_k|d_m)P(w_n|z_k) \end{aligned} P(dm,wn)=P(dm)P(wndm)=P(dm)kP(zkdm)P(wnzk,dm)=P(dm)kP(zkdm)P(wnzk)
      我们想要从我们已有的样本,也就是一堆文档和相关词汇中,估计出上面的参数 P ( w n ∣ z k ) P(w_n|z_k) P(wnzk) P ( z k ∣ d m ) P(z_k|d_m) P(zkdm),于是定义似然函数
    L ( θ ) = ln ⁡ ∏ m = 1 M ∏ n = 1 N P ( d m , w n ) n ( d m , w n ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ⁡ P ( d m , w n ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ⁡ ( P ( d m ) ∑ k P ( z k ∣ d m ) P ( w n ∣ z k ) ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ⁡ ∑ k P ( z k ∣ d m ) P ( w n ∣ z k ) + ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ⁡ P ( d m ) \begin{aligned} L(\theta) &=\ln\prod_{m=1}^M\prod_{n=1}^NP(d_m,w_n)^{n(d_m,w_n)} \\ &=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln P(d_m,w_n) \\ &=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln (P(d_m)\sum_kP(z_k|d_m)P(w_n|z_k)) \\ &=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln \sum_kP(z_k|d_m)P(w_n|z_k)+ \sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln P(d_m) \end{aligned} L(θ)=lnm=1Mn=1NP(dm,wn)n(dm,wn)=m=1Mn=1Nn(dm,wn)lnP(dm,wn)=m=1Mn=1Nn(dm,wn)ln(P(dm)kP(zkdm)P(wnzk))=m=1Mn=1Nn(dm,wn)lnkP(zkdm)P(wnzk)+m=1Mn=1Nn(dm,wn)lnP(dm)
      由于 ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ⁡ P ( d m ) \sum\limits_{m=1}^M\sum\limits_{n=1}^Nn(d_m,w_n)\ln P(d_m) m=1Mn=1Nn(dm,wn)lnP(dm)不包含我们要求解的参数,我们不妨将其省略,要求解的式子变为
    L ( θ ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ⁡ ∑ k P ( z k ∣ d m ) P ( w n ∣ z k ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ⁡ ∑ k P ( w n , z k ∣ d m ) \begin{aligned} L(\theta)&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln \sum_kP(z_k|d_m)P(w_n|z_k)\\ &=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln \sum_kP(w_n,z_k|d_m) \end{aligned} L(θ)=m=1Mn=1Nn(dm,wn)lnkP(zkdm)P(wnzk)=m=1Mn=1Nn(dm,wn)lnkP(wn,zkdm)
      由于参数都在ln里面,并且计算量较大,所以我们可以利用EM算法将其“解放”出来。对于PLSA模型来说,有
    L ( θ , θ i ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ∑ k P ( z k ∣ w n , d m ; θ i ) ln ⁡ P ( w m , z k ∣ d m ) L(\theta,\theta_i)=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\sum_kP(z_k|w_n,d_m;\theta_i)\ln P(w_m,z_k|d_m) L(θ,θi)=m=1Mn=1Nn(dm,wn)kP(zkwn,dm;θi)lnP(wm,zkdm)
      其中
    P ( z k ∣ w n , d m ; θ i ) = P ( z k , w n , d m ; θ i ) P ( w n , d m ; θ i ) = P ( d m ; θ i ) P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) P ( d m ; θ i ) P ( w n ∣ d m ; θ i ) = P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) P ( w n ∣ d m ; θ i ) = P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) \begin{aligned} P(z_k|w_n,d_m;\theta_i) &=\frac{P(z_k,w_n,d_m;\theta_i)}{P(w_n,d_m;\theta_i)} \\ &=\frac{P(d_m;\theta_i)P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{P(d_m;\theta_i)P(w_n|d_m;\theta_i)} \\ &=\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{P(w_n|d_m;\theta_i)} \\ &=\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{\sum_jP(z_j|d_m;\theta_i)P(w_n|z_j;\theta_i)} \\ \end{aligned} P(zkwn,dm;θi)=P(wn,dm;θi)P(zk,wn,dm;θi)=P(dm;θi)P(wndm;θi)P(dm;θi)P(zkdm;θi)P(wnzk;θi)=P(wndm;θi)P(zkdm;θi)P(wnzk;θi)=jP(zjdm;θi)P(wnzj;θi)P(zkdm;θi)P(wnzk;θi)
    P ( w m , z k ∣ d m ) = P ( z k ∣ d m ) P ( w n ∣ z k ) P(w_m,z_k|d_m)=P(z_k|d_m)P(w_n|z_k) P(wm,zkdm)=P(zkdm)P(wnzk)
      E-Step中的式子 L ( θ , θ i ) L(\theta,\theta_i) L(θ,θi)变为
    L ( θ , θ i ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ∑ k P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) ln ⁡ P ( z k ∣ d m ) P ( w n ∣ z k ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ∑ k P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) ( ln ⁡ P ( z k ∣ d m ) + ln ⁡ P ( w n ∣ z k ) ) \begin{aligned} L(\theta,\theta_i) &=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\sum_k\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{\sum_jP(z_j|d_m;\theta_i)P(w_n|z_j;\theta_i)}\ln P(z_k|d_m)P(w_n|z_k) \\ &=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\sum_k\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{\sum_jP(z_j|d_m;\theta_i)P(w_n|z_j;\theta_i)}(\ln P(z_k|d_m)+\ln P(w_n|z_k)) \end{aligned} L(θ,θi)=m=1Mn=1Nn(dm,wn)kjP(zjdm;θi)P(wnzj;θi)P(zkdm;θi)P(wnzk;θi)lnP(zkdm)P(wnzk)=m=1Mn=1Nn(dm,wn)kjP(zjdm;θi)P(wnzj;θi)P(zkdm;θi)P(wnzk;θi)(lnP(zkdm)+lnP(wnzk))
      得到式子后,我们将在M-Step中对其进行优化。优化目标为
    θ i + 1 = arg ⁡ max ⁡ θ L ( θ , θ i ) w i t h ∑ n P ( w n ∣ z k ) = 1 , ∑ k P ( z k ∣ d m ) = 1 \theta_{i+1}=\arg \max_\theta L(\theta,\theta_i) \\ with \quad \sum_nP(w_n|z_k)=1,\sum_kP(z_k|d_m)=1 θi+1=argθmaxL(θ,θi)withnP(wnzk)=1,kP(zkdm)=1
      使用拉格朗日乘子法处理,得到拉格朗日函数为
    L ( θ ) = L ( θ , θ i ) + ∑ k α k ( 1 − ∑ n P ( w n ∣ z k ) ) + ∑ m β m ( 1 − ∑ k P ( z k ∣ d m ) ) \mathcal{L}(\theta)=L(\theta,\theta_i)+\sum_k\alpha_k(1-\sum_nP(w_n|z_k))+\sum_m\beta_m(1-\sum_kP(z_k|d_m)) L(θ)=L(θ,θi)+kαk(1nP(wnzk))+mβm(1kP(zkdm))
      上式分别对 P ( w n ∣ z k ) P(w_n|z_k) P(wnzk), P ( z k ∣ d m ) P(z_k|d_m) P(zkdm)求导,得到
    ∂ L ∂ P ( w n ∣ z k ) = ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) P ( w n ∣ z k ) − α k = 0 , 1 ≤ n ≤ N , 1 ≤ k ≤ K \frac{\partial \mathcal{L}}{\partial P(w_n|z_k)}=\frac{\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{P(w_n|z_k)} -\alpha_k=0,1 \le n \le N,1 \le k \le K P(wnzk)L=P(wnzk)mn(dm,wn)P(zkwn,dm;θi)αk=0,1nN,1kK
    ∂ L ∂ P ( z k ∣ d m ) = ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) P ( z k ∣ d m ) − β m = 0 , 1 ≤ m ≤ M , 1 ≤ k ≤ K \frac{\partial \mathcal{L}}{\partial P(z_k|d_m)}=\frac{\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{P(z_k|d_m)} -\beta_m=0,1 \le m \le M,1 \le k \le K P(zkdm)L=P(zkdm)nn(dm,wn)P(zkwn,dm;θi)βm=0,1mM,1kK
      解得
    P ( w n ∣ z k ) = ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) α k P(w_n|z_k)=\frac{\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\alpha_k} P(wnzk)=αkmn(dm,wn)P(zkwn,dm;θi)
    P ( z k ∣ d m ) = ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) β m P(z_k|d_m)=\frac{\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\beta_m} P(zkdm)=βmnn(dm,wn)P(zkwn,dm;θi)
      结合 ∑ n P ( w n ∣ z k ) = 1 , ∑ k P ( z k ∣ d m ) = 1 \sum_nP(w_n|z_k)=1,\sum_kP(z_k|d_m)=1 nP(wnzk)=1,kP(zkdm)=1得到迭代式:
    P ( w n ∣ z k ; θ i + 1 ) = ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) ∑ n ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) P(w_n|z_k;\theta_{i+1})=\frac{\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\sum_n\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)} P(wnzk;θi+1)=nmn(dm,wn)P(zkwn,dm;θi)mn(dm,wn)P(zkwn,dm;θi)
    P ( z k ∣ d m ; θ i + 1 ) = ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) ∑ k ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) P(z_k|d_m;\theta_{i+1})=\frac{\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\sum_k\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)} P(zkdm;θi+1)=knn(dm,wn)P(zkwn,dm;θi)nn(dm,wn)P(zkwn,dm;θi)
      得到迭代式后,就可以通过EM算法来迭代得到 P ( w n ∣ z k ) P(w_n|z_k) P(wnzk) P ( z k ∣ d m ) P(z_k|d_m) P(zkdm),得到我们的模型。

你可能感兴趣的:(机器学习之旅)