LDA中Gibbs采样算法和并行化

    最近在用topic model跑一些数据,算法采用了LDA和PLSA进行对比,由于数据量稍大,采用了LDA的并行化版本,对其并行化方法很感兴趣,查看了相关资料后先总结如下,有时间可以继续琢磨。Gibbs Sampling用来逼近LDA中的隐式变量,是一种较为简单的实现方式。

    Gibbs 方法

    传统的实现方法是串行的,主要流程如下:

    步骤4中,每一个word都需要对全局进行更新,很容易造成网络拥堵,是并行化主要优化的地方,一种并行化方案如下:

    

    上面的方法一方面可以进行异步网络传输,另一方面设置cache进行批量更新可以减少同步带来的加锁操作。

    在采用的LDA并行化版本里面,基本是采用方法二的思路进行优化,即用MPI集群的多个计算节点分别进行计算部分文档集合,在每台计算节点,采用多线程的方法进行加速,在每台计算节点计算完成之后,更新全局的p(word|topic),然后进行下一轮的迭代。在程序运行的过程中发现在单台计算节点采用多线程的方法不一定能提高效率,甚至会降低运行速度,需要进一步观察和实验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值