斯坦福開源的Glove是基於一個特別特別特別特別大(具體size不記得了,反正特別特別大,難以想像的大)的從網上抓取的數據集 common-crawl 訓練的。

似乎通用開源的word2vec向量主要是基於 wiki+gigaword,比較小,也就幾billion個詞。

所以開源的Glove向量效果是好於word2vec向量的

不過曾經有人做過fair的比較,如果在相同數據集上訓練,Glove未必比word2vec好,各有千秋吧


因為 Pre-Trained GloVe 做了比較多的pre-process, 然後word2vec 沒有做. 然後大部分downstream task 都是處理過的詞,用GloVe 確實要好一些.

從演算法角度,這兩東西半斤八兩,但release 出來的pre-trained embedding,GloVe的pre-processing對細節處理更好一些.

PS: 圖是從自己文章里截的 (https://arxiv.org/abs/1908.05344), 歡迎大家引用呀~


兩者訓練的語料不一樣


Motivator

使用預訓練模式的動機是用一個基礎的word embedding model去表達word meaning。這個有基礎的 model中對應每一個word背後包涵的意思,可以為下游NLP任務提供一個基礎word語義和語法模型。Downstream NLP model可以根據應用的領域,微調word meaning,更準確的表達這個領域的詞義。

預訓練之所以有效,是因為它利用了很多word的latent features,用幾何距離的方式去表示words之間的相關性。 它工作方式與圖像識別任務中的transfer learning方式相似。

根據已有經驗的證明,好的預訓練的Word embedding model可以大幅提高downstream NLP tasks的accuracy,像在處理named entity recognition和word analogous的任務。

為什麼使用GloVe (Overview)

GloVe在重要的NLP任務進行基準測試中表現非常突出。

6 Billion的訓練數據[1]

Skip-Gram and CBOW(Continuous Bag of Words)是Word2Vec的兩種實現方法。

[公式]

「非常快的訓練速度」,模型簡單(與Skip-Gram相比)

Skip-gram訓練使用softmax function. Skip gram scale的複雜度和vocabulary size成線性關係, O(| V |)。 如果辭彙量從400,000 vocabulary size到4 Millions size,那麼訓練時間太長,很難在vocabulary方面進行模型擴展[1]。Skip-gram用了一個Hierarchal softmax,使用二叉樹從O(| V |)減少到O(log | V |)。 但是樹的構造很複雜,需要很多技巧。

GloVe使用negative sampling訓練時,比CBOW快~2倍,比Skip-Gram快約5倍[1]。

"Human Level Performance"

能否定義和達到這點是有很大的不確定性的。如果比較一個小孩子幾歲可以進行的word meaning的evaluation task, 統計年齡和分數的關係,再比較一個GloVe的基準的score,會是一個很有意思的實驗。就目前而言,我們可以根據小孩子掌握的vocabulary和GloVe做一個基準的表較,看看GloVe可以達到幾歲小孩的word表達水平。

雖然這種比較不是能力上等同的比較。 但就表現力而言,這很有趣。在300向量維度和42億訓練數據中,GloVe在語義任務中得分為81.9,在句法任務中得分為69.3 [1]。這很可能是第一次在語義任務中word embedding model可以高於80分,表現以理解單詞的含義。

雖然它還不是「expert performance",但應用到特定的domain,加上engineering corner case可以繼續提高分數,有可能達到90分以上,這樣的分數會對很多downstream NLP任務的準確性有很大的提高。


Word2Vec

Word2Vec是一種基於迭代的方法,用vector於表示word。 它有兩種演算法來表示word

  • continuous bag of words
  • skip-gram

CBOW是從周圍context預測中心詞。 Context可以是範圍2個相鄰的單詞,到3,4,5,6的周圍相鄰的word. 越遠的words,一般來說是越不relevant. 但是這樣的assumptions是基於general documents,不適合於詩歌和文學作品。

Skip gram用於預測給定centered words的context words。

但就每個word而言,word context都是一個「local context「,word vector的update是基於local context的update和表達。

GloVe

GloVe是全名是Global Vectors for Word Representation.

Global

GloVe context是「global」。 在計算co-occurence statistics時,Word vector context是「global context". 所以word vector訓練時的update是考慮了global context的,更新後的word vector是有global meaning的.

有了Global context, GloVe能夠」理解「Semantics based的NLP任務,象Semantic比喻任務

[公式]

答案是"Woman".

有了Global context, GloVe也能夠」理解「Syntactic based的NLP任務,象Syntactic比喻任務

[公式]

答案是"dancing".

Global representation of "King" and "Queen" 表示 GloVe計算「King」和所有其他單詞的co-occurence統計特徵,包括「Queen」和所有其他單詞,並計算embedded matrix中的P(「Queen」|「King」)

Relevancy and Probability

Co-occur的兩個詞越多,它們就越相關。

[公式]

Properties

你可以對word embedding vector進行算術運算來計算相關性。在GloVe中,這個等式不是完全成立的。 但左右兩邊的差異很小。

[公式]

基本Negative Sampling的訓練

使用negative sampling方法進行訓練可將複雜度很高的多類分類問題降低到多個二元分類問題。

多類分類任務

[公式]

多個二元分類問題

[公式]

二進位分類訓練比多類分類快得多。

[1] Pennington, Socher, Manning, 2014. GloVe: Global vectors for word representations


哪那麼複雜,用glove的原因就是他官方提供的模型Python調用方便,而且有靠譜的第三方實現如spacy


因為大家的論文中都用了glove,所以我也用了glove


你是怎麼得出這個結論的,多少案例和樣本?????


推薦閱讀:
相关文章