LDA主题模型

1. 什么是主题模型

看了几天LDA主题模型,说实话到现在依然很懵。。。但是为了加深记忆,还是把一些自己的理解做一下记录。主题模型是从语料库中挖掘出隐含的信息,比如文档的主题分布,每个主题的词语分布。主题模型的厉害之处在于它是无监督学习的,也就是不需要有标记过的数据。主题模型不需要知道有哪些主题,只需要知道总共有多少个主题,就可以自动为每个文档生成主题分布,自动为每个主题生成词分布。主题模型需要提前为其设置一共有多少个主题以及一共有多少个单词。

2. LDA模型原理

LDA主题模型又叫做隐含狄利克雷分布主题模型。我的理解是隐含代表这个模型需要处理隐变量,狄利克雷分布则是主题模型中每篇文档的主题分布的先验和每个主题中词分布的先验。假设每篇文档有一个主题分布$\theta_d$,每个主题有一个词分布$t_k$,则生成这篇文档的最大似然有下式:

其中$z_{d,i}$表示文档$d$第$i$个词的主题,$w_i$表示文档$d$第$i$个词,$\theta_d(z_{d,i})$表示文档第$i$个词的主题是$z_{d,i}$的概率,$t_{z_{d,i}}(w_i)$表示在主题$z_{d,i}$下抽到$w_i$的概率。LDA模型对每篇文档和每个主题都单独有一个先验分布,每个先验分布都是狄利克雷分布,文档$d$主题分布的先验记为$Dir(\alpha_d)$,主题$k$词分布的先验记为$Dir(\beta_k)$。有了这些先验知识,现在的需求就改为求生成文档$d$的最大后验概率:

这个式子可以转化为:

这是狄利克雷分布的一个性质,即狄利克雷先验乘上多项式分布似然等于狄利克雷后验。需要注意的是,上面的式子是建立在已知文档当中每个词的主题的条件下的,但是前面有说到,LDA是无监督学习的,也就是说是事先不知道各个文档各个词的主题的。求解LDA有吉布斯采样方法和变分EM算法。吉布斯采样方法本质上是通过采样与更新参数使得$P(z|\alpha,\beta,d)$收敛,收敛后最大的$z$就可以视作文档$d$的主题。变分EM算法本质上都可以看作是求最大似然$P(D|\alpha,\beta)$,即找到超参数$\alpha$和$\beta$使得数据集$D$的似然达到最大。

吉布斯采样方法通过近似得到后验概率$P(z|\alpha_d,\{\beta_k\},d)$的样本,这个样本确定了各个文档各个词的主题,得到各个文档各个词的主题就可以更新狄利克雷先验分布了,照着这个步骤迭代直到先验分布收敛,收敛后的先验分布的超参数就是我们要求的最大似然的超参数。

变分EM算法,使用$q(\theta_d,\{\beta_k\},z|\gamma,\xi,\lambda)$去近似后验分布$P(\theta_d,\{\beta_k\},z|\alpha_d,\{\beta_k\},d)$,假设:

通过最小化$q$分布和$p$分布之间的KL散度来达到近似求解效果。变分EM算法在E步固定$\alpha$和$\beta$,求$\gamma$,$\xi$和$\lambda$;在M步固定$\gamma$,$\xi$和$\lambda$,求$\alpha$和$\beta$。如此反复直到收敛,求得的$\alpha$和$\beta$就可以作为最大似然$P(D|\alpha,\beta)$的解。

更具体的求解步骤和讲解可以参考:https://www.cnblogs.com/pinard/p/6831308.html