变量:

$w$表示词,$z$表示主题,$\mathbf{w}=(w_1,w_2,\cdots,w_N)$表示文档,语料库$D = (\mathbf{w}_1,\cdots,\mathbf{w}_M)$,$V$表示所有单词的个数(固定值),$N$表示一个文档中的词数(随机变量),$M$是语料库中的文档数(固定值),$k$是主题的个数(预先给定,固定值)。

在说明LDA模型之前,先介绍几个简单一些的模型。

1.Unigram model:

文档$\mathbf{w}=(w_1,w_2,\cdots,w_N)$,用$p({{w}_{n}})$表示词${{w}_{n}}$的先验概率,生成文档$\mathbf{w}$的概率:$p(\mathbf{w})=\prod\limits_{n=1}^{N}{p({{w}_{n}})}$。

图模型为:

2.Mixture of unigrams model:

一篇文档只由一个主题生成。该模型的生成过程是:给某个文档先选择一个主题$z$,再根据该主题生成文档,该文档中的所有词都来自一个主题。假设主题有${{z}_{1}},...,{{z}_{k}},$生成文档$\mathbf{w}$的概率为:

$p(\mathbf{w})=p({{z}_{1}})\prod\limits_{n=1}^{N}{p({{w}_{n}}|{{z}_{1}})}+\cdots +p({{z}_{k}})\prod\limits_{n=1}^{N}{p({{w}_{n}}|{{z}_{k}})}=\sum\limits_{z}{p(z)\prod\limits_{n=1}^{N}{p({{w}_{n}}|z)}}.$

图模型为:

LDA模型:

下面说明LDA模型生成一个文档的过程:

1首先要选择一个主题概率分布$\theta$,$\theta =({{\theta }_{1}},...,{{\theta }_{k}}),{{\theta }_{i}}$代表第i个主题被选择的概率,即$p(z=i|\theta )={{\theta }_{i}}$,且$\sum\limits_{i=1}^{k}{{{\theta }_{i}}}=1$,$\theta \thicksim Dir(\alpha )$,$p(\theta |\alpha )=\frac{\Gamma (\sum\limits_{i=1}^{k}{{{\alpha }_{i}}})}{\prod\limits_{i=1}^{k}{\Gamma ({{\alpha }_{i}})}}\theta _{1}^{{{\alpha }_{1}}-1}\cdots \theta _{k}^{{{\alpha }_{k}}-1}.$

2在选好一个主题概率分布$\theta $后,再选择一个主题${{z}_{n}}$,再根据${{z}_{n}}$和$\beta $选择一个词${{w}_{n}}$。$\beta ={{({{\beta }_{ij}})}_{k\times V}},{{\beta }_{ij}}=p({{w}^{j}}=1|{{z}^{i}}=1)$表示主题$i$生成词$j$的概率,$\sum_{j=1}^V \beta_{ij}=1$。

用2中的步骤生成N个词,文档$\mathbf{w}$就生成了。

图模型:

由LDA的图模型我们可以清楚得看出变量间的依赖关系。

整个图的联合概率(单个文档)为:$p(\theta, \mathbf{z},,\mathbf{w}|\alpha,\beta)=p(\theta|\alpha)\prod_{n=1}^Np(z_n|\theta)p(w_n|z_n,\beta)$,

生成文档的概率为$p(\mathbf{w}|\alpha,\beta)=\int p(\theta|\alpha)\prod_{n=1}^N\sum_{z_n}p(z_n|\theta)p(w_n|z_n,\beta)d\theta$,文本语料库由$M$篇文档组成,$D = (\mathbf{w}_1,\cdots,\mathbf{w}_M)$,故生成文本语料库的概率为

$p(D|\alpha,\beta)=\prod_{d=1}^M \int p(\theta_d|\alpha)\prod_{n=1}^{N_d} $$\sum_{z_{d_n}}p(z_{d_n}|\theta_d) p(w_{d_n}|z_{d_n},\beta)d\theta_d.$

下面叙述训练过程:

首先设定目标函数

\[\ell(\alpha,\beta)=\log p(D|\alpha,\beta)=\log \prod_{d=1}^M p(\mathbf{w}_d|\alpha,\beta)=\sum_{d=1}^M\log p(\mathbf{w}_d|\alpha,\beta).\]

我们参数训练的目标是求使$\ell(\alpha,\beta)$最大的参数$\alpha^\ast,\beta^\ast$。我们把$p(\mathbf{w}|\alpha,\beta)$展开得$p(\mathbf{w}|\alpha,\beta)=\frac{\Gamma(\sum_i \alpha_i)}{\prod_i \Gamma(\alpha_i)}\int(\prod_{i=1}^k \theta_i^{\alpha_i-1})(\prod_{n=1}^N\sum_{i=1}^k\prod_{j=1}^V(\theta_i\beta_{ij})^{w_n^j})d\theta$,由于$\theta$和$\beta$的耦合,对$\ell(\alpha,\beta)$用极大似然估计难以计算。下面我们用变分EM算法来计算最优参数$\alpha,\beta$。

E步骤:我们用$L(\gamma,\phi;\alpha,\beta)$来近似估计$\log p(\mathbf{w}|\alpha,\beta)$,给定一对参数值$(\alpha,\beta)$,针对每一文档,求得变分参数$\{\gamma_d^\ast,\phi_d^\ast:d\in D\}$,使得$L(\gamma,\phi;\alpha,\beta)$达到最大。

M步骤:求使$\mathscr{L}=\sum_d L(\gamma_d^\ast,\phi_d^\ast;\alpha,\beta)$达到最大的$\alpha,\beta$。

重复E、M步骤直到收敛,得到最优参数$\alpha^\ast,\beta^\ast$。

E步骤的计算方法:

这里用的是变分推理方法(variational inference),文档的似然函数

上式右部记为$L(\gamma,\phi;\alpha,\beta)$。当$\frac{ p(\theta,\mathbf{z},\mathbf{w}|\alpha,\beta)}{ q(\theta,\mathbf{z})}$为常数时,上式取等号,即分布$q$取$p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta)$时。

$p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta)=\frac{ p(\theta,\mathbf{z},\mathbf{w}|\alpha,\beta)}{ p(\mathbf{w}|\alpha,\beta)}$,由于$p(\mathbf{w}|\alpha,\beta)$中$\theta$和$\beta$的耦合,$p(\mathbf{w}|\alpha,\beta)$难以计算,因此$p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta)$也难以计算。我们用分布$q(\theta,\mathbf{z}|\gamma,\phi)$来近似分布$p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta)$,在$L(\gamma,\phi;\alpha,\beta)$中分布$q$取$q(\theta,\mathbf{z}|\gamma,\phi)$,我们得$\log p(\mathbf{w}|\alpha,\beta)= L(\gamma,\phi;\alpha,\beta)+D(q(\theta,\mathbf{z}|\gamma,\phi)|| p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta)).$上式说明计算分布$q(\theta,\mathbf{z}|\gamma,\phi)$与分布$p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta))$间的KL距离的最小值等价于计算下界函数$L(\gamma,\phi;\alpha,\beta)$的最大值。

用来近似后验概率分布$p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta))$的分布$q(\theta,\mathbf{z}|\gamma,\phi)$的图模型:

$\gamma$为狄利克莱分布的参数,$\phi=(\phi_{ni})_{n \times i},n=1,\cdots,N,i=1,\cdots,k$,$\phi_{ni}$表示第$n$个词由主题$i$生成的概率,$\sum_{i=1}^k \phi_{ni}=1$。

下面我们求使$L(\gamma,\phi;\alpha,\beta)$达到极大的参数$\gamma^\ast,\phi^\ast$。

将$L(\gamma,\phi;\alpha,\beta)$中的$p$和$q$分解,得

把参数$(\alpha,\beta)$和$(\gamma,\phi)$代入$L(\gamma,\phi;\alpha,\beta)$,再利用公式$E_q[\log(\theta_i)|\gamma]=\Psi(\gamma_i)-\Psi(\sum_{j=1}^k \gamma_j)$($\Psi$是$\log\Gamma$的一阶导数,可通过泰勒近似来计算),我们可得到

然后用拉格朗日乘子法(即变量的拉格朗日函数对变量求偏导等于零,求出变量对应的等式)来计算可得

$\phi_{ni} \propto \beta_{iv} \text{exp}(\Psi(\gamma_i)-\Psi(\sum_{j=1}^k \gamma_j)),$

$\gamma_i=\alpha_i+\sum_{n=1}^N \phi_{ni}.$

由$\sum_{i=1}^k \phi_{ni}=1$归一化求得$\phi_{ni}$。由于解$\phi_{ni}$和$\gamma_i$相互影响,可用迭代法来求解,算法如下:

最终可以得到收敛的参数$\gamma^\ast,\phi^\ast$。这里的参数$\gamma^\ast,\phi^\ast$是在给定一个固定的文档$\mathbf{w}$下产生的,因此$\gamma^\ast,\phi^\ast$也可记为$\gamma^\ast(\mathbf{w}),\phi^\ast(\mathbf{w})$,变分分布$q(\theta,\mathbf{z}|\gamma^\ast(\mathbf{w}),\phi^\ast(\mathbf{w}))$是后验分布$p(\theta,\mathbf{z}|\mathbf{w},\alpha,\beta)$的近似。文本语料库$D = (\mathbf{w}_1,\cdots,\mathbf{w}_M)$,用上述方法求得变分参数$\{\gamma^\ast_d,\phi^\ast_d:d \in D\}$。

M步骤的计算方法:

将$\{\gamma^\ast_d,\phi^\ast_d:d \in D\}$代入$\sum_d L(\gamma_d,\phi_d;\alpha,\beta)$得$\mathscr{L}=\sum_d L(\gamma_d^\ast,\phi_d^\ast;\alpha,\beta)$,我们用拉格朗日乘子法求$\beta$,拉格朗日函数为$l=\mathscr{L}+\sum_{i=1}^k \lambda_i(\sum_{j=1}^V \beta_{ij}-1)$,求得$\beta_{ij} \propto \sum_{d=1}^M \sum_{n=1}^{N_d} \phi_{dni} w_{dn}^j$,由$\sum_{j=1}^V \beta_{ij}=1$归一化求得$\beta_{ij}$。

下面求$\alpha$。我们对拉格朗日函数$l$对$\alpha_i$求偏导,得$\frac{\partial l}{\partial {\alpha_i}}=M(\Psi(\sum_{j=1}^k \alpha_j)-\Psi(\alpha_i))+\sum_{d=1}^M(\Psi(\gamma_{di})-\Psi(\sum_{j=1}^k \gamma_{dj}))$。由这个偏导等式可知$\alpha_i$值和$\alpha_j$值($i \neq j$)之间相互影响,故我们得用迭代法来求解最优$\alpha$值。我们用牛顿-拉弗逊算法来求解。将上面的偏导数再对$\alpha_j$求偏导,得$\frac{\partial l}{\partial {\alpha_i} \partial{\alpha_j}}=M(\Psi^{\prime}(\sum_{j=1}^k \alpha_j)-\delta(i,j) \Psi^{\prime}(\alpha_i))$。牛顿-拉弗逊算法的迭代公式为$\alpha_{\text{new}}=\alpha_{\text{old}}-H(\alpha_{\text{old}})^{-1}g(\alpha_{\text{old}})$,$H(\alpha)$即$\frac{\partial l}{\partial {\alpha_i} \partial{\alpha_j}}$,$g(\alpha)$即$\frac{\partial l}{\partial {\alpha}}$,迭代到收敛时即得最优$\alpha$值。

测试新文档主题分布:

设新文档为$\mathbf{w}$,用变分推理算法计算出新文档的$\gamma^\ast,\phi^\ast$,由于$\phi_{ni}$表示文档中第$n$个词由主题$i$生成的概率,故$\sum_{n=1}^N \phi_{ni}$为对文档中由主题$i$生成的词数估计,$\frac{1}{N}\sum_{n=1}^N \phi_{ni}$为主题$i$在文档主题组成中的比重。

上述说法与推导有错的话请大家批评指正。

转载于:https://www.cnblogs.com/hebin/archive/2013/04/25/3043575.html

Latent Dirichlet Allocation(LDA)相关推荐

  1. Latent Dirichlet Allocation (LDA)

    文章目录 LDA可以用来干什么? LDA模型简单引入与贝叶斯估计 二项分布与多项分布 共轭分布 MCMC采样 MCMC = Markov Chain(马尔科夫链)+ Monte Carlo(蒙特卡洛) ...

  2. Latent dirichlet allocation note

    2 Latent Dirichlet Allocation Introduction LDA是给文本建模的一种方法,它属于生成模型.生成模型是指该模型可以随机生成可观测的数据,LDA可以随机生成一篇由 ...

  3. 简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)

    引言 LDA(Latent Dirichlet Allocation)称为潜在狄利克雷分布,是文本语义分析中比较重要的一个模型,同时,LDA模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的 ...

  4. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三)

    潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三) 主题演 ...

  5. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二)

    潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二) LDA ...

  6. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一)

    潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一) LDA ...

  7. 潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)

    文章目录 1. 狄利克雷分布 2. 潜在狄利克雷分配模型 3. 学习推理 4. sklearn.decomposition.LatentDirichletAllocation 潜在狄利克雷分配(lat ...

  8. R语言文本主题模型之潜在语义分析(LDA:Latent Dirichlet Allocation)

    文本分析:主题建模 library(tidyverse) theme_set( theme_bw()) 目标 定义主题建模 解释Latent Dirichlet以及此过程的工作原理 演示如何使用LDA ...

  9. gensim实现LDA(Latent Dirichlet Allocation)算法提取主题词(topic)

     Latent Dirichlet Allocation(LDA) 隐含分布作为目前最受欢迎的主题模型算法被广泛使用.LDA能够将文本集合转化为不同概率的主题集合.需要注意的是LDA是利用统计手段对主 ...

  10. LDA(Latent Dirichlet allocation)

    目录 1. 贝叶斯网络 2. 主题模型 2.1 主题模型的直观理解 2.2 共轭先验分布 2.3 二项分布及其共轭先验--Beta分布 2.3.1 Bete分布 2.3.2 二项分布与其先验分布 2. ...

最新文章

  1. python下载安装教程图解-一招解决:各种版本的Python下载安装教程
  2. html5 支持音频格式,html5中audio支持音频格式
  3. hdoj-3342-Legal or Not(拓扑排序)
  4. Java中遍历删除ArrayList中多个元素
  5. Java数组队列ArrayQueue
  6. Elasticsearch--进阶-bool复合查询---全文检索引擎ElasticSearch工作笔记013
  7. python 解析命令行
  8. 富士康对夏普收购报价大幅缩水20多亿美元
  9. Python深度学习基础(四)——损失函数
  10. OpenHarmony AI图像识别开发—基于润和Hi3516开发套件
  11. win桌面显示html,win10怎么把ie图标放桌面上 win10桌面添加ie浏览器图标的方法
  12. Synonyms 中文近义词工具包 -- 支持文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等
  13. 如何将一个HTML页面嵌套在另一个页面中
  14. oracle 基本命令及常用的查询语句
  15. 机器学习笔记 - 互信息Mutual Information
  16. 计算机毕业设计基于asp.net的旅游网站
  17. 数学思想:4、数学归纳法
  18. 飞行(Mcool) 13.0.03106 简体中文绿色版
  19. 中文,拼音分词使用练习记录
  20. 【资源分享】Prezi的介绍——PPT的取代工具(文末有安装软件教程和大量资源的下载链接)

热门文章

  1. [uva11997]k个最小和
  2. RU大神手册上要再“做”的题
  3. [转]asp 没有权限: 'CreateObject'的解决方法
  4. appium 重新启动apk
  5. js判断手机横竖屏【转】
  6. java基础之集合:List Set Map的概述以及使用场景
  7. 深入浅出之正则表达式(一)(转)
  8. jquery ajax get 数组参数
  9. Centos 安装 Oracle Java JDK
  10. bzoj2151: 种树