

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 神經主題模型 (NTM) 演算法
<a name="ntm"></a>

Amazon SageMaker AI NTM 是一種無監督學習演算法，用來根據文件主體的統計分布將其組織到包含字詞分組的*主題*。舉例來說，經常出現 “自行車”、“車輛”、“火車”、“里程” 和 “速度” 這類字詞的文件可能會共享 “運輸” 主題。主題模組化可用來根據偵測到的主題分類或摘要文件，或根據主題相似之處擷取資訊或建議內容。來自 NTM 學習的文件主題具有*潛在表達*特徵，因為這些主題是從主體中觀察到的字詞分布來推論。主題的語意通常透過檢查其中包含排序最高的字詞來推論。因為方法無監督，只有主題的數量會預先指定，而非主題本身。此外，主題不保證與人類自然分類文件的方式相同。

就學習主題而言，主題模組化提供一種將大型文件語料庫的內容視覺化的方式。與各主題相關的文件可能被編制索引或根據它們的可變主題標籤來搜尋。文件的潛在表達還可能用於尋找主題空間中的類似文件。您也可以將主題模型學習的文件潛在表達運用於輸入到另一個監督式演算法中，例如文件分類器。由於文件的潛在表達預期會擷取基礎文件的語意，以這些表達為基礎的演算法效果預期會比單獨以辭典功能為基礎的表達更好。

雖然您可以同時使用 Amazon SageMaker AI NTM 和 LDA 演算法執行主題模型化，但是它們都是獨特的演算法且可預期會在相同的輸入資料上產生不同的結果。

如需 NTM 背後的數學原理詳細資訊，請參閱 [Neural Variational Inference for Text Processing](https://arxiv.org/pdf/1511.06038.pdf)。

**Topics**
+ [NTM 演算法的輸入/輸出介面](#NTM-inputoutput)
+ [NTM 演算法的 EC2 執行個體建議事項](#NTM-instances)
+ [NTM 範例筆記本](#NTM-sample-notebooks)
+ [NTM 超參數](ntm_hyperparameters.md)
+ [調校 NTM 模型](ntm-tuning.md)
+ [NTM 回應格式](ntm-in-formats.md)

## NTM 演算法的輸入/輸出介面
<a name="NTM-inputoutput"></a>

Amazon SageMaker AI 神經主題模型支援四種資料管道：訓練、驗證、測試和輔助。驗證、測試和輔助資料通道為選擇性的。如果您指定這些選用通道，請將其 `S3DataDistributionType` 參數值設定為 `FullyReplicated`。如果您提供驗證資料，此資料上的損失會記錄於每個 epoch，而模型會在偵測到驗證損失未改善時停止訓練。如果您不提供驗證資料，演算法會根據訓練資料於初期停止，但是這可能較不具效率。如果您提供測試資料，演算法從最終模型回報測試損失。

NTM 的訓練、驗證和測試資料通道同時支援 `recordIO-wrapped-protobuf` (密集與稀疏) 和 `CSV` 檔案格式。針對 `CSV` 格式，若字詞未顯示於對應文件中，則每個資料列必須以含有零計數的密集方式顯示，且維度等於：(記錄的數量) \* (詞彙的數量)。您可以使用檔案模式或管道模式，以 `recordIO-wrapped-protobuf` 或 `CSV` 格式的資料來訓練模型。輔助通道是用來提供包含詞彙的文字檔案。提供詞彙檔案時，使用者即可查看日誌中所示每個主題最常使用的字詞，而不是其整數 ID。使用詞彙檔案也可讓 NTM 計算 Word Embedding Topic Coherence (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 Neural Topic Modeling](https://arxiv.org/pdf/1809.02687.pdf)。針對 Amazon SageMaker AI 神經主題模型，我們使用此白皮書所述的逐對 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)。如需如何建立並存取 Jupyter 筆記本執行個體以用來執行 SageMaker AI 中範例的指示，請參閱[Amazon SageMaker 筆記本執行個體](nbi.md)。在建立並開啟筆記本執行個體後，請選取 **SageMaker AI 範例**索引標籤以查看所有 SageMaker AI 範例的清單。使用 NTM 演算法模組化範例筆記本的主題位於 **Amazon 演算法簡介**一節。若要開啟筆記本，請按一下其**使用**標籤，然後選取**建立複本**。