

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

# LDA 的運作方式
<a name="lda-how-it-works"></a>

Amazon SageMaker AI LDA 是一種無監督學習演算法，嘗試將一組觀察項目描述為不同類別的混合。這些類別本身就是特徵的概率分佈。LDA 是一種生成概率模型，這代表 LDA 會試著根據潛在變數，來提供輸出與輸入分佈的模型。這和判別模型相反，此種模型會試著學習輸入如何對應到輸出。

您可以將 LDA 用於各種任務，包括從根據購買的產品來將客戶歸類，到音樂的自動和聲分析等。不過，LDA 最常用於文字語料庫中的主題模型建立。觀察項稱為文件。特徵集稱為詞彙。特徵稱為字詞。還有，產生的類別稱為主題。

**注意**  
詞形還原大幅地提高了演算法的效能和準確度。請考慮預先處理所有輸入文字資料。如需詳細資訊，請參閱[詞幹提取和詞形還原](https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html)。

LDA 模型是由 2 種參數定義：
+ α - 對主題概率的先驗估計 (也就是在指定文件內每個主題出現的平均頻率)。
+ β - k 主題的集合，其中每個主題都會獲得文件語料庫中所使用詞彙的概率分佈，也稱為 “主題 - 字詞分佈”。

LDA 是一種 “詞袋” 模型，這代表字詞的順序並不重要。LDA 是一種生成模型，會藉由選擇主題混合 θ ∼ Dirichlet(α)，來逐字詞產生每個文件。

 針對文件中的每個字詞：
+  選擇主題 z ∼ Multinomial(θ) 
+  選擇對應的主題字詞分佈 β\_z。
+  提取字詞 w ∼ Multinomial (β\_z)。

訓練模型時，目標是找出 α 和 β 參數，以讓模型所產生文字語料庫的概率最大化。

在預估 LDA 模型時，最熱門的方法是使用 Gibbs 取樣或最大期望 (EM) 方法。Amazon SageMaker AI LDA 使用張量譜分解法。這可提供下列幾個優點：
+  **有關結果的理論性保證**。標準的 EM 方法保證只收斂到局部最佳解 (這經常品質不良)。
+  **不易平行 (Embarrassingly parallelizable)**。工作可以細分為在訓練和推論時輸入文件。EM 方法和 Gibbs 取樣法可以平行執行，但不容易。
+  **快速**。雖然 EM 方法具有較低的迭代成本，但容易減緩收斂的速率。Gibbs 取樣法也會減緩收斂速率，並且需要大量的樣本。

在高層級，張量分解演算法遵循此程序：

1.  目標是計算 **V** x **V** x **V** 張量的譜分解，這會摘要說明我們語料庫中文件的矩。**V** 是詞彙數量 (也就是所有文件中不同字詞的數量)。此張量的譜成分是 LDA 參數 α 和 β，這可將文件語料庫的整體可能性最大化。不過，由於詞彙的數量通常很多，因此這個 **V** x **V** x **V** 張量會大到無法儲存於記憶體中。

1.  所以，會改用 **V** x **V** 矩量矩陣 (這是步驟 1 張量的二維類比)，來找出 **V** x **k** 維度的白化矩陣。此矩陣可用來將 **V** x **V** 矩量矩陣轉換為 **k** x **k** 單位矩陣。**k** 是模型的主題數量。

1.  也可使用同樣的白化矩陣來找出更小的 **k** x **k** x **k** 張量。在進行譜分解時，此張量的成分，和 **V** x **V** x **V** 張量的成分具有簡單的關聯性。

1.  會使用*交替最小二乘法*來分解較小的 **k** x *k* x **k** 張量。這種方式可大幅改善記憶體的耗用和速度。藉由將譜分解中的這些輸出 “取消白化”，可找出 α 與 β 參數。

在找出 LDA 模型的參數之後，您就可以找到每個文件的主題混和。您可以使用隨機梯度下降法，來將可能性函式最大化，此函式是用來觀察對應於這些資料的指定主題混合。

藉由增加訓練中要尋找主題的數量，然後篩選掉品質不佳的主題，可提升主題的品質。事實上，這會在 SageMaker AI LDA 中自動進行：會計算多出 25% 的主題，並且只傳回與狄利克雷先驗具有最高關聯度的主題。若要進行更深入的主題篩選與分析，您可以增加主題的數量，然後修改產生的 LDA 模型，如下所示：

```
> import mxnet as mx
> alpha, beta = mx.ndarray.load(‘model.tar.gz’)
> # modify alpha and beta
> mx.nd.save(‘new_model.tar.gz’, [new_alpha, new_beta])
> # upload to S3 and create new SageMaker model using the console
```

關於 LDA 適用演算法和 SageMaker AI 實作的詳細資訊，請參閱下列資料：
+ Animashree Anandkumar、Rong Ge、Daniel Hsu、Sham M Kakade 與 Matus Telgarsky。*Tensor Decompositions for Learning Latent Variable Models*，Journal of Machine Learning Research (機器學習研究雜誌)，15:2773–2832，2014 年。
+  David M Blei、Andrew Y Ng 與 Michael I Jordan。*隱含狄利克雷分布*。《Journal of Machine Learning Research》(機器學習研究雜誌)，3 (1 月)：993–1022，2003 年。
+  Thomas L Griffiths 與 Mark Steyvers。*尋找科學主題*。美國國家科學院 (National Academy of Sciences) 院刊，101 (增刊 1)：5228–5235，2004 年。
+  Tamara G Kolda 與 Brett W Bader。*張量分解與應用程式*。SIAM Review (SIAM 評論)，51(3)：455–500，2009 年。