0. 预定义
- w 表示词,V 表示词表大小(固定值)。
- z 表示主题,K 表示主题数量。
- D = ( d 1 , d 2 , . . . , d M ) (d_1, d_2, ..., d_M) (d1,d2,...,dM)表示语料库,M 表示文档数量。
- d = ( w 1 , w 2 , . . . , w N ) (w_1,w_2,...,w_N) (w1,w2,...,wN)表示一篇文档,N 为文档中词的数量。
- 注意话题模型是词袋模型,词之间并没有顺序。
- 贝叶斯学派思路:先验分布 π ( θ ) \pi(\theta) π(θ) + 样本信息 χ \chi χ → \rightarrow → 后验分布 π ( θ ∣ x ) \pi(\theta|x) π(θ∣x)
- 狄利克雷分布Dirichlet(
α
→
\overrightarrow {\alpha}
α)是多项式分布Multi(
N
,
p
→
N,\overrightarrow{p}
N,p)的共轭先验分布。即如下公式:
D i r i c h l e t ( p → ∣ α → ) + M u l t i n o m i a l ( m → ) = D i r i c h l e t ( p → ∣ α → + m → ) Dirichlet(\overrightarrow {p}|\overrightarrow {\alpha}) + Multinomial(\overrightarrow{m}) = Dirichlet(\overrightarrow {p}|\overrightarrow {\alpha} + \overrightarrow{m}) Dirichlet(p∣α)+Multinomial(m)=Dirichlet(p∣α+m) - LDA相关数学基础请移步刘老师博客。
1. LSA (潜在语义分析,也称潜在语义检索LSI)
- LSA通过对 词-文档 矩阵进行SVD分解,得到“词-主题”、“主题-主题”、"主题-文档"矩阵,其中SVD的时间复杂度为O(m*n*k),m,n,k分别对应文档数量、词表大小、主题数量。
- 优点:简单易实现
- 缺点:SVD计算复杂度高,LSA不是概率模型,缺乏可解释性。k的值不好确定。
2. PLSA (概率潜在语义分析)
-
PLSA利用了贝叶斯模型的思想,文档 d 可以看做是在 k 个主题的概率分布,而每个主题又可以看做是在 V 个词上的概率分布。
-
每篇文档通过这样两层的概率分布生成,生成文档的过程可以看做掷骰子的过程:
- 假设你每写一篇文档会制作一颗K面的“文档-主题”骰子(扔此骰子能得到K个主题中的任意一个),和K个V面的“主题-词项” 骰子。
- 比如可令K=3,即制作1个含有3个主题的“文档-主题”骰子,这3个主题可以是:教育、经济、交通。然后令V = 3,制作3个有着3面的“主题-词项”骰子,其中,教育主题骰子的3个面上的词可以是:大学、老师、课程,经济主题骰子的3个面上的词可以是:市场、企业、金融,交通主题骰子的3个面上的词可以是:高铁、汽车、飞机。
- 对于每一个词,先扔该“文档-主题”骰子选择主题,得到主题的结果后,使用和主题结果对应的那颗“主题-词项”骰子,扔该骰子选择要写的词。重复这一过程 N 次即生成一篇文档。
- 文档生成过程可简单概述如下:
- 以概率 p ( d i ) p(d_i) p(di)从语料中随机选择一篇文档 d i d_i di;
- 选定文档后,从主题分布中按照 p ( z k ∣ d i ) p(z_k|d_i) p(zk∣di)选择一个主题 z k z_k zk;
- 选定主题后,从词分布中按照概率 p ( w j ∣ z k ) p(w_j|z_k) p(wj∣zk)选择一个词 w j w_j wj。
- 词-文档的联合概率分布可以表示如下:
p ( w j , d i ) = ∑ k = 1 K p ( z k ) p ( d i ∣ z k ) p ( w j ∣ z k ) = p ( d i ) ∑ k = 1 K p ( z k ∣ d i ) p ( w j ∣ z k ) p(w_j, d_i) = \sum_{k=1}^K p(z_k) p(d_i|z_k)p(w_j|z_k) = p(d_i)\sum_{k=1}^K p(z_k|d_i)p(w_j|z_k) p(wj,di)=k=1∑Kp(zk)p(di∣zk)p(wj∣zk)=p(di)k=1∑Kp(zk∣di)p(wj∣zk)
其中 z 可视为主题。前一个式子中 d 和 w 均在给定 z 的情况下由条件概率生成,而后一个式子中 z 是在给定 d 的情况下有条件概率生成,也是我们需要的目标式子。 - 由于 p ( d i ) p(d_i) p(di)可以事先计算得到,所以 θ = ( p ( z k ∣ d i ) , p ( w j ∣ z k ) \theta=(p(z_k|d_i), p(w_j|z_k) θ=(p(zk∣di),p(wj∣zk)就是我们需要求的参数,一般需要最大化似然函数。常用求解方法为EM算法。
- 优点:弥补了LSA不具备概率(统计学)意义的缺点。
- 缺点:无法得知新文档的概率 P ( d n ) P(d_n) P(dn),且 P ( z ∣ d ) P(z|d) P(z∣d)的计算复杂度随着文档规模的增长线性增加。
- PLSA图模型如下,阴影表示可观测变量,白圈表示隐变量。
3. LDA (潜在狄利克雷分配)
- LDA在PLSA的基础上,使用两个狄利克雷分布去生成文档对应主题的概率分布、主题对应词的概率分布。具体过程可以描述如下:
- 以概率 P ( d i ) P(d_i) P(di)选择一篇文档 d i d_i di;
- 以 α \alpha α参数的狄利克雷分布生成 d i d_i di的主题分布 θ i \theta_i θi;
- 从主题的多项式分布 θ i \theta_i θi取样生成文档第j个词对应的主题 z i j z_{ij} zij;
- 以 β \beta β参数的狄利克雷分布生成主题 z i j z_{ij} zij对应的词分布 ϕ z i j \phi_{z_{ij}} ϕzij;
- 从词语的多项式分布 ϕ z i j \phi_{z_{ij}} ϕzij中采样最终生成词语 w i j w_{ij} wij。
- 优点:
- 无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。
- 使用稀疏的狄利克雷分布来建模文档关于主题的概率分布、主题关于词的概率分布,符合人类的先验知识,因为一篇文档的主题往往集中在特定少数几个主题上,同理一个主题的表示也主要集中少数词语上,多数情况是少部分(跟这个话题高度相关的)词出现的频率会很高,而其他的词出现的频率则明显较低。
- 缺点:不适合建模短文本,因为document-level word co-occurrences 很稀疏。
- 与PLSA的差异:
- PLSA给定一个文档,其主题概率分布 P ( z ∣ d i ) P(z|d_i) P(z∣di)是唯一确定的,同理给定一个主题,其词概率分布 P ( w ∣ z ) P(w|z) P(w∣z)是唯一确定的。最终用EM算法(极大似然估计思想)求解出了两个未知但固定的参数的值 P ( w j ∣ z k ) P(w_j|z_k) P(wj∣zk)和 P ( z k ∣ d i ) P(z_k|d_i) P(zk∣di),是频率派的思想。
- LDA中文档的主题概率分布、主题的词概率分布都是由狄利克雷分布随机生成的,是贝叶斯派的思想。LDA求解参数可以变分推断-EM算法和吉布斯采样估计。前者使用最大后验概率MAP估计,后者使用贝叶斯估计。
- LDA概率图模型如下: