1.词袋模型(BOW)
在自然语言处理NLP领域中,词袋模型(bag of words,BOW)是经典的模型之一。它考虑所有的词汇都装在一个袋子中,任何一篇文档中的单词都可以用袋子中的词汇来描述。如果有10万个词汇,那么每篇文档都可以表示为一个10万维的向量。得到文档向量之后,我们通过可以通过描述向量之间的差异来寻找文档之间的关联。
但是词袋模型有几个明显的缺点:
- 稀疏性(Sparseness):对于大词袋,尤其是包含了生僻字的词袋,文档稀疏性不可避免。
- 一词多义:一词多义是一种常见的现象,但是BOW模型只统计单词出现的次数,而忽略了他们之间的区别;
- 多词一义:在不同或相同文档中,可能存在多种单词存在同一个意思。
为了解决同义词以及文档稀疏性的问题,在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(zk∣dm)表示从topic set中选择一个主题 z k z_k zk的概率,即给定文档在各个主题的概率分布,服从多项式分布。
-
p
(
w
n
∣
z
k
)
p(w_n|z_k)
p(wn∣zk)表示从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(zk∣dm)P(wn∣zk)
对于一篇文档,由多个词汇组成,令其为 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=1∏NP(wn∣dm)
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(wn∣dm)=P(dm)k∑P(zk∣dm)P(wn∣zk,dm)=P(dm)k∑P(zk∣dm)P(wn∣zk)
我们想要从我们已有的样本,也就是一堆文档和相关词汇中,估计出上面的参数 P ( w n ∣ z k ) P(w_n|z_k) P(wn∣zk)和 P ( z k ∣ d m ) P(z_k|d_m) P(zk∣dm),于是定义似然函数
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=1∏Mn=1∏NP(dm,wn)n(dm,wn)=m=1∑Mn=1∑Nn(dm,wn)lnP(dm,wn)=m=1∑Mn=1∑Nn(dm,wn)ln(P(dm)k∑P(zk∣dm)P(wn∣zk))=m=1∑Mn=1∑Nn(dm,wn)lnk∑P(zk∣dm)P(wn∣zk)+m=1∑Mn=1∑Nn(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=1∑Mn=1∑Nn(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=1∑Mn=1∑Nn(dm,wn)lnk∑P(zk∣dm)P(wn∣zk)=m=1∑Mn=1∑Nn(dm,wn)lnk∑P(wn,zk∣dm)
由于参数都在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=1∑Mn=1∑Nn(dm,wn)k∑P(zk∣wn,dm;θi)lnP(wm,zk∣dm)
其中
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(zk∣wn,dm;θi)=P(wn,dm;θi)P(zk,wn,dm;θi)=P(dm;θi)P(wn∣dm;θi)P(dm;θi)P(zk∣dm;θi)P(wn∣zk;θi)=P(wn∣dm;θi)P(zk∣dm;θi)P(wn∣zk;θi)=∑jP(zj∣dm;θi)P(wn∣zj;θi)P(zk∣dm;θi)P(wn∣zk;θ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,zk∣dm)=P(zk∣dm)P(wn∣zk)
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=1∑Mn=1∑Nn(dm,wn)k∑∑jP(zj∣dm;θi)P(wn∣zj;θi)P(zk∣dm;θi)P(wn∣zk;θi)lnP(zk∣dm)P(wn∣zk)=m=1∑Mn=1∑Nn(dm,wn)k∑∑jP(zj∣dm;θi)P(wn∣zj;θi)P(zk∣dm;θi)P(wn∣zk;θi)(lnP(zk∣dm)+lnP(wn∣zk))
得到式子后,我们将在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)withn∑P(wn∣zk)=1,k∑P(zk∣dm)=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(1−n∑P(wn∣zk))+m∑βm(1−k∑P(zk∣dm))
上式分别对 P ( w n ∣ z k ) P(w_n|z_k) P(wn∣zk), P ( z k ∣ d m ) P(z_k|d_m) P(zk∣dm)求导,得到
∂ 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(wn∣zk)∂L=P(wn∣zk)∑mn(dm,wn)P(zk∣wn,dm;θi)−αk=0,1≤n≤N,1≤k≤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(zk∣dm)∂L=P(zk∣dm)∑nn(dm,wn)P(zk∣wn,dm;θi)−βm=0,1≤m≤M,1≤k≤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(wn∣zk)=αk∑mn(dm,wn)P(zk∣wn,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(zk∣dm)=βm∑nn(dm,wn)P(zk∣wn,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(wn∣zk)=1,∑kP(zk∣dm)=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(wn∣zk;θi+1)=∑n∑mn(dm,wn)P(zk∣wn,dm;θi)∑mn(dm,wn)P(zk∣wn,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(zk∣dm;θi+1)=∑k∑nn(dm,wn)P(zk∣wn,dm;θi)∑nn(dm,wn)P(zk∣wn,dm;θi)
得到迭代式后,就可以通过EM算法来迭代得到 P ( w n ∣ z k ) P(w_n|z_k) P(wn∣zk)和 P ( z k ∣ d m ) P(z_k|d_m) P(zk∣dm),得到我们的模型。