今天应学弟要求,又回顾了下LDA模型,陡然发现之前弄懂弄通的一些地方竟然开始有些生疏,果然还是得记录总结。
好记性不如烂笔头,于是将LDA模型又从头梳理了一下,有些体会,记录下来
以下尽可能不用代码也不用公式还原LDA模型的思想原貌
LDA全景图
1.LDA解决的问题:
如何自动的从一批文档中,找出文档表达的n个主题思想?
2.LDA的假设:
任何模型都是对现实世界的一种假设,所以想要掌握一个模型,先了解它的假设是什么
LDA模型的假设基础就是:关键词在文档中出现的概率 = 关键词在主题中出现的概率 * 主题在文档中出现的概率
本质上还是贝叶斯统计推断
3.解决问题的思路:
不管是数学公式还是伪代码,本质上都是对解决问题思路的描述,搞学术的容易陷入纯数学的表达,搞工程的容易陷入纯代码的表达,
所以要进一步理解模型,就必须透过公式或代码,理解其解决问题的思路
LDA模型的思路又是什么呢?
3.1. 问题分解:
1.如何找到一篇文档中的主题思想?
2.如何求解所有文档主题思想的个数n?
3.2. 问题分析:
所以,LDA模型实际上是一口气解决了两个问题
对于 问题1,这个好办,我们可以挖掘出频率高有意义的关键词来指代文档的主题;
但这也就意味着一篇文章可能同时会有多个主题
对于 问题2,如果一篇文章只有一个主题,这事就好办了,我们可以用kmeans聚类的方式从1,2,3……n逐个尝试,找到匹配度最高的n
现在我们需要考虑一对多问题
我们就再假设,在这堆文档中主题的数量应该也是服从某种分布的,可能是正态分布,可能是伽马分布,暂时不知道
于是我们同样可以将这些分布逐一尝试,看看哪种分布的匹配度最高?
3.3. 解决方案:
于是解决方案就出来了
第一步 先找出每篇文档的所有主题(用关键词组表示)
第二步 再从分布函数中随机选择一个分布去匹配现有文档的主题数量,算出一个匹配度
第三步 不断尝试新的分布函数,直到匹配度最大为止
4.回到数学:
回到数学上,我们就会发现有很多博主苦口婆心的写了一堆公式,但大家还是看不懂,主要原因就是主次不分,总是过分强调细节
其实整体原理很简单,不是吗?接下来我们再对该模型中使用的关键技术对号入座,细节就不展开了,有兴趣大家可以自行搜索
4.1 对号入座
狄里克雷(Dirichlet)分布 就是对应 3.3 第二步中的分布函数,这个Dirichlet可以通过调参的方式模拟任意分布
Gibbs采样 简单来说,重复的按一定规则从数据中随机选取k个样本的过程就叫Gibbs采样,对应到 3.3 不断尝试新的分布函数,就是需要不断试验,不断采样
变分推断EM 对应到 3.3 第二步中计算匹配度 及 第三步使得匹配度最大
4.2 技术质疑
为什么是狄里克雷分布? 因为这是目前为止数学家发明的最好的分布函数模拟工具
为什么要用Gibbs采样? 因为这是目前为止最科学使用最广泛的采样手段
为什么要用变分推断EM? 因为客观事物不可能完美的服从某种分布,只能做近似推断,而变分法同样是目前最好的近似推断工具
5.总结
所以LDA,顾名思义,也就是挖掘隐含的狄里克雷分布的一个过程
5.1. 优点:
通过非常直观的思维逻辑,解决了看似复杂的文本主题聚类的问题
5.2. 缺点:
非常依赖于数据,数据量如果太小,可能不会太凑效
5.3. 发散:
这种分布推理机器,未来是否可以与神经网络有很好的结合点呢?我们拭目以待