机器学习主题模型之LDA参数求解——Gibbs采样

 

LDA参数推导的Gibbs采样方法基于马尔科夫链蒙特卡洛方法,因此首先学习MCMC方法。

一、马尔科夫链蒙特卡洛方法

MCMC(Markov Chain Monte Carlo)方法是构造适合的马尔科夫链,使其平稳分布为待估参数的后验分布,抽样并使用蒙特卡洛方法进行积分计算,实现了抽样分布随模拟的进行而改变的动态模拟,弥补了传统蒙特卡洛积分只能静态模拟的缺陷。

1、蒙特卡洛方法

蒙特卡洛方法是以概率统计的理论方法为基础的一种数值计算方法,将所要求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解,故又称随机抽样法或统计试验法。这种方法求得的是近似解,对于一些复杂问题往往是唯一可行的方法,模拟的样本数越大越接近真实值,但同时计算量也大幅上升。

蒙特卡洛方法的三个步骤:

(1)构造/描述概率过程

对于本身就具有随机性质的问题,如粒子运输问题,只要正确描述和模拟这个概率过程即可;对于本来不是随机性质的确定性问题,如定积分计算,就需要构造一个人为的概率过程,将不具有随机性质的问题转化为随机性质的问题。

例如要求f(x)在[a,b]上的积分,但原函数F(x)难以求解;如果可以得到x在[a,b]上的概率分布函数p(x),则定积分可以近似求解为:

        \int_{a}^{b}f(x)dx=\int_{a}^{b}\frac{f(x)}{p(x)}p(x)dx\approx \frac{1}{n}\sum_{i=0}^{n-1}\frac{f(x_{i})}{p(x_{i})}

(2)实现从已知概率分布中抽样

构造概率模型后,就可以基于概率分布去采样所需的n个x的样本集,带入求和式子即可求解。最基本的一个概率分布是(0,1)上的均匀分布,可以使用线性同余发生器LCG生成伪随机数样本:

        x:=(a*x+c)%m,  0<a<m, 0≤c<m, m>0

对于一些常见的连续分布,如正态分布、t分布、F分布、Beta分布、\Gamma分布等都可以通过uniform(0,1)的样本转换而得。

对于不是常见的分布,可以使用接受-拒绝采样来得到该分布的样本,即使用一个可以采样的分布q(x)与一个常数c相乘后,使得真实分布总在cq(x)曲线的下方。

       

重复以下步骤直到获得n个被接受的采样点:

        ①从cq(x)中获得一个随机采样点x_{0},值为cq(x_{0})

        ②计算接受概率acceptance probability:\alpha =\frac{p(x_{0})}{cq(x_{0})}

        ③从uniform(0,1)中随机生成一个值u,如果ɑ≥u,则接受采样x_{0},否则拒绝x_{0}并回到第一步。

从图上可以看出,cq(x)与p(x)曲线接近的地方接受概率较高,所以这样的地方采到的点就会比较多;而在接受概率较低的、差距较大的地方采到的点就会比较少,这也就保证了这个方法的有效性。

(3)建立各种估计量。

在构造了概率模型并从中抽样后,就可以确定一个随机变量,作为所要求问题的解——无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。

 

2、马尔科夫链

当后验分布的样本相互独立时,可以使用大数定律求解;当样本不独立时,就要使用马尔科夫链的平稳分布进行抽样。

对于一个非周期的马尔科夫链,任何两个状态i,j∈E是相通的(不可约),那么它的状态转移概率的极限存在且与i无关,则称此马尔科夫链具有遍历性:\lim_{n\rightarrow \infty }p^{(n)}(i,j)=p_{j},此时若满足p_{j}\geqslant 0,\; \sum p_{j}=1,则称p_{j} 为转移概率的极限分布。

平稳分布:若有限或无限数列\left \{ q_{j},j=1,2,... \right \} 满足q_{j}\geq 0,\; \sum q_{j}=1,则称它是概率分布;如果此概率分布满足q_{j}=\sum_{i}^{ }q_{i}p(i,j),则称它是平稳分布。

有限马尔科夫链转移概率的极限分布一定是平稳分布;无限马尔科夫链转移概率的极限分布不一定是平稳分布。

在得到平稳分布的马尔科夫链状态转移矩阵后,就可以从这个平稳分布中采样蒙特卡洛方法所需的样本集了。

 

       

 

3、Metropolis-Hastings算法

对不满足细致平稳条件的马尔科夫链状态转移矩阵p,引入ɑ(i,j)使其可以取等号,即得到满足条件的目标矩阵P:

        q_{i}p(i,j)\neq q_{j}p(j,i)\\\\q_{i}p(i,j)\alpha (i,j)= q_{j}p(j,i)\alpha (j,i)\\\\\Rightarrow \left\{\begin{matrix} \alpha (i,j)=q_{j}p(j,i)\\ \alpha (j,i)=q_{i}p(i,j) \end{matrix}\right.\\\\\therefore P(i,j)=\alpha (i,j)\cdot p(i,j)

ɑ(i,j)∈[0,1]称为接受率,P可以通过任意一个马尔科夫链状态转移矩阵p乘以ɑ(i,j)得到,注意每次转移后需要归一化矩阵使得每一行之和为1。但由于ɑ(i,j)可能非常小,导致大部分采样都被拒绝转移,马尔科夫链需要采样很多次才能收敛,采样效率很低。

MH采样将接受率做了如下改进,解决了接受率过低的问题:

        \alpha (i,j)=\min \left \{ \frac{q_{j}p(j,i)}{q_{i}p(i,j)},1 \right \}

MH算法在特征很多的情况下,接受率的计算量很大;且在特征维度很高,难以求出特征的联合概率分布,只能得到特征之间的条件概率分布时,需要采取Gibbs采样的方法解决这类问题。

       

 

4、Gibbs Sampling

马尔科夫链通过转移概率矩阵可以收敛到稳定的概率分布,这意味着MCMC可以借助马尔科夫链的平稳分布特性模拟高维概率分布p(x);当马尔科夫链经过burn-in阶段,消除初始参数的影响、达到平稳状态后,每一次状态转移都可以生成待模拟分布的一个样本。

Gibbs采样是MCMC算法的一个特例,只对2维以上的情况有效,它交替随机固定某一维度,通过其他维度的值来抽样该维度的值。设p(x,y)是一个二维的联合概率分布,由下图可知:

       

        p(x_{1},y_{1})p(y_{2}|x_{1})=p(x_{1})p(y_{1}|x_{1})p(y_{2}|x_{1})=p(x_{1},y_{2})p(y_{1}|x_{1})

        p(x_{1},y_{1})p(x_{2}|y_{1})=p(y_{1})p(x_{1}|y_{1})p(x_{2}|y_{1})=p(x_{2},y_{1})p(x_{1}|y_{1})

        \Rightarrow \left\{\begin{matrix} p(A)p(y_{2}|x_{1})=p(B)p(y_{1}|x_{1})\\ p(A)p(x_{2}|y_{1})=p(C)p(x_{1}|y_{1}) \end{matrix}\right.   

所以在 x=x_{1} 这条直线上,如果用条件概率分布 p(y|x_{1}) 作为马尔科夫链的状态转移概率,则任意两个点之间的转移满足细致平稳条件;在y=y_{1} 这条直线上也是如此。Gibbs采样和MH的不同之处在于,MH只是单独考虑某两个状态的采样(相当于直接从A到D),而Gibbs采样是沿着不同维度进行轮换采样的,且接受率ɑ=1 是MH算法的特例情况。最终的近似平稳分布可以通过采样结果\left \{(x_{n},y_{n}),(x_{n+1},y_{n+1}),... \right \} 近似表达。

              

 

二、Gibbs采样算法求解LDA思路

在Gibbs采样算法求解LDA的方法中,假设α、η是已知的先验输入,目的是推断隐变量的分布,即估计p(θ,z,β,w|ɑ,η),可以通过对θ、β积分将它们边缘化去掉,这种方法称为collapse Gibbs sampling。

       

        p(\beta ,z,\theta ,w|\alpha ,\eta )=\prod_{k=1}^{K}p(\beta _{k}|\eta )\prod_{m=1}^{M}p(\theta _{m}|\alpha )\prod_{n=1}^{N}p(z_{mn}|\theta _{m})p(w_{mn}|z_{mn},\beta _{k})

        p(z,w|\alpha ,\eta )\\\\=\int \int p(\theta ,z,w,\beta |\alpha ,\eta )d\theta d\beta \\\\=\int \prod_{m=1}^{M}p(\theta _{m}|\alpha )\prod_{n=1}^{N}p(z_{mn}|\theta_{m})d\mathbf{\theta}\cdot \int \prod_{k=1}^{K}p(\beta _{k}|\eta)\prod_{m=1}^{M}\prod_{n=1}^{N}p(w_{mn}|z_{mn},\beta_{k})d\beta

假设每篇文档长度N相同,分别考虑θ、β这两部分的积分,令n_{n}^{k} 代表第m篇文档中分配给第k个主题的词的个数,对应的多项分布的计数为:n_{m}=\left ( n_{m}^{1}, n_{m}^{2},..., n_{m}^{K} \right )

        \sum_{n=1}^{N}p(z_{mn}|\theta _{m})=\prod_{k=1}^{K}\theta _{mk}^{n_{m}^{k}}

先对θ部分进行计算,根据α→θ→z的Dir-Mult共轭分布关系,省略M的连乘可得:

        \int p(\theta _{m}|\alpha )\prod_{n=1}^{N}p(z_{mn}|\theta _{m})d\theta _{m}\\\\=\int \frac{\Gamma (\sum_{k=1}^{K}\alpha _{k})}{\prod_{k=1}^{K}\Gamma (\alpha _{k})}\prod_{k=1}^{K}\theta _{mk}^{\alpha _{k}-1}\prod_{k=1}^{K}\theta _{mk}^{n_{m}^{k}}d\theta _{m}\\\\=\int \frac{\Gamma (\sum_{k=1}^{K}\alpha _{k})}{\prod_{k=1}^{K}\Gamma (\alpha _{k})}\prod_{k=1}^{K}\theta _{mk}^{n_{m}^{k}+\alpha _{k}-1}d\theta _{m}

根据Dirichlet分布的积分性质可知:

        \int \frac{\Gamma (\sum_{k=1}^{K}n_{m}^{k}+\alpha _{k})}{\prod_{k=1}^{K}\Gamma (n_{m}^{k}+\alpha _{k})}\prod_{k=1}^{K}\theta _{mk}^{n_{m}^{k}+\alpha _{k}-1}d\theta _{m}=1

因此θ部分积分可化为:

        \int p(\theta _{m}|\alpha )\prod_{n=1}^{N}p(z_{mn}|\theta _{m})d\theta _{m}= \frac{\Gamma (\sum_{k=1}^{K}\alpha _{k})}{\prod_{k=1}^{K}\Gamma (\alpha _{k})}\cdot \frac{\prod_{k=1}^{K}\Gamma (n_{m}^{k}+\alpha _{k})}{\Gamma (\sum_{k=1}^{K}n_{m}^{k}+\alpha _{k})}

 

同样地,令n_{k}^{v} 代表第k个主题对应词典中第v个词的词个数,对应的多项分布的计数为:n_{k}=\left ( n_{k}^{1}, n_{k}^{2},..., n_{k}^{V} \right ),可将β部分的积分写为:

        \int \prod_{k=1}^{K}p(\beta _{k}|\eta)\prod_{m=1}^{M}\prod_{n=1}^{N}p(w_{mn}|z_{mn},\beta_{k})d\beta \\\\=\prod_{k=1}^{K}\int p(\beta _{k}|\eta)\prod_{m=1}^{M}\prod_{n=1}^{N}p(w_{mn}|z_{mn},\beta_{k})d\beta_{k}\\\\=\prod_{k=1}^{K}\int \frac{\Gamma (\sum_{v=1}^{V}\eta_{v})}{\prod_{v=1}^{V}\Gamma (\eta_{v})}\prod_{v=1}^{V}\beta _{mk}^{n_{k}^{v}+\eta _{v}-1}d\beta _{k}\\\\=\prod_{k=1}^{K}\frac{\Gamma (\sum_{v=1}^{V}\eta_{v})}{\prod_{v=1}^{V}\Gamma (\eta_{v})}\cdot \frac{\prod_{v=1}^{V}\Gamma (n_{k}^{v}+\eta _{v})}{\Gamma (\sum_{v=1}^{V}n_{k}^{v}+\eta _{v})}

最终得到主题和词的联合分布如下:

        p(z,w|\alpha ,\eta )=\prod_{m=1}^{M}\frac{\Gamma (\sum_{k=1}^{K}\alpha _{k})}{\prod_{k=1}^{K}\Gamma (\alpha _{k})}\cdot \frac{\prod_{k=1}^{K}\Gamma (n_{m}^{k}+\alpha _{k})}{\Gamma (\sum_{k=1}^{K}n_{m}^{k}+\alpha _{k})} \times \prod_{k=1}^{K}\frac{\Gamma (\sum_{v=1}^{V}\eta_{v})}{\prod_{v=1}^{V}\Gamma (\eta_{v})}\cdot \frac{\prod_{v=1}^{V}\Gamma (n_{k}^{v}+\eta _{v})}{\Gamma (\sum_{v=1}^{V}n_{k}^{v}+\eta _{v})}

 

Gibbs采样的目标是接近分布p(z|w,ɑ,η),由于w,ɑ,η已知,令z_{mn} 表示第m篇文档的第n个词对应的主题,z_{-mn} 代表z去掉z_{mn} 后的主题分布。

        p(z_{mn}|z_{-mn},w,\alpha ,\eta )=\frac{p(z_{mn},z_{-mn},w|\alpha ,\eta)}{p(z_{-mn},w|\alpha ,\eta )}

注意到Gibbs采样只需要为z_{mn} 采一个样,因此不用得到上式准确的值,只需得到z_{mn} 取值的比值即可,将上式简化为: 

        p(z_{mn}=k|z_{-mn},w,\alpha ,\eta )\\\\\propto p(z_{mn}=k,z_{-mn},w|\alpha ,\eta )\\\\=\left ( \frac{\Gamma (\sum_{i=1}^{K}\alpha _{i})}{\prod_{i=1}^{K}\Gamma (\alpha _{i})} \right )^{M}\prod_{j\neq m}^{ }\frac{\prod_{i=1}^{K}\Gamma (n_{j}^{i}+\alpha _{i})}{\Gamma (\sum_{i=1}^{K}n_{j}^{i}+\alpha _{i})}\left ( \frac{\Gamma (\sum_{r=1}^{V}\eta _{r})}{\prod_{r=1}^{V}\Gamma (\eta _{r})} \right )^{K}\\\\\cdot \prod_{i=1}^{K}\prod_{r\neq v}^{ }\Gamma (n_{i}^{r}+\eta _{r})\frac{\prod_{i=1}^{K}\Gamma (n_{m}^{i}+\alpha _{i})}{\Gamma (\sum_{i=1}^{K}n_{m}^{i}+\alpha _{i})}\prod_{i=1}^{K}\frac{\Gamma (n_{i}^{v}+\eta _{v})}{\Gamma (\sum_{r=1}^{V}n_{i}^{r}+\eta _{r})}

        \propto \prod_{i=1}^{K}\Gamma (n_{m}^{i}+\alpha _{i})\frac{\Gamma (n_{i}^{v}+\eta _{v})}{\Gamma (\sum_{r=1}^{V}n_{i}^{r}+\eta _{r})}

        \propto \prod_{i\neq k}^{ }\Gamma (n_{m}^{i,-mn}+\alpha _{i})\frac{\Gamma (n_{i,-mn}^{v}+\eta _{v})}{\Gamma (\sum_{r=1}^{V}n_{i,-mn}^{r}+\eta _{r})}\cdot \Gamma (n_{m}^{k,-mn}+\alpha _{k}+1)\frac{\Gamma (n_{k,-mn}^{v}+\eta _{v}+1)}{\Gamma (\sum_{r=1}^{V}n_{k,-mn}^{r}+\eta _{r}+1)}

        = \prod_{i}^{ }\Gamma (n_{m}^{i,-mn}+\alpha _{i})\frac{\Gamma (n_{i,-mn}^{v}+\eta _{v})}{\Gamma (\sum_{r=1}^{V}n_{i,-mn}^{r}+\eta _{r})}\cdot (n_{m}^{k,-mn}+\alpha _{k})\frac{ (n_{k,-mn}^{v}+\eta _{v})}{(\sum_{r=1}^{V}n_{k,-mn}^{r}+\eta _{r})}

        \propto (n_{m}^{k,-mn}+\alpha _{k})\frac{ (n_{k,-mn}^{v}+\eta _{v})}{(\sum_{r=1}^{V}n_{k,-mn}^{r}+\eta _{r})}

Gibbs采样公式的物理意义就是在K条doc→topic→word的路径中进行采样,当采样收敛后可得所有词最终的主题z,统计每篇文档中的主题概率p(topic|doc)可得文档主题分布\theta _{m},统计每个主题中所有的词概率p(word|topic)可得主题词分布\beta _{k}

       

 

三、LDA Gibbs采样算法流程总结

(1)选择适当的主题总数K,及LDA模型参数ɑ、η;

(2)对应文集中的每一篇文档的每个词w,随机赋予一个主题编号z;

(3)重新扫描文集,对每个词w使用Gibbs采样公式更新它的主题编号,并更新文集中的词;

(4)重复采样过程直至收敛;

(5)统计文集中topic-word共现频率矩阵,即可得到LDA模型。

通常训练LDA模型时,取Gibbs采样收敛之后的n个迭代的结果进行平均来做参数估计,这样模型质量更高。

 

当LDA模型训练好后,要确定一篇新文档的主题时,由于各个主题的词分布\beta _{k} 已经确定,只需要对\theta _{m} 进行采样计算即可。

选择适合的超参数K非常关键,对于简单的语义区分可选择较小的K,对于复杂的语义区分则选择较大的K,且需要足够多的语料。

Gibbs采样容易并行化,可以很方便的使用大数据平台来分布式地训练海量文档的LDA模型。

 

 

参考资料

https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation

lda数学八卦

https://blog.csdn.net/pipisorry/article/details/51373090

http://www.cnblogs.com/pinard/p/6831308.html

 

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值