Word2vec的詞聚類結果與LDA的主題詞聚類結果,有什麼不同?

正在研究Word2vec,有一個問題:LDA的結果會產生主題詞的聚類,聚類中的詞語是關係比較近的,而word2vec也會產生詞語的聚類,請問,這兩種方法產生的聚類詞語,有什麼區別嗎?在方法模型上,他們兩者是不同的,但是產生的結果從語義上來說,都是相當於近義詞的聚類,只不過一個是基於隱含主題的,一個是基於詞的上下文的,我困惑的是,這兩者產生的詞的聚類結果,本質上有什麼關係或不同嗎?例如,就lda來說,「蘋果」和「喬布斯」這兩個詞語在電子產品這個主題下,他們會聚到一起;對Word2vec來說,「蘋果」和「喬布斯」的關係度也會很大。


簡單的說,詞向量所體現的是語義(semantic)和語法(syntactic)這些 low-level的信息。而LDA的主題詞表現的是更 high-level的文章主題(topic)這一層的信息。

所以Word2vec的一些比較精細的應用,LDA是做不了的。比如:

1)計算詞的相似度。同樣在電子產品這個主題下,「蘋果」是更接近於「三星」還是「小米」?

2)詞的類比關係:vector(小米)- vector(蘋果)+ vector(喬布斯)近似於 vector(雷軍)。

3)計算文章的相似度。這個LDA也能做但是效果不好。而用詞向量,即使在文章topic接近的情況下,計算出的相似度也能體現相同、相似、相關的區別。

反過來說,想用詞向量的聚類去得到topic這一級別的信息也是很難的。很有可能,「蘋果」和「小米」被聚到了一類,而「喬布斯」和「雷軍」則聚到另一類。

這種差別,本質上說是因為Word2vec利用的是詞與上下文的共現,而LDA利用的是詞與文章之間的共現。

PS. 說起來,拿LDA和doc2vec比較才比較合理啊~~


這個問題這兩天面試問到了,我來說一下我個人的理解,歡迎大家討論。

  1. LDA和Word2Vec 都是Word Embedding的方法

    LDA訓練出來的 psi 矩陣,即每一個詞在各個主題上的分布和Word2Vec的詞向量是一個意思,LDA訓練時一開始輸入的topic K等同於Word2Vec一開始設置的詞向量的大小。兩個方法得出的詞向量都是模型訓練的副產物!
  2. LDA與Word2Vec 最大的不同應該是LDA是詞袋模型訓練出的產物,而Word2Vec是N-gram模型訓練的產物

    由於LDA使用的是詞袋模型,所以模型考慮的是文章級別的詞和詞的共現。而Word2Vec採用N-gram,考慮的是一個很小的窗口內詞的共現關係,所以這就決定了LDA得出來詞向量不如Word2Vec的詞向量精細,這裡所說的精細就是指詞項之間的相似度。所以「蘋果」和「喬布斯」的相似度,用LDA得出的結果應該就會比Word2Vec小得多。

以上兩點我覺得就是LDA與Word2Vec 的本質關係。


詞袋模型 vs sequence (或context) 模型可以算作一個區別。但LDA的思想未必不能用於 sequence 或 context 模型。

更本質更深刻的區別是LDA 是local representation, 而word2vec 是distributed representation。兩種思想孰優孰劣應該還是機器學習的重要研究問題。比如,參見文章

https://arxiv.org/pdf/1206.0387.pdf


先回答問題:

lda 公式 p(w|d)=p(w|t)xp(t|d) ,從公式中就可以看出lda是去所有的輸入文檔中找詞並計算主題。而詞和文檔的鏈接是通過主題鏈接。

word2vec 是定義好一個範圍(窗口)c,在這個c中去找word和word 的關係。並且沒有topic這個中間變數。

===================================================================

說說其他相關的異同

1.word2vec 和doc2vec 表示向量略有不同,w是每個詞作為向量表示,d是把詞作為一組當做向量表示。也就是doc2vec中,能找出doc和word 的相關性。

2.lda和doc2vec的原理還是不一樣,lda 主要利用的gibbs採樣,當然還有其他方法,這裡不做討論。doc2vec skip-gram或者用cbow方法計算關係。具體方法題主可以去看看相關論文。

推薦《Distributed Representations of Sentences and Documents》


lda 互為上下文(共現)的單元 其向量在某一維(某主題 或某個多項分布)上相近 比如蘋果和喬布斯的向量表示某一維都很高 但其他維度未必一致 蘋果和梨桃子西瓜在某一維很高 可是喬布斯在這維上就不高

word2vec 擁有相似上下文的兩個單元 向量表示相近 而這個向量並不是通過某一維連接起這兩個單元的


word2vec屬於distributed representation範疇,LDA屬於topic model範疇。二者的區別主要在於模型所使用的背景信息不同,word2vec將相鄰詞(例如N-gram)作為一個詞的背景信息,LDA將一整篇文檔作為一個詞的背景信息。

使用背景信息的不同使得word2vec和LDA學到不同性質的語義性質。基於文檔背景信息的LDA學到的是語義相關性,比如boat和water;基於相鄰詞背景信息的word2vec學到的是語義相似性,比如boat和ship。


在短語里或者句子主題聚類里,使用關鍵詞的語義聚類能在一定程度上代表著主題。 甚至結果和lda結果很像。

對於短語:短語可以表示為詞向量的加權和,權重可以使用idf 或者tfidf這類發現關鍵詞的權重。

對於句子:句子可以表示為詞向量加權和,去掉pca後的前一兩個主成分。


LDA某種程度和word2vec做的事情是一樣的,LDA得到單詞在每個主題上的分布(權值,重要性),例如喬布斯和蘋果在某幾個主題上權值都比較高。而對於word2vec也可以做到,sparse word embedding只要在訓練的時候加入單詞向量稀疏非負的約束得到稀疏可解釋性的表示,同樣的,這樣的向量表示也可以得到單詞在某個主題(維度)上的權值,而且類似於 喬布斯 和蘋果這樣的單詞在某幾個相同維度(可以看出LDA的主題)值比較大。

不同的地方可能是LDA直接知道某一維度是指哪種主題,而且一般word2vec的維度比LDA主題數目大得多。



推薦閱讀:

如何進行模型組合?
人工智慧入門,求書籍推薦?
機器學習,深度神經網路等方法是否是正確的方向?
邏輯斯蒂回歸能否解決非線性分類問題?
為什麼深度學習對訓練樣本的數量要求較高?

TAG:機器學習 | 自然語言處理 |