LSA与pLSA(1)

来源:互联网 发布:java 打印map 编辑:程序博客网 时间:2024/06/03 19:53

1. 引子

Bag-of-Words 模型是NLP和IR领域中的一个基本假设。在这个模型中,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语法或者词序的部分。BOW在传统NLP领域取得了巨大的成功,在计算机视觉领域(Computer Vision)也开始崭露头角,但在实际应用过程中,它却有一些不可避免的缺陷,比如:

  1. 稀疏性(Sparseness): 对于大词典,尤其是包括了生僻字的词典,文档稀疏性不可避免;
  2. 多义词(Polysem): 一词多义在文档中是常见的现象,BOW模型只统计单词出现的次数,而忽略了他们之间的区别;
  3. 同义词(Synonym): 同样的,在不同的文档中,或者在相同的文档中,可以有多个单词表示同一个意思;

从同义词和多义词问题我们可以看到,单词也许不是文档的最基本组成元素,在单词与文档之间还有一层隐含的关系,我们称之为主题(Topic)。我们在写文章时,首先想到的是文章的主题,然后才根据主题选择合适的单词来表达自己的观点。在BOW模型中引入Topic的因素,成为了大家研究的方向,这就是我们要讲的Latent Semantic Analysis (LSA) 和 probabilitistic Latent Semantic Analysis (pLSA),至于更复杂的LDA和众多其他的Topic Models,以后再详细研究。

2. LSA简介

已知一个文档数据集D={d1,d2,...,dN}及相应的词典W={w1,w2,...,wM},采用BOW模型假设,我们可以将数据集表示为一个N?W的共生矩阵,N=(n(di,wj))i,j,其中,n(di,wj)表示词典中的第j个单词在第i个文档中出现的次数。

LSA的基本思想就是,将document从稀疏的高维Vocabulary空间映射到一个低维的向量空间,我们称之为隐含语义空间(Latent Semantic Space).

如何得到这个低维空间呢,和PCA采用特征值分解的思想类似,作者采用了奇异值分解(Singular Value Decomposition)的方式来求解Latent Semantic Space。标准的SVD可以写为:

N=UΣVt


其中,UV均为正交矩阵,有UtU=VtV=IΣ是包含N所有奇异值的对角矩阵。LSA降维的方式就是只取Σ中最大的K个奇异值,而其他置为0,得到Σ的近似矩阵Σ?,于是得到了共生矩阵的近似:

N?=UΣ?Vt


注意到如果我们利用内积来计算文档与文档之间的的相似度,即N的自相关矩阵,可以得到:N?N?t=UΣ?2Ut。于是,我们可以把UΣ?解释为文档样本在Latent Space上的坐标,而Vt则是两个空间之间的变换矩阵。下图形象的展示了LSA的过程:

由LSA在训练集合上得到的参数,当一个新的文档向量xtest到来时,我们可以利用下式将其原始term space映射到latent space:

x?=Σ??1Vtxtest

LSA的优点

  1. 低维空间表示可以刻画同义词,同义词会对应着相同或相似的主题;
  2. 降维可去除部分噪声,是特征更鲁棒;
  3. 充分利用冗余数据;
  4. 无监督/完全自动化;
  5. 与语言无关;

LSA的不足

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

3. pLSA

类似于LSA的思想,在pLSA中也引入了一个Latent class,但这次要用概率模型的方式来表达LSA的问题,如下图:

在这个probabilitistic模型中,我们引入一个Latent variable zk{z1,z2,...,zK},这对应着一个潜在的语义层。于是,完整的模型为:p(di)代表文档在数据集中出现的概率;p(wj|zk)代表当确定了语义zk时,相关的term(word)出现的机会分别是多少;p(zk|di) 表示一个文档中语义分布的情况。利用以上这些定义,我们就可以一个生成式模型(generative model),利用它产生新的数据:

  1. 首先根据分布p(di)随机抽样选择一个文档di;
  2. 选定文档后,根据p(zk|di)抽样选择文档表达的语义zk
  3. 选定语义后,根据p(wj|zk)选择文档的用词;

这样,我们得到了一个观测对(di,wj),多次重复这一过程我们就得到了一个类似N的共生矩阵,而潜在的语义zk在观测值中并没有表现出来。为了刻画(di,wj)的联合分布,我们可得到以下公式:

p(di,wj)=p(di)p(wj|di),p(wj|di)=Kk=1p(wj|zk)p(zk|di)


用图模型来表示以上公式如Figure3中的(a),而(b)是pLSA模型的另外一种等价形式,公式可写作:

p(di,wj)=Kk=1p(wj|zk)p(zk)p(di|zk)


模型确定好了,已知的数据集N,我们可以利用Maximum Likelihood准则来确定模型的参数,目标函数可写作:

L=Ni=1Mj=1n(di,wj)logp(di,wj)

=Ni=1n(di){logp(di)+Mj=1n(di,wj)n(di)logKk=1p(wj|zk)p(zk|di)}

此目标函数也可以解释为使p(wj|di)n(di,wj)n(di)两个分布之间的K-L Divergence最小,即p(wj|di)更好的刻画共生矩阵的实际分布。

原创粉丝点击