2019-09-09 15:36:13
問題描述:word2vec 和 glove 這兩個生成 word embedding 的算法有什么區別。
問題求解:
GloVe (global vectors for word representation) 與word2vec,兩個模型都可以根據詞匯的 "共現 co-occurrence" 信息,將詞匯編碼成一個向量(所謂共現,即語料中詞匯一起出現的頻率)。
兩者最直觀的區別在於,word2vec是 "predictive" 的模型,而GloVe是 "count-based" 的模型。
Glove 和 word2vec 從算法實現的角度來說,它們區別在於loss的計算是不同的。
對於原生的w2v,其loss是交叉熵損失;
對於Glove來說,其需要先構建一個共現矩陣X,其中的 Xij 表示 i 和 j共同出現的次數,其loss為如下的公式。

f(x) 是一個權重函數,當 Xij 等於0的時候,f(x) = 0,並且當 Xij 過大的時候,f(x) = 1。

