讲透 LDA(一)
LDA系列前言
分布相关知识
Gamma 函数
Multinomial 分布
Dirichlet 分布
LDA 介绍
初识 LDA ---- 理性再识
LDA ---- 感性
LDA 的优化目标是什么文末唠嗑
001
LDA系列前言
你会从本系列学到的东西:
- LDA 为什么是这样做参数学习
- 尽量无痛理解 LDA 的数学原理 (大家都脑仁疼的东西,小编也是头皮都抓破了)
- LDA 的知识体系
为了避免不适,先介绍 LDA 中会用到的一些分布知识。
Gamma 函数
高数课本中 Gamma 函数定义如下: 两个重要性质: 上面适用于任意实数(可以通过分布积分证明),下面适用于正整数。 根据 Gamma 函数,我们继续介绍另外一个函数 ---- Digamma 函数,以后需要用到,它定义如下 Gamma 函数是一个非常有魅力的函数,关于对 Gamma 函数的美学和历史,「LDA 数学八卦」这篇著名的文章中介绍得很详细,这里不复述。Multinomial 分布
多项式分布的定义如下: 一个具有 k 种结果的试验,进行 n 次得到向量 x = [x1, x2, .., xk] 这个结果的概率,其中 xk 代表出现第 k 种结果的次数。注意多项式分布的抽样结果是一个 k 维向量。Dirichlet 分布
狄利克雷分布定义如下: 注意这里不要求的所有的 αi 加和为 0,p(x|α) 表示由 Dirichlet 分布抽样得到向量 x 的概率。 由于 x 的每一维求和为 1,其实 x 可以表示为一个超平面。比如假设 x=[x,y,z] 为三维,它其实是三维空间中的一个曲面 1 = x+y+z。所有可能的 x 的取值分布在图中黄色的单纯形中。 根据不同的 Dirichlet 参数 α = [x, y, z],单纯形中的点 x 被抽样的概率不同。下面以不同的 α 来看看 x 的概率分布,颜色越亮,该点被取样的概率越高。- 当 α = [1, 1, 1] 时,单纯形上任意一点的概率都相同。
- 当 α = [2, 2, 2] 时,单纯形中心点的概率最高,越往顶点,概率越小。
- α = [0.9, 0.9, 0.9] 时,单纯形中心点的概率最低,越往顶点,概率越高
- α = [2, 2, 1] 时,单纯形靠近 x + y = 1 边的中心点概率最大,越靠近该点,概率越大。
LDA 由David M. Blei 大佬于 2003 年提出,此后衍生出了一系列的改进,sLDA, lLDA, ssLDA, Guided LDA等等,目前仍然是一个很热的研究方向。LDA 是概率图模型中的有向图模型,此前我们讲过的「贝叶斯网络」就是有向的概率图,这个系列也是同一类。LDA 的应用非常广泛,文档分类,推荐系统,图片 annotation,文本挖掘等都可以用到。
初识 LDA ---- 理性认识
下面是大家熟悉的一张 LDA 模型的图片(大家可能在互联网上能找到多个版本 ,但系列以这个版本为主),图中已经给出了一部分解释,这里补充一些知识: 1. 关于盘子图的理解:- 圆圈代表随机变量(可以是多维变量)、
- 矩形代表盘子,盘子右下角有大写字母,代表盘子内部这样的结构出现的次数,比如拿里面那个盘子举例,若 N=3,那么
再识 LDA ---- 感性认识
LDA 思想 ---- 模仿人类写作的过程 1. 主题-词汇分布抽样 先从以 η 为参数的 Dirichlet 分布中取样 K (K=6)个主题。每个主题的词汇分布是一个以 βk(维度=V)为参数多项式分布。每个维度上的值(图中柱状图的每条柱子)为出现各个词汇的概率。 2. 文档-主题分布抽样 从以 α 为参数的 Dirichlet 分布,为每个一个文档 d (这里以生成 3 个文档为例)抽取一个文档主题分布。每个文档的主题分布以 θd(维度=K)为参数多项式分布。每个维度上的值为各个主题在文档 d 中占的比重。 3. 为文档生成每个单词 把一个文档 d 看做一个词袋,每次生成新单词时,先从 Multinomail(θd) 抽样一次得到一个 K 维向量 Zd,n(比如[0,0,1,0,0,0] ),此时这个新单词的主题就是「主题 3」hockey。然后从主题-词汇分布中选出「主题 3」的词汇分布 Multinomial(β3),抽样一次得到一个 V 维向量(比如 [0,1,0,0,…] ),那么这个新单词就是词典中的第 2 个单词 season. 下面是 3 篇文档的内容生成结果。 LDA 数学八卦中把这个过程完整地概述为上帝玩骰子游戏 1. 黄色箭头:选骰子 2. 蓝色箭头:掷骰子 004 LDA的优化目标是什么 在给定训练数据 Corpus=[w1, w2,…, wD] (wd 是一篇文档)的情况下,任何无监督模型都希望尽量拟合数据。对于概率图模型来说就是使得产生数据的概率更大, 考虑一个文档 w,其中 α 和 η 已知(一般初始为 α = [1/K, 1/K, …, 1/K], η = [1/V, 1/V, …, 1/V],那么我们希望 LDA 的学习问题是一个包含隐变量的优化问题,根据经验 EM 算法肯定是要用了。先简单透露下,EM算法的使用,在 E-step 先固定模型的参数,求出最优的隐变量的后验分布;然后在 M-step 时,固定隐变量的后验分布,求出最优的模型参数。由此交替优化,一直到收敛为止。很像坐标上升法的做法。 对于这些隐变量 θ,β 和 Z 的参数值,它们的后验概率表达式为 似乎可以求,但是一看到分母的表达式,就头疼,对隐变量 θ,β 和 Z 做积分,这个运算量可不是一般的大,准确来说这里的隐变量应该是 3 组隐变量。所以直接计算非常耗时,而且还不好求,我没有试过,当是看徐亦达老师推导时记得是几乎求不出来一个好的表达式来。 那么如何计算这个后验概率呢?这就是我们后验要介绍的两个方法,一个基于抽样方法 ---- Gibbis Sampling;另外一个使用自定义分布近似后验概率 ---- Variational Inference,这两个方法都是为了获取隐变量的后验概率。文末唠嗑
记得上一篇文章大概是两周前了,starz 这段时间要去忙着准备实习,没有时间写文章了。其实我很能理解,因为写这些文章完全是没有回报的,只是为了跟大家分享和还有监督自己,如果这样去理解的话其实是痛苦的。事不论大小,贵在坚持。记得上次发完一篇文章,有很多的小伙伴点赞阅读,自己感觉非常开心,大家的支持真的是我们写文章的动力。我们在写文章时就有一个共同的意识,一定不为了蹭热度博眼球去写文章,而是发自内心的想去做好这样一件事,希望不辜负大家花在阅读上的时间。我们写文章其实也挺花时间的,大家阅读后觉得对自己有帮助的话,请给我们点一个「在看」,就当做对我们的鼓励吧。还有就是欢迎大家互相学习交流,交流有时候比闭门造车好很多,有时候智慧的火花一不注意就诞生了。一句「勿忘来时路,不负少年心」送给所有在路上为初心死磕的人,下期见。 Reference- http://limoncc.com/机器学习/2017-03-08-狄利克雷-多项式模型/
- LDA 数学八卦
- Blei D M, Ng A Y, Jordan M I. Latent dirichlet allocation[J]. Journal of machine Learning research, 2003, 3(Jan): 993-1022.
你“在看”我吗?