本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
隱含狄利克雷分布 (LDA) 演算法
Amazon SageMaker 潛在狄利克雷分配 (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 的文件是關於狗的文件 (狗喜歡玩耍和汪汪叫)。即使在所有的文字中從未出現過貓和狗的字詞,也可以找出這些主題。
主題
在隱含狄利克雷分布 (LDA) 和神經主題模型 (NTM) 之間進行選擇
主題模型常用於從 (1) 一致性地概括語意意義和 (2) 很好地描述文件的語料庫中產生主題。因此,主題模型旨在最小化複雜度並最大化主題一致性。
複雜度是一種內部語言建模評估指標,可測量測試資料中每個單詞幾何平均可能性的倒數。複雜度分數越低表示一般化效能越好。研究顯示,每個單字運算的可能性通常會與人類的判斷不一致,而且可能會完全不相關,因此引入了主題一致性。模型中的每個推論主題都由單字組成,而主題一致性運算為模型中該特定主題的前 N 個單詞。它通常會被定義為該主題中單字的成對詞相似性分數的平均值或中間值,例如逐點相互資訊 (PMI)。有前途的模型會產生一致性主題或具有主題一致性分數較高的主題。
雖然目標是訓練可最小化複雜度並最大化主題一致性的主題模型,但 LDA 和 NTM 之間通常需要取得權衡。Amazon 近期的研究 Dinget et al., 2018 顯示,NTM 非常有前途,可達成高的主題一致性,不過,搭配折疊 Gibbs 取樣的 LDA 可以達成的複雜度更佳。複雜度和主題一致性之間需要取得權衡。從硬體和運算能力的實用性角度來看, SageMaker NTM 硬體比 LDA 更具彈性,因為 NTM 可以在 CPU 和 GPU 上執行,並且可以在多個 GPU 執行個體之間並行處理,而 LDA 僅支援單一執行個體 CPU 訓練。
LDA 演算法的輸入/輸出介面
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 演算法的 EC2 執行個體建議
LDA 目前只支援單一執行個體的 CPU 訓練。託管/推論建議使用 CPU 執行個體。
LDA 範例筆記本
如需範例筆記本,其中示範如何在資料集上訓練 SageMaker 潛在的狄利克雷配置演算法,以及如何部署經過訓練的模型以執行有關輸入文件中主題混合的推論,請參閱 LDA 簡介。 SageMaker