為何做DL用word2vec比glove多?


謝邀,作為知乎首答,既有些緊張,也充滿了驚喜。

---------------------------------------------------------------------------------------------------------------

關於word2vec簡單易用名氣大以及在python上有很好的實現這類的陳詞濫調我就不說了。我只想搬運一下這篇博客所做的關於word2vec和GloVe的比較,請移步這裡:Making sense of word2vec

總結一下那篇文章的觀點,word2vec仍然是state-of-the-art的,相比之下GloVe略遜一籌,但也有可圈可點之處。

不使用negative sampling的word2vec本身非常快,但是準確性並不高(57.4%),畢竟你只告訴模型什麼是有關的卻不告訴它什麼是無關的,模型很難對無關的詞進行懲罰從而提高自己的準確率(順便說一下,在python的gensim這個包里,gensim.models.word2vec.Word2Vec默認是不開啟negative sampling的,需要開啟的話請設置negative參數,如何設置文檔中有明確說明 gensim: models.word2vec)。然而,當使用了negative sampling之後,為了將準確率提高到68.3%,word2vec就需要花較長的時間了(8h38m);相較而言,GloVe要是想達到67.1%的準確率,只需要花4h12m。

由於GloVe演算法本身使用了全局信息,自然內存費的也就多一些,相比之下,word2vec在這方面節省了很多資源。所以對於內存夠用又希望節省時間的朋友而言,GloVe可能是比較好的選擇;而對於其他情況,如文本本身並不大,而又不介意一邊開著word2vec一邊刷知乎的朋友來說,word2vec可能是更好的選擇。

還有一點說明一下,該文章用的評價標準是accuracy on the word analogy task,這僅僅是word2vec和GloVe眾多用途中的一個而已。比如我用word2vec來找synonym比較多,這時候我的評價標準就應該基於wordsim353等,不知道word2vec和GloVe在這個評價標準下表現差異如何。

有興趣的同學請移步至word2vec算出的詞向量怎麼衡量好壞? - 機器學習的jiangfeng同學的回答。


比起word2vec來說glove用了一些overall statistics,彌補了co-occurrence模型的一些不足,不過在實際運用中效果並不一定比簡單的word2vec好,比如這篇paper給出了一些實證研究:Improving Distributional Similarity with Lessons Learned from Word Embeddings

此外,word2vec相比glove更簡單,理解起來更直觀,發布時間更早,影響力更大也是造成glove使用不如word2vec多的很重要的原因。不過個人覺得這種東西無所謂,實際操作中哪個好用就用哪個吧。

貼上Word2Vec和Glove的tutoria供大家學習:

Word2Vec Tutorial - The Skip-Gram Model

GloVe: Global Vectors for Word Representation

以及實現方面的notes:

GloVe vs word2vec revisited. · Data Science notes


根據我個人的實驗經驗,GloVe效果不一定就比word2vec差,相反在某些實際應用中可能更好。我自己嘗試過很多word embedding,比如

1. GloVe官網上GloVe: Global Vectors for Word Representation下載的在840 billion tokens上的word embedding,

2. 在twitter數據集上27 billion tokens的word embedding,

3. 以及我自己用GloVe和word2vec在大概10 billion tweets上訓練的word embedding

4. 在word2vec官網上下載的在billion wikipedia數據集上的word embedding

這些word embedding在question answering, paraphrase detection和twitter duplicate detection的一些task跑過,都是GloVe embedding的效果要顯著好一些。具體細節可以參考我們實驗室的論文:

Multi-Perspective Sentence Similarity Modeling
with Convolutional Neural Networks http://ttic.uchicago.edu/~kgimpel/papers/he+etal.emnlp15.pdf


廢話不多說,以實驗效果為證,https://levyomer.files.wordpress.com/2015/03/improving-distributional-similarity-tacl-2015.pdf


因為在很多人發的paper里,glove效果都不如簡單的word2vec,然後又更複雜,所以。。。

另外word2vec在前glove在後。glove作者的paper被人後來引用說不一定比之前的簡單模型好也不是一篇兩篇了。


推薦閱讀:

怎樣計算兩篇文檔的相似度?

TAG:機器學習 | 自然語言處理 | 計算機視覺 | 深度學習DeepLearning | word2vec |