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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/86246410

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) 表示从文档集合D中选择一个文档 d m d_m 的概率
  • p ( z k d m ) p(z_k|d_m) 表示从topic set中选择一个主题 z k z_k 的概率,即给定文档在各个主题的概率分布,服从多项式分布。
  • p ( w n z k ) p(w_n|z_k) 表示从word set中选择一个词汇 w n w_n 的概率,即给定主题在各个词汇上的概率分布,服从多项式分布。
      可知联合概率分布 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)
      对于一篇文档,由多个词汇组成,令其为 w = ( w 1 , w 2 , . . , w N ) \vec w=(w_1,w_2,..,w_N) ,生成这篇文档的概率为 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)
       d m d_m w n w_n 的联合概率为
    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 ( w n z k ) P(w_n|z_k) P ( z k d m ) P(z_k|d_m) ,于是定义似然函数
    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}
      由于 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) 不包含我们要求解的参数,我们不妨将其省略,要求解的式子变为
    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}
      由于参数都在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)
      其中
    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 ( 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)
      E-Step中的式子 L ( θ , θ i ) L(\theta,\theta_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}
      得到式子后,我们将在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
      使用拉格朗日乘子法处理,得到拉格朗日函数为
    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))
      上式分别对 P ( w n z k ) P(w_n|z_k) , P ( z k d m ) P(z_k|d_m) 求导,得到
    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
    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 ( 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 ( 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}
      结合 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 得到迭代式:
    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 ( 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)}
      得到迭代式后,就可以通过EM算法来迭代得到 P ( w n z k ) P(w_n|z_k) P ( z k d m ) P(z_k|d_m) ,得到我们的模型。

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/86246410