隐狄利克雷分配 LDA 是什么?从文档集合中自动发现主题
隐狄利克雷分配(Latent Dirichlet Allocation,LDA),也常译为潜在狄利克雷分配,是一种用来从大量文档中自动发现“主题”的概率模型,由 David Blei、吴恩达和 Michael Jordan 在 2003 年提出。它是最有影响力的主题模型。需要注意,它的英文缩写与线性判别分析(Linear Discriminant Analysis)相同,但两者是完全不同的方法。
它对文档是怎么假设的
隐狄利克雷分配把每篇文档看作是由若干个主题混合而成的,而每个主题又是一组词语的概率分布。比如一篇关于“人工智能在医疗中的应用”的文章,可能 60% 是“人工智能”主题、40% 是“医疗”主题;“人工智能”主题中,“模型”“算法”“数据”“训练”这些词出现的概率较高;“医疗”主题中,“病人”“医生”“诊断”“治疗”出现的概率较高。
它用一个“生成故事”来描述一篇文档是如何写出来的:首先,为这篇文档随机地确定一个主题比例,比如 60% 人工智能、40% 医疗;然后,对于文档中的每一个词位置,先按照这个比例随机选择一个主题,再从这个主题的词语分布中随机选择一个词。当然,真实的文章不是这样写出来的,这只是一个简化的假设,但它能有效地捕捉词语共同出现的规律。名字中的“狄利克雷”指的是狄利克雷分布,它被用作文档的主题比例和主题的词语分布的先验,控制这些分布有多“集中”,比如一篇文档是倾向于只讨论少数几个主题,还是分散在很多主题上。“隐”指的是主题是看不见的,需要从文档中推断出来。
如何从文档中学出主题
我们手中只有文档本身,也就是观察到的词语;而每个词属于哪个主题、每篇文档的主题比例、每个主题的词语分布,都是未知的隐藏变量。学习的任务就是把这个生成过程“倒过来”,根据观察到的文档推断出这些隐藏的变量。由于精确计算非常困难,通常使用近似的推断方法:Blei 等人在原论文中使用了变分推断;Thomas Griffiths 和 Mark Steyvers 在 2004 年提出了基于吉布斯采样的方法,实现起来更加简单,被广泛采用。训练完成后,每个主题会表现为一组高概率的词语,人们可以根据这些词语为主题起一个名字,比如看到“比赛、球队、进球、联赛”就知道这是体育主题。需要事先指定主题的数量,通常通过困惑度、主题一致性等指标,结合人工判断来选择。
应用
隐狄利克雷分配被广泛用于:文本挖掘,从大量的新闻、论文、社交媒体帖子中发现主要的话题及其随时间的变化;文档的聚类、分类和检索,用主题比例作为文档的低维表示;推荐系统,根据用户阅读内容的主题推荐相似的文章;数字人文研究,分析历史文献、文学作品中的主题。它的思想也被推广到了文本之外,比如在生物信息学中分析基因数据,在计算机视觉中把图像看作“视觉词”组成的文档。
局限与发展
隐狄利克雷分配使用词袋模型,忽略了词语的顺序和语法;学到的主题有时难以解释;对短文本,比如微博和评论,效果较差,因为每篇文档的词太少。后来出现了很多扩展,比如考虑主题之间相关性的相关主题模型、随时间变化的动态主题模型。在深度学习时代,基于预训练语言模型的嵌入向量再进行聚类的方法,比如 BERTopic,在很多场景下效果更好。如今,大语言模型也可以直接阅读文本并总结主题。