

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

# 神经主题模型 (NTM) 算法
<a name="ntm"></a>

Amazon SageMaker AI NTM 是一种无监督学习算法，用于将文档语料库组织成包含基于统计分布的单词分组*的主题*。例如，如果文档包含诸如“自行车”、“汽车”、“火车”、“里程”和“速度”之类的频繁出现的单词，则文档可能共享关于“运输”的主题。主题建模可用于基于检测到的主题对文档进行分类或汇总，或者基于主题相似性检索信息或推荐内容。来自 NTM 学习的文档的主题被表征为*潜在表示*，因为主题是从语料库中观察到的单词分布推断出来的。主题的语义通常通过检查它们包含的最高排名词来推断。因为该方法是自主型的，所以只有主题的数量，而不是主题本身是预设的。此外，这些主题不能保证与人类自然地对文档进行分类的方式一致。

主题建模提供了一种根据所学主题可视化大型文档语料库内容的方法。与每个主题相关的文档可以根据其软主题标签进行索引或搜索。文档的潜在表示还可用于在主题空间中查找类似的文档。您还可以将主题模型学习的文档的潜在表示用于另一受监督算法 (如文档分类器) 的输入。因为预计文档的潜在表示会捕获底层文档的语义，所以部分基于这些表示的算法预计比仅基于词汇特征的算法表现更好。

尽管您可以同时使用 Amazon SageMaker AI NTM 和 LDA 算法进行主题建模，但它们是不同的算法，可以预期在相同的输入数据上产生不同的结果。

有关 NTM 背后的数学的更多信息，请参阅[文本处理的神经变分推理](https://arxiv.org/pdf/1511.06038.pdf)。

**Topics**
+ [Input/Output NTM 算法接口](#NTM-inputoutput)
+ [NTM 算法的 EC2 实例建议](#NTM-instances)
+ [NTM 示例笔记本](#NTM-sample-notebooks)
+ [NTM 超参数](ntm_hyperparameters.md)
+ [优化 NTM 模型](ntm-tuning.md)
+ [NTM 响应格式](ntm-in-formats.md)

## Input/Output NTM 算法接口
<a name="NTM-inputoutput"></a>

Amazon SageMaker AI 神经主题模型支持四个数据通道：训练、验证、测试和辅助通道。验证、测试和辅助数据通道是可选的。如果您指定这些可选通道中的任何一个，则将这些通道的 `S3DataDistributionType` 参数值设置为 `FullyReplicated`。如果您提供验证数据，则会在每个纪元记录此数据的损失，一旦检测到验证损失未改善，模型就会停止训练。如果您不提供验证数据，算法将根据训练数据提早停止，但这可能会降低效率。如果您提供测试数据，则该算法将从最终模型中报告测试损失。

NTM 的训练、验证和测试数据通道同时支持 `recordIO-wrapped-protobuf`（密集和稀疏）和 `CSV` 文件格式。如果是 `CSV` 格式，对于不存在于相应文档中的单词，必须以零计数密集地表示每行，并且每行必须具有等于 (记录数) \* (词汇表大小) 的维度。您可以使用文件模式或管道模式，针对格式为 `recordIO-wrapped-protobuf` 或 `CSV` 的数据训练模型。辅助通道用于提供包含词汇表的文本文件。通过提供词汇表文件，用户可以查看日志中输出的每个主题的顶级单词，而不是整数 ID。使用词汇表文件，还允许 NTM 计算 Word 嵌入主题一致性 (WETC) 分数，这是一个在日志中显示的新指标，可以有效地捕获每个主题中顶级单词之间的相似性。辅助通道的 `ContentType` 是 `text/plain`，每一行包含一个单词，顺序对应于数据中提供的整数 ID。词汇文件必须命名`vocab.txt`，并且目前仅支持 UTF-8 编码。

对于推理，支持 `text/csv`、`application/json`、`application/jsonlines` 和 `application/x-recordio-protobuf` 内容类型。也可以为 `application/json` 和 `application/x-recordio-protobuf` 传递稀疏数据。NTM 推理返回 `application/json` 或 `application/x-recordio-protobuf` *预测*，其中包括每个观察的 `topic_weights` 向量。

有关使用辅助频道和WETC分数的更多详细信息，请参阅[博客文章](https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-neural-topic-model-now-supports-auxiliary-vocabulary-channel-new-topic-evaluation-metrics-and-training-subsampling/)。有关如何计算 WETC 分数的更多信息，请参阅[Coherence-Aware 神经主题建模](https://arxiv.org/pdf/1809.02687.pdf)。我们在亚马逊 SageMaker 人工智能神经主题模型中使用了本论文中描述的配对 WETC。

有关输入和输出文件格式的更多信息，请参阅[NTM 响应格式](ntm-in-formats.md)（对于推理）和[NTM 示例笔记本](#NTM-sample-notebooks)。

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

NTM 训练支持 GPU 和 CPU 实例类型。我们推荐 GPU 实例，但是对于某些工作负载，CPU 实例可能会使训练成本降低。CPU 实例应足以进行推理。NTM 训练支持使用 P2、P3、G4dn 和 G5 GPU 实例系列进行训练和推理。

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

有关使用 SageMaker AI NTM 算法从已知主题分布的合成数据源中发现文档中的主题的示例笔记本，请参阅 NTM [基本功能简介](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/ntm_synthetic/ntm_synthetic.html)。有关如何创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter 笔记本实例的说明，请参阅。[Amazon SageMaker 笔记本实例](nbi.md)创建并打开笔记本实例后，选择 “**SageMaker AI 示例**” 选项卡以查看所有 SageMaker AI 示例的列表。使用 NTM 算法的主题建模示例笔记本位于 **Amazon 算法简介**部分中。要打开笔记本，请单击**使用** 选项卡，然后选择**创建副本**。