LDA主题模型和Gibbs Sampling 学习整理
来源:互联网 发布:linux有几个版本 编辑:程序博客网 时间:2024/06/06 16:34
目录
- 目录
- LDA主题模型和Gibbs Sampling 学习整理
- LDA模型
- Dirichlet-Multinomial共轭
- LDA模型
- LDA公式推导
- LDA总结
- Gibbs Sampling
- Gibbs Sampling 公式推算
- LDA模型
LDA主题模型和Gibbs Sampling 学习整理
LDA主题模型模型我主要参考的是LDA数学八卦、通俗理解LDA主题模型、主题模型-LDA浅析进行学习和理解的。非常感谢他们的分享。
LDA模型
Dirichlet-Multinomial共轭
LDA必须要理解这个共轭结构,其实也没什么难的,就是下面的公式:
通俗的来说,就是LDA数学八卦所举的例子,从一个坛子里面的抽出一个骰子,然后根据骰子的面来组成语料库,那么坛子里面的骰子的分布就是先验分布,我们这里假设其为Dirichlet分布(相信为了方便起见,你不会使用其他先验分布),那么不断投掷骰子得到的语料库我们认定其为多项分布,那么根据我们不断投掷的结果,我们可以用贝叶斯公式很轻松的得到坛子里面骰子的分布,很巧的是,后验分布也是Dirichlet分布(这个是你就会明白假设先验分布为Dirichlet分布的好处了)。就是,先验分布都是Dirichlet分布,抽样分布为多项分布的特点我们称其为Dirichlet-Multinomial共轭。
LDA模型
- 首先必须了解这两个物理过程:
α→→θ→m→zm,n 表示使用参数
α→ 生成了一个主题分布θm 并且通过这个主题分布生成一个主题词z→m,n 。还原为物理过程为:在生成第m篇文档的时候,先从第一个坛子中抽取了一个doc-topic的骰子θ→m ,然后投掷这个骰子生成了文档中第n个词的topic编号z→m,n .β→→φ→k→ωm,n|k=zm,n 表示使用参数
β→ 和主题词zm,n 生成了一个词汇分布φ→k 并且通过这个词汇的分布生成了一个词汇ωm,n ,其物理过程为:在K个topic-word骰子φ→k 中,挑选编号为k=zm,n 的那个骰子进行投掷,然后生成wordωm,n .
这里我们必须要注意到的是,编号为k的骰子其每个面的概率亦或者说,其分布是根据参数
对于每篇文档m来说,
代表doc-topic骰子每个面的概率
代表每个面出现的次数,也就是topic出现的次数。那么文档m对应的概率分布为:
Mult(n→m|θ→m,Vm) 。
同理,对于每个topic k来说,
代表topic-word骰子每个面的概率
- 代表每个面出现的次数,也就是每个单词的个数,那么topic k对应的概率分布为
Mult(nk−→|φk−→,Vk) - 其次利用Dirichlet-Multinomial共轭来解释这两个物理过程
- 针对第一个物理过程
α→→θ→m→z→m,n ,
我们应该这样看待这个物理过程,把语料库按文档进行分组,然后为每个文档抽取Km 个topics我们认为
α→→θ→m→z→m 表示生成第m篇文档中的所有词对应的topics,并且有α→→θ→m 对应Dirichlet分布,θ→m→z→m 对应Multinomial分布。
这里的θ→m 是贝叶斯派所假设的变量,表示doc-topic骰子的每个面出现的概率,一共存在K个面。把θ→m 看成一个骰子,重复投掷Km 次。θ→m 就是第m篇文档的主题分布
θ→m=(θ(1)m,θ(2)m,…,θ(k)m,…,θ(K)m)
其分布p(θ→m|α→)=Dir(θ→m|α→) 。α→ 是一个先验参数。
而经过抽样,这个抽样样本正好符合多项分布,即p(n→m)=Multinomial(n→m|θ→m,Km) ,K_m代表取样次数,这里指第m篇文档抽取topic的总数,也就是实验的次数,n→m 代表每个topic出现的频率
n→m=(n(1)m,n(2)m,…,n(k)m,…,n(K)m)
经过抽样之后呢,θ→m 的分布就发生了变化,变成了后验分布p(θ→m|n→m)=Dir(θ→m|n→m+α→)
综上则有Dir(θ→m|α→)+Mult(n→m|θ→m,Km)=Dir(θ→m|n→m+α→) - 处理第二个物理过程时,我们需要将
β→→φ→k→ω→m,n|k=zm,n 转换为β→→φ→k→ω→k (具体过程参考LDA数学八卦)。我们应该这样看待这个物理过程,把语料库按topics进行分组,然后为每个topic抽取Vk 个词汇我们认为
β→→φ→k→ω→k 表示生成第k个topic的所有单词,并且β→→φ→k 对应Dirichlet分布,φ→k→ω→k 对应Multinomial分布
φ→k 是贝叶斯派所假设的变量,表示topic-doc骰子每个面出现的概率,一共存在V个面。把φ→k 看成一个骰子,重复投掷Vk 次。φ→k 就是第k个topic的词分布
φ→k=(φ(1)k,φ(2)k,…,φ(v)k,…,φ(V)k)
其分布为p(φ→k|β→)=Dir(φ→k|β→) .β→ 只是一个先验参数。
而经过抽样,这个抽样正好符合多项分布,即p(n→k)=Mult(n→k|φ→k,Vk) ,Vk 代表的是第k个topic抽取单词的个数,也是实验的次数,n→k 代表每个单词出现的频率。
n→k=(n(1)k,n(2)k,…,n(v)k,…,n(V)k)
综上则有Dir(φ→k|β→)+Mult(n→k|φ→k,Vk)=Dir(φ→k|n→k+β→)
V代表取样次数,这里特指语料库词汇的总数
n→k=(n(1)k,n(2)k,…,n(t)k,…,n(V)k) 其中n(t)k 表示在V词取样中的词word=t的个数。
LDA公式推导
到这里,我们的需要的材料基本就足够了。
- 看到这么多公式请不要害怕,我们将其一一分解就简单了很多
- 首先(5)~(8)属于计算问题,只要将其满足的分布带入公式即可,其余就剩下计算部分了。
按多项式分布概率计算公式来说
Mult(nm−→|θm−→,Km)=(Kmnm−→)∏Ki=1mθimnim ,但是(Kmnm−→) 在词袋模型中并没有任何意义,因为topics之间是相互独立,并无顺序可言。故
Mult(nm−→|θm−→,Km)=∏i=1Kmθimnim
表示在第m篇文档中,topics的概率分布为多项分布
Dir(θm−→|α→)=1Δ(α→)∏Kmi=1θimαi−1 ,其中Δ(α→)=∫∏i=1Kmφimαi−1dφm−→
同理
Mult(nk−→|φk−→,Vk)=∏i=1Vkφikβi−1
表示在k个topic中,words的概率分布为多项分布,words之间也没有顺序可言。
Dir(φk−→|β→)=1Δ(β→)∏Vmi=1nikβi−1 ,其中
Δ(β→)=∫∏i=1Vkθimβi−1dθm→ 接下来是(1)~(4)部分
我认为从公式(2)推导到(3)时候
p(ωk−→|zk→,β→)→p(ωk−→|zk→,β→)
有人可能会问zk→ 去哪了?它是怎么消失的呢?这里LDA数学八卦里面具体解释原因,个人猜想是因为这个时候不需要zk→ ,因为在将β→→φ→k→ω→m,n|k=zm,n 转换为β→→φ→k→ω→k 的时候,我们就考虑文档,只考虑在每个topic中词汇的分布,那么zk→ 也就是失去了其概率意义,故而此处省略不计。
LDA总结
至此我们得到了LDA模型:(好干净的公式,不是吗?)
Gibbs Sampling
这里我不介绍Gibbs Sampling的原理,详细请参考LDA数学八卦。
- 我们要明确的是Gibbs Sampling的真正采样的分布是
p(z→|ω→) - 根据Gibbs Sampling算法的要求,我们要求得任一个坐标轴i对应的条件分布
p(zi=k|z→¬i,ω→) 。假设已经观测到的词ωi=t ,则由贝叶斯法则,我们很容易得到(别问我,我也不知道怎么容易得到的,)p(zi=k|z→¬i,ω→)∝p(zi=k,ωi=t|z→¬i,ω→¬i)
上述公式的推算会涉及到两个Dirichlet-Multinomial共轭结构α→→θm−→→zm−→ β→→φk−→→ωk−→
所以θm−→,φk−→ 的后验分布都是Dirichlet分布,即p(θm−→|z¬i−→,ω¬i−→−)=Dir(nm,¬i−→−−+α→) p(φk−→|z¬i−→,ω¬i−→)=Dir(nk,¬i−→−+β→)
Gibbs Sampling 公式推算
Dirichlet参数估计公式,详见通俗理解LDA
最终我们得到了LDA模型的Gibbs Sampling公式:
好了,文章到此结束了,LDA学的不是很扎实,文章表述可能也有不清楚的地方,哪里有不正之处,还请赐教。这是我的邮箱 hzsong@outlook.com
- LDA主题模型和Gibbs Sampling 学习整理
- LDA主题模型简介-&&-浅谈gibbs sampling(LDA实验)
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- Gibbs Sampling实现LDA
- Lda gibbs sampling --- python
- Gibbs sampling -- batch LDA
- 概率语言模型及其变形系列-LDA及Gibbs Sampling
- LDA Gibbs Sampling公式推导
- 《Map中HashMap与TreeMap的排序以及四种遍历方式》
- Android_ListView_有Header或Footer时onItemClick里的position的问题
- 浅谈MyBatis 之 集成SpringMVC(六)
- webpack 配置项选项详解
- html5 and css
- LDA主题模型和Gibbs Sampling 学习整理
- Flume与Kafka整合
- 优化M有School 第三章
- 访问者模式
- Linux下使用NMON监控、分析系统性能
- SQL高级 第八章 酒店管理系统
- 两道Javascript-前端面试题
- Maven仓库详解
- 蓝桥杯 摆动序列(df