嗯哼是个nlper酱--LDA学习笔记
来源:互联网 发布:指南针炒股软件好用吗 编辑:程序博客网 时间:2024/05/01 10:09
非常同意学东西,先学复杂,然后逐步简化的方式。
LDA模型学习系统的学习有一些时间了,闭上眼睛细想一下,似乎能够理解为什么有前辈们说LDA是一个比较简单的学习模型了。up一个学习笔记,记录一下自己在学习完了之后,对LDA各个步骤涉及的数学基础。
一、LDA算法主线
如果想要快速入门+70%理解的话,个人感觉看这一节就好了。本节不会像其他博客那样,从unigram、plsa巴拉巴拉一长串“前菜”开始,显得就不够通俗了,并且还没看到真正LDA相关的知识,耐心就磨完了。要了,开扯。
1、在LDA、PLSA这些topic model中,注意几点假设:
- 独立性假设:语料中的每篇文档、每篇文档中的每个词都是独立的
- 多项式分布和Dirichlet分布:每个词的出现符合多项式分布,多项式分布的参数的先验分布是Dirichlet分布
正是基于上面两个假设,可以看出这些topic model都是基于词袋的,词的顺序什么的对文章并没有影响。
2、文本建模
文章中的词的出现符合多项式分布,那么文档的建模公式为:
(1)
如果,考虑每篇文档的主题分布,根据LDA定义,引入每篇文章主题多项式分布的先验Dirichlet分布(参数为α)、词多项式分布的先验分布(参数为β),则文档的建模公式为:
(2)
式中,前后两个子部分相互独立,可以分别处理:
(3)
公式(3)中,有几点需要注意,以左边的为例:
1)外面要取积分(离散分布的话用累加),表示求生成词的条件概率,要考虑每一个主题先验参数,这个事或的关系,所以在连续随机变量时用积分,离散型随机本用累加和;
2)公式中有一个黑色下划线,很多blog里,都是直接给出了它下面那一步的结果,讲道理,这样很不好,很容易导致歧义。
我们可以试着直接看倒数第二步,两个连乘符号,乍一眼,感觉要乘以K*N次(注意,我没有用V,因为V是词典集数量,已经去重,N表示去重之前的单词数)。我刚开始看的时候,就是这么理解的,但是怎么也想不通。因为如果是要考虑,在每个不同主题下词序列出现的概率,那么第一个关于K的连乘就应该改成累加。但是这样说不过去,因为回归到p(w|z,β)这个概率的初衷,还有联系rickjin在blog中的博客介绍:
其实,这个时候,我们在得到这一堆词的主题向量w的时候,剩下的工作就是去查前面投骰子的时候,对于这堆词w中的每个词w_i都分别指定了哪个主题,然后用一个类似于“查表”的过程得到它的出现概率。所以,根据论文【1】中的描述,有了下划线出的哪个中间公式,说的很清楚啊,{i, zi=k}这个集合,精髓啊,这个时候在得到倒数第二步,就非常直观了对不对!
3)倒数第二部得到倒数最后一步,去掉了积分符号,是因为用到了一个性质:
(4)
我在公式(3)中用括号分别括起来,△(α)、△(β)和积分无关,可以移到积分符号外面,所以就得到最后的等式。
至此,我们就得到了文档(用词向量表示)和主题的完全数据条件概率分布:
(5)
有了这个完全数据条件概率分布,那么,我们就可以借助Gibbs采样算法,来对每个词w_i来更新它的主题(隐含变量,EM算法什么的这个时用起来了,这里介绍吉布斯采样),更新过程公式如下:
(6)
公式(6)中,有几点需要注意:
1)公式出来第一步,可以联想:p(A|BC)=p(ABC)/p(AB),分母中去掉了A就好了;
2)得到①的分母,我们要注意w={wi, w_-i},上面的z也一样
3)得到②,吸取了上面公式(3)在推导过程中的结果,在明确主题 z和文档m的时候,外面的连乘符号需要去掉;
4)得到公式③就是把Dirichlet中的△展开来,△定义如下:
(7)
顺便把Dirichlet分布也给出来了。
5)得到④用到了伽马函数的性质:
6)得到⑤,是因为在④中第二个式子的分母和是一个常数,和主题的条件概率无关,可以不考虑
这个每个词的主题迭代更新过程,用到了马氏链的平稳分布性质(这点很关键,第二节将会重点介绍我在看rickjin的blog时关于这个的一些领悟)。当各词的主题分布平稳之后,我们根据求得到的分布(每篇文档中每个词的主题概率),就可以求得每篇文章的主题分布θ、和主题下的词分布φ:
(8)
可以看出这两个后验分布和对应的先验分布一样,仍然为Dirichlet分布,这也是共轭分布的性质决定的。使用Dirichlet分布的期望计算公式,得到:
(9)
二、Gibbs 采样及马氏链平稳性质
待续…
参考文献:
本博客只是一篇读书笔记性质的,参考了较多其它前辈大牛、相关论文的成果,秉着分享知识的初衷,无意侵权。
- 概率语言模型及其变形系列(2)-LDA及Gibbs Sampling
- LDA-math-LDA 文本建模
- Gregor Heinrich. Parameter estimation for text analysis. Technical report, 2004
- 嗯哼是个nlper酱--LDA学习笔记
- LDA学习笔记
- LDA论文学习笔记
- LDA模型学习笔记
- LDA学习笔记5-LDA模型
- LDA学习笔记1-参数估计
- LDA学习笔记4-MCMC
- LDA入门级学习笔记
- LDA入门级学习笔记
- LDA主题模型学习笔记
- LDA入门级学习笔记
- 【LDA学习笔记】文本生成方式
- LDA学习笔记2-共轭先验
- LDA学习笔记3-抽样算法
- LDA(Latent Dirichlet Allocation)学习笔记
- Linear discriminant analysis (LDA)学习笔记
- LDA学习笔记1——预备
- LDA-Latent Dirichlet Allocation 学习笔记
- Android高仿微信之mvp实现(四)
- nyoj954n!(变形)
- 【Unity Shader】自定义材质面板的小技巧
- xcode清除缓存
- android 隐藏statusbar
- 嗯哼是个nlper酱--LDA学习笔记
- Spring 的 SpEL
- 【趣题】【位运算】找数2(NKOJ 3679)、找数3(NKOJ 3680)
- 大学时期要做的50件事
- Android支付——支付宝支付总结
- 2016"百度之星" - 资格赛(Astar Round1)
- Burp Suite使用详解
- 自定义View之onMeasure()
- 炫酷开源框架 SweetAlertDialog