吉布斯采样

Posted yao1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吉布斯采样相关的知识,希望对你有一定的参考价值。

以LDA模型为例:

  1、对一个token计算K个主题的所有概率,并随机得到一个主题。

  技术分享图片

[p(z_{dn}=k|t_{dn}=w,Z_{-dn},C_{-dn})propto frac{C_{wk}^{-dn}+eta}{C_k^{-dn}+Veta}(C_{dk}^{-dn}+alpha)]

  2、多项式采样:给定K维概率向量p(非归一化),其中每一个元素$p_k=frac{C_{wk}^{-dn}+eta}{C_k^{-dn}+Veta}(C_{dk}^{-dn}+alpha)$

    1)LSearch(Linear search on p):计算归一化常数$c_K=sum_kp_k$,生成随机数$u=uniform(c_K)$,在区间$[0,c_K)$。线性搜索$z=minlbrace k:(sum_{sle k}p_s)>u brace$

    2)BSearch(Binary search on c = cumsum(p)):生成随机数$u=uniform(c_K)$。二元搜索$z=minlbrace k:c_k>u brace$

    3)使用Alias table

    4)使用F+ tree

  3、吉布斯采样器:根据降低采样复杂度所使用的优化方法的不同分为两类

    1)Sparsity-Aware (SA) Samplers:利用$C_w$或$C_d$的稀疏性来降低采样复杂度(将条件概率分解成两部分$C_{dk}frac{C_{wk}+eta}{C_k+Veta}$和$alphafrac{C_{wk}+eta}{C_k+Veta}$,如果$C_{dk}$稀疏,则采样器跳过$C_{dk}$为0的,因此降低复杂度;或者分解成$C_{wk}frac{C_{dk}+alpha}{C_k+Veta}$和$etafrac{C_{dk}+alpha}{C_k+Veta}$,如果$C_{wk}$稀疏,则采样器跳过$C_{wk}$为0的)(下面两种算法的区别在于采样所使用的数据结构不同)

      (1.1)AliasLDA:使用Alias table

      (1.2)F+LDA:使用F+ tree

    2)Metropolis-Hastings (MH) Samplers:使用MH算法来达到O(1)的采样复杂度(从分布$q^{doc}propto C_{dk}+alpha$和分布$q^{word}propto frac{C_{wk}+eta}{C_k+Veta}$中采样)(根据采样器对于内存数据结构的访问顺序的不同分为两类)

      (2.1)LightLDA

      (2.2)WarpLDA

技术分享图片

 

以上是关于吉布斯采样的主要内容,如果未能解决你的问题,请参考以下文章

从马尔科夫链到吉布斯采样与PageRank

吉布斯采样

蒙特卡罗马尔科夫与吉布斯采样

吉布斯采样——原理及matlab实现

LDA训练过程(吉布斯采样)

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样