本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
潜在狄利克雷分配 (LDA) 算法
Amazon L SageMaker atent Dirichlet 分配 (LDA) 算法是一种无监督学习算法,它试图将一组观察结果描述为不同类别的混合物。LDA 最常用于发现通过文本语料库中的文档共享的用户指定数量的主题。这里,每个观察都是一个文档,特征是每个单词的存在 (或出现次数计数),类别是主题。由于该方法是自主的,因此未预先指定主题,并且不能保证与人对文档进行自然分类的方式一致。以每个文档中单词的出现概率形式来学习主题。每个文档进而被描述为主题的混合。
具有类似主题混合的两个文档的确切内容将不相同。但总的来说,您希望这些文档更频繁地使用一个共享的单词子集,而不是与来自不同主题混合的文档进行比较。这将允许 LDA 发现这些单词组并使用它们来形成主题。举一个极其简单的例子,给定一组文档,其中出现的唯一单词是:eat、sleep、play、meow 和 bark,LDA 可能会生成类似下面内容的主题:
主题 |
eat | sleep | play | meow | bark |
---|---|---|---|---|---|
主题 1 | 0.1 | 0.3 | 0.2 | 0.4 | 0.0 |
主题 2 | 0.2 | 0.1 | 0.4 | 0.0 | 0.3 |
您可以推断出,更有可能归入主题 1 的文档与猫有关 (猫更有可能与 meow 和 sleep 相关),归入主题 2 的文档与狗有关 (play 和 bark 更适合描述狗)。即便单词狗和猫从未在任何文本中出现,也可以找到这些主题。
主题
在潜在狄利克雷分配 (LDA) 和神经主题模型 (NTM) 之间进行选择
主题模型通常用于从语料库中生成主题,这些主题:(1) 连贯地封装语义意义;(2) 很好地描述文档。因此,主题模型旨在尽量减少困惑并最大限度地提高主题连贯性。
困惑度是一种内在的语言建模评估指标,用于衡量测试数据中每个单词几何平均数可能性的倒数。困惑度得分越低,表明泛化性能越好。研究表明,对每个单词计算的可能性往往与人类判断不一致,可能完全不相关,因此引入了主题连贯性。从模型中推断的每个主题都由单词组成,主题连贯性计算为模型中该特定主题的前 N 个词。它通常被定义为该主题中单词的成对词相似度分数的平均值或中位数,例如点间互信息 (PMI)。良好的模型可以生成具有高主题连贯性分数的连贯主题。
虽然此算法的目标是训练一种模型,能够最大限度地减少困惑并最大限度地提高主题连贯性,但 LDA 和 NTM 往往存在权衡。Amazon、Dinget 等(2018 年)的最新研究表明,NTM 有望实现高主题连贯性,但是使用坍陷 Gibbs 采样训练的 LDA 有更好的困惑度。在困惑度和主题连贯性之间需要进行权衡。从硬件和计算能力的实用性角度来看, SageMaker NTM 硬件比 LDA 更灵活,并且可以更好地扩展,因为 NTM 可以在 CPU 和 GPU 上运行,并且可以在多个 GPU 实例上并行运行,而 LDA 仅支持单实例 CPU 训练。
LDA 算法的输入/输出接口
LDA 预期在训练渠道上提供数据,并 (可选) 支持一个测试渠道,该渠道由最终模型进行评分。LDA 支持 recordIO-wrapped-protobuf
(密集和稀疏) 和 CSV
文件格式。对于 CSV
,数据必须是密集的,并且维度等于记录数 * 词汇表大小。使用 recordIO 包装的 protobuf 时,LDA 可以在文件或管道模式下训练,但仅在文件模式下支持 CSV
格式。
对于推理,支持 text/csv
、application/json
和 application/x-recordio-protobuf
内容类型。也可以为 application/json
和 application/x-recordio-protobuf
传递稀疏数据。LDA 推理返回 application/json
或 application/x-recordio-protobuf
预测,其中包括每个观察的 topic_mixture
向量。
有关训练和推理格式的更多详细信息,请参阅LDA 示例笔记本。
LDA 算法的 EC2 实例建议
LDA 当前仅支持单实例 CPU 训练。建议使用 CPU 实例进行托管/推理。
LDA 示例笔记本
有关演示如何在数据集上训练 SageMaker Latent Dirichlet 分配算法,以及如何部署经过训练的模型以对输入文档中的主题混合进行推断的示例笔记本,请参阅 LDA 简介。 SageMaker