

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 潜在狄利克雷分配 (LDA) 算法
<a name="lda"></a>

Amazon SageMaker AI 潜在狄利克雷分配（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* 更适合描述狗)。即便单词狗和猫从未在任何文本中出现，也可以找到这些主题。

**Topics**
+ [在潜在狄利克雷分配 (LDA) 和神经主题模型 (NTM) 之间进行选择](#lda-or-ntm)
+ [LDA 算法的输入/输出接口](#lda-inputoutput)
+ [LDA 算法的 EC2 实例建议](#lda-instances)
+ [LDA 示例笔记本](#LDA-sample-notebooks)
+ [LDA 工作原理](lda-how-it-works.md)
+ [LDA 超参数](lda_hyperparameters.md)
+ [优化 LDA 模型](lda-tuning.md)

## 在潜在狄利克雷分配 (LDA) 和神经主题模型 (NTM) 之间进行选择
<a name="lda-or-ntm"></a>

主题模型通常用于从语料库中生成主题，这些主题：(1) 连贯地封装语义意义；(2) 很好地描述文档。因此，主题模型旨在尽量减少困惑并最大限度地提高主题连贯性。

困惑度是一种内在的语言建模评估指标，用于衡量测试数据中每个单词几何平均数可能性的倒数。困惑度得分越低，表明泛化性能越好。研究表明，对每个单词计算的可能性往往与人类判断不一致，可能完全不相关，因此引入了主题连贯性。从模型中推断的每个主题都由单词组成，主题连贯性计算为模型中该特定主题的前 N 个词。它通常被定义为该主题中单词的成对词相似度分数的平均值或中位数，例如点间互信息 (PMI)。良好的模型可以生成具有高主题连贯性分数的连贯主题。

虽然此算法的目标是训练一种模型，能够最大限度地减少困惑并最大限度地提高主题连贯性，但 LDA 和 NTM 往往存在权衡。Amazon、Dinget 等（2018 年）的最新研究表明，NTM 有望实现高主题连贯性，但是使用坍陷 Gibbs 采样训练的 LDA 有更好的困惑度。在困惑度和主题连贯性之间需要进行权衡。从硬件和计算能力的实用性角度来看，SageMaker NTM 的硬件使用比 LDA 更灵活，并且可以更好地扩展，因为 NTM 可以在 CPU 和 GPU 上运行，并且可以使用多个 GPU 实例并行处理，而 LDA 只支持单实例 CPU 训练。

**Topics**
+ [在潜在狄利克雷分配 (LDA) 和神经主题模型 (NTM) 之间进行选择](#lda-or-ntm)
+ [LDA 算法的输入/输出接口](#lda-inputoutput)
+ [LDA 算法的 EC2 实例建议](#lda-instances)
+ [LDA 示例笔记本](#LDA-sample-notebooks)
+ [LDA 工作原理](lda-how-it-works.md)
+ [LDA 超参数](lda_hyperparameters.md)
+ [优化 LDA 模型](lda-tuning.md)

## LDA 算法的输入/输出接口
<a name="lda-inputoutput"></a>

LDA 预期在训练渠道上提供数据，并 (可选) 支持一个测试渠道，该渠道由最终模型进行评分。LDA 支持 `recordIO-wrapped-protobuf` (密集和稀疏) 和 `CSV` 文件格式。对于 `CSV`，数据必须是密集的，并且维度等于*记录数 \$1 词汇表大小*。使用 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-sample-notebooks)。

## LDA 算法的 EC2 实例建议
<a name="lda-instances"></a>

LDA 当前仅支持单实例 CPU 训练。建议使用 CPU 实例进行托管/推理。

## LDA 示例笔记本
<a name="LDA-sample-notebooks"></a>

该示例笔记本介绍了如何在数据集上训练 SageMaker AI 潜在狄利克雷分配算法，然后如何部署训练后的模型以对输入文档中的混合主题进行推理。有关该示例笔记本的信息，请参阅 [SageMaker AI LDA 简介](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/lda_topic_modeling/LDA-Introduction.html)。有关如何创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter Notebook 实例的说明，请参阅 [Amazon SageMaker 笔记本实例](nbi.md)。创建笔记本实例并将其打开后，选择 **SageMaker AI 示例**选项卡以查看所有 SageMaker AI 示例的列表。使用 NTM 算法的主题建模示例笔记本位于 **Amazon 算法简介**部分中。要打开笔记本，请单击**使用** 选项卡，然后选择**创建副本**。