

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

# 隱含狄利克雷分布 (LDA) 演算法
<a name="lda"></a>

Amazon SageMaker AI 隱含狄利克雷分布 (LDA) 演算法是一種無監督學習演算法，嘗試將一組觀察項目描述為不同類別的混合組成。LDA 最常用來在語料庫中，探索文件共用的使用者指定數量主題。此處的每個觀察項都是文件、特徵是每個字詞的出現 (或出現次數)，而類別是主題。因為此種方法是無監督，一開始並未指定主題，而且不保證符合人類自然地將文件分類的方式。此方法會根據每個文件中所出現字詞的概率分佈來學習主題。每個文件會輪流描述為混合的主題。

具備類似混合主題的兩份文件，其確切內容不會相同。但整體而言，相較於取自不同混合主題的文件，您會期望這些文件更頻繁使用共用的字詞子集。這可讓 LDA 探索這些字組，並藉以形成主題。舉個非常簡單的例子，如果有一組文件只出現這些字詞：*吃東西*、*睡覺*、*玩耍*、*喵喵喵*和*汪汪叫*，則 LDA 可能會產生類似下列的主題：


| **主題** | *吃東西* | *睡覺*  | *玩耍* | *喵喵喵* | *汪汪叫* | 
| --- | --- | --- | --- | --- | --- | 
| 主題 1  | 0.1  | 0.3  | 0.2  | 0.4  | 0.0  | 
| 主題 2  | 0.2  | 0.1 | 0.4  | 0.0  | 0.3  | 

您可以推論，更有可能歸入主題 1 的是關於貓的文件 (貓更可能*喵喵喵*和*睡覺*)，而歸入主題 2 的文件是關於狗的文件 (狗喜歡*玩耍*和*汪汪叫*)。即使在所有的文字中從未出現過貓和狗的字詞，也可以找出這些主題。

**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 et al., 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`，資料必須密集且維度等於*記錄數 \* 詞彙大小*。使用以 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)。如需如何建立並存取 Jupyter 筆記本執行個體以用來執行 SageMaker AI 中範例的指示，請參閱[Amazon SageMaker 筆記本執行個體](nbi.md)。在建立並開啟筆記本執行個體後，請選取 **SageMaker AI 範例**索引標籤以查看所有 SageMaker AI 範例的清單。使用 NTM 演算法模組化範例筆記本的主題位於 **Amazon 演算法簡介**一節。若要開啟筆記本，請按一下其**使用** 標籤，然後選取**建立複本**。