机器学习:潜在语义分析

语义分析是非常常见的机器学习的应用,比如文本分类、推荐系统、图像处理。潜在语义分析(LSA)是一种语义分析的进化版本,是一种无监督的方法。它问题建模为一个特征向量,语义分析问题就变成了向量空间中衡量向量之间的相似度,寻找最接近的问题,而向量空间一般用矩阵来表达。

以文本分析为例子,构建文本-单词向量空间,文本为一维,单词为一维,矩阵的元素为某单词在文本中出现的次数,这样问题就被形式化方便进一步用数学公式进行计算,文本之间相似度就可以看成文本向量之间距离度量(通常用夹角),这就是普通的语义分析模型。

但这个模型有个问题就是单词具有多义性,某两个不同的单词可能具有相同的意思,这样就会导致语义分析的时候出现不同的向量代表相同意思的情况,而潜在语义分析就解决了这个问题。它引入了一个中间变量来消除单词的多义性,这个中间变量就是话题。通过构建单词-话题-文本这样一个结构,来消除单词-文本之间的多义性问题。是不是很像数据库理论中的某一个项如果可以再分解,则应将该表项单独设计成一张表通过ID连接来消除组合项。

所以,潜在语义分解通过话题解决了这个问题,某一个话题包括了多个表达同样意思的单词,但是话题之间不存在多义性可以与文本建立良好的映射关系。而单词和话题之间也可以用一个矩阵来表达,所以单词-话题-文本可以看成是一个变换的关系,由原来单词*文本矩阵,变成了单词*话题,话题*文本矩阵相当于将原来一个矩阵分解为了2个矩阵。看到分解,我们就想到了之前介绍的矩阵的奇异值分解,完美的对应上了。通过分解,我们可以找到话题*文本矩阵,并在这个矩阵里求解。

当然矩阵的分解有很多种方法,比如奇异值分解、非负分解,理解了原理方法就直接用就行了。除了将问题表达为矩阵的方式,还可以表达为概率模型。这就是概率潜在语义分析模型,套路是一样的,只是将分析模型建立为概率模型,其中话题表达为隐变量,原理实际上是大同小异。


机器学习:潜在语义分析


分享到:


相關文章: