当前位置:   article > 正文

LDA主干线_lda难吗

lda难吗

LDA算是NLP中相对比较难的一个,涉及到诸多统计方面的理论。虽然从开始准备到这篇文章发布,断断续续准备了近一个月,还是只能把其中主干拎出来,很多细节还需要慢慢沉淀,今天先把这篇粗糙的文章发出来,以示对过去一个月零碎时间的交代。

LDA(Latent Dirichlet Allocation)是主题模型的一种,它基于词袋模型BOW(Bag of words), 与BOW相对的是n-gram模型,前者不考虑词的先后顺序,而后者考虑。因此,我们最终得到的模型——topic-word共现矩阵没有序列的信息。

同其他主题模型一样,LDA模型描述的也是“文章-主题-词”之间的关系。LDA算法复杂的原因之一,则是在算法中用到多个分布和采样收敛。其算法如下:

  1. 根据先验概率p,选择到一个文章d的概率
  2. 在文章d的前提下,生成主题
    (1)根据Dirichlet分布α,生成文章d的主题分词分布θ(θ为多项式分布)
    (2)在主题分布θ的前提下,Gibbs采样得到主题词z
  3. 在主题词z的前提下,生成词汇
    (1)根据Dirichlet分布β,生成主题词z的词汇分布γ(γ为多项式分布)
    (2)在词汇分布γ的前提下,Gibbs采样得到词汇w

写到这里,我们就需要解释两个问题:

  1. Dirichlet分布和多项式分布的关联?
    Dirichlet分布是先验分布,多项式分布则是其似然共轭分布。而后验分布则为加入多样式分布的Dirichlet分布,因为共轭特性可以使得先验分布和后验分布的形式相同。
    先验和后验的关系,可参考贝叶斯公式:
    在这里插入图片描述
  2. Gibbs采样的过程如下
    在这里插入图片描述

看完算法之后,我们的疑惑点又来了,在实际项目中,LDA首先要解决的问题是:如何生成主题模型?然而以上算法并不能直接获取主题模型。其实,通过以上算法,我们不难得到其目标函数,有了目标函数就可以像其他算法一样进行迭代计算了(这里没有列出目标函数,笔者并不能自己推导出公式,所以想看目标函数的可以去网上查下即可)。

那么LDA的训练过程如下:

  1. 设置主题个数k,这个就是经验值了
  2. 遍历语料库中每个文档d中的每个词w,为w随机选择一个topic编号z
  3. 重新遍历每个词w,利用Gibbs采样,对topic编号进行更新
  4. 重复第2步,直至Gibbs采样收敛
  5. 统计语料库中topic-word的共现频率矩阵,这就是LDA的模型

在LDA中,主题的数目算是一个超参,需要在训练模型时,事先设置主题数。这个超参往往需要对业务和数据有一定的了解,或者针对业务特定的一些需要,设置一个值。主题的取值范围可以从1到语料库的所有词总数(无重复词),所以无法得到主题数目的一个最优解,在训练过程中需要手动调参,优化主题数目,进而优化模型效果。

更多内容,欢迎关注“机器爱学习”公众号~

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/195621?site
推荐阅读
相关标签
  

闽ICP备14008679号