内容纲要

欢迎转载,作者:Ling,注明出处:机器学习:原理简明教程12-主题模型

一句话概括(SVD):SVD通过矩阵的分解,分解成三个矩阵的相乘,其中隐含的行或者列就是隐藏的主题。

一句话概括(pLSA):pLSA是一个选文档,文档选主题,主题选词这样一个链式的概率模型,主要通过EM算法要学习链式中的这三个概率值,EM算法中E步是主题的后验概率

ml_theme_001

,M步是通过最大化似然函数期望的方式得到的:

ml_theme_002

一句话概括(LDA):LDA是解决多主题分类问题,它通过不断的采样,更新各个概率的方式,最后得到各个概率的值。

 

主题模型主要用三个:SVD与LSA,pLSA,LDA,关于这三个在自然语言处理:原理简明教程08-文本分类和情感分析有详细介绍,这里从机器学习角度进行更深入的介绍,尤其是pLSA和LDA。

LSA(latent semantic analysis)潜在语义分析

也被称为LSI(latent semantic index),是Scott Deerwester, Susan T. Dumais等人在1990年提出来的一种新的索引和检索斱法。该斱法和传统向量空间模型(vector space model)一样使用向量来表示词(terms)和文档(documents),幵通过向量间的关系(如夹角)来判断词及文档间的关系;而不同的是,LSA将词和文档映射到潜在语义空间,从而去除了原始向量空间中的一些“噪音”,提高了信息检索的精确度。

SVD:奇异值分解与主成分分析

  • 思想:通过线性代数,可以将任何矩阵,分解成三个矩阵的乘积
  • 参考:奇异值分解

ml_theme_003

利用SVD求解LSA

  • 分析文档集合,建立Term-Document矩阵。
  • 对Term-Document矩阵进行奇异值分解。
  • 对SVD分解后的矩阵进行降维,也就是奇异值分解一节所提到的低阶近似。
  • 使用降维后的矩阵构建潜在语义空间,或重建Term-Document矩阵。
  • 图示说明:

ml_theme_004

作用

  • 找related word
  • 相似文档
  • 相似用户,推荐相似内容

SVD缺点:计算复杂度高,当矩阵达到1000维以上时计算已经非常缓慢,但文本分析一般都会形成非常大型的“文档-词”矩阵,从而难以实现,甚至存储都很困难

 

pLSA

ml_theme_005

引子:生成文档(文本建模)

Unigram模型:词概率

ml_theme_006

Mixture of Unigrams模型:单一主题+词

ml_theme_007

pLSA:多主题+词

就以上两个模型来说,每个文档只包含一个主题未免太单一了。Hoffmm在1999年提出了概率隐语义分析(Probabilistic Latent Semantic Analysis)。他认为每个主题下都有一个词汇的概率分布,而一篇文章通常由多个主题构成,并且文章中的每个单词都是由某个主题生成的。

概率隐语义分析(PLSA)是一个著名的针对文本建模的模型,是一个生成模型。因为加入了主题模型,所以可以很大程度上改善多词一义和一词多义的问题。

 

问题

ml_theme_008

pLSA的概率图模型:

ml_theme_009

这其实就是一个简单的单链贝叶斯网络,因为里面包含隐变量z,所以通常采用EM算法学习模型参数,所以有如下推导过程。

 

算法推导过程:

ml_theme_010

注:

1)两个重要概率

ml_theme_011

2)写出似然函数:对观察数据(di,wi)进行极大似然估计(目标函数是所有出现概率的乘积)

ml_theme_012

也就是后一项可以去掉,由此,我们得到新的目标似然函数:

ml_theme_013

或者说是:

ml_theme_014

然后取关于参数P(zk|di)P(wj|zk) 的似然函数期望为最终目标函数:

ml_theme_015

第一个是根据目标似然函数第二个式子得到,第二个是根据目标似然函数第一个式子得到,

你可以想象隐变量概率为:

ml_theme_016

f(x)为

ml_theme_046

E(x)=Σp(xi)*xi

E(f(xi))=Σp(xi)*f(xi)

暴露p(wj|zk),p(zk|di)出是因为我们要求关于这两个概率的期望最大值。并且PLSA的核心就是求这两个概率。

3)EM建模

ml_theme_017

这里的目标函数实际上最终应该是:

ml_theme_018

最后就是要估计出这两个位置变量概率,这样就可以可以根据pLSA模型图,生成文档

 

另一种解释:

ml_theme_019

3.1)E步:求隐含变量主题zk的后验概率(隐变量的条件概率)

ml_theme_020

公式由来:

ml_theme_021

3.2)M步

ml_theme_022

第一个等式

ml_theme_023

同理第二个等式,最后的解为:

ml_theme_024

总结:

E步:

ml_theme_025

M步:

ml_theme_026

不断EM迭代,最终使p(wj|zk)和p(zk|di)收敛

 

 

目前学过的参数估计方法有:矩估计/MLE/MaxEnt/EM等

 

LDA

主要问题

 

  • 共轭先验分布
  • Dirichlet分布
  • LDA模型:Gibbs采样算法学习参数

 

共轭先验分布

几个概念:通过贝叶斯公式描述

ml_theme_027

ml_theme_028

共轭先验分布的实践意义

ml_theme_029

举例(二项分布为似然函数,Beta分布为先验分布)

ml_theme_030

指数表示的是出现次数

ml_theme_031

注:

形式一样,那就好办了,就可以每次乘以一个似然函数,得到新的一个一样的分布

 

扩展:

ml_theme_032

引子:只要知道长这样既可

ml_theme_033

Dirichlet分布:

ml_theme_034

注:

1)如果把θ和1-θ认为是p1和p2,折beta分布涉及两个值,而D分布涉及K个值,同时指数部分如果将α-1认为是a1-1,β-1认为是a2-1,B分布是2个值,D是K个,可以用向量表示,同时要做归一化,是引子那个公式可以表示。

2)简写

ml_theme_035

一般为了简化我们会采用对称Dirichlet分布,也就是αk都取一样α

ml_theme_036

1)α取值对D(P|a)影响

ml_theme_037

2)GIF动态

ml_theme_038

3)当α<1,主题可以更加鲜明,有区分

ml_theme_039

多项分布的共轭分布是Dirichlet分布

ml_theme_040

LDA模型:参数太多不好用EM,所以用采样

第一种解释:

简单解释:

ml_theme_041

详细解释:

ml_theme_042

ml_theme_043

第二种解释(参考:自然语言处理:原理简明教程08-文本分类和情感分析

ml_theme_044

算法理解

  • 首先根据D分布,随机给出一系列γ概率值
  • 根据D分布,随机给出一系列θ概率值
  • 根据P分布,随机给出一系列N值
  • 根据多项式公式+θ可以得到主题Zm,n
  • 结合γ和Zm,n可以推测出Wm,n

自己写的学习参数的实例

ml_theme_045

:这是一个学习参数的过程,可以最后得到P(w/z),P(z/d), P(z/w)

1)d表示文档,z表示主题,w表示单词

2)最初只是知道文档和文档中的词

3)然后随机给P(z/w),然后就可以通过采样,知道d1文档中的每个词属于哪个主题,同理可以知道每个文档的每个词属于什么主题

4)接着进行统计可以知道d1文档,每个主题的分布情况,z1主题对应每个词的分布情况,w1对应的每个主题的分布情况,也就是P(w/z),P(z/d), P(z/w)都更新了,依照P(z/w),可以再次从1)开始迭代,直到收敛

5)最后输出P(w/z),P(z/d), P(z/w)