自然語言處理

GloVe(全域詞向量)

/ GLUHV /

GloVe 是 word2vec 的近親:又一種把每個詞變成一串數字向量、好讓相似的詞彼此靠近的辦法。兩者目標相同,卻從不同的角度抵達。word2vec 是在文本上滑動一個小視窗、從局部的猜詞遊戲中學習;GloVe 則退後一步,一次性統觀整個語料,先建起一張巨大的表,記錄每一對詞共同出現的頻率——也就是共現次數——再去擬合向量來解釋這些次數。

名字已經說明了一切:全域向量(Global Vectors)。它的直覺在於:共現的比值承載著意義。「冰」與「固體」一同出現,遠多於「蒸汽」;「蒸汽」與「氣體」一同出現,又遠多於「冰」;而兩者與「水」共現的頻率則大致相當。GloVe 的設計,就是要讓詞向量之間的關係恰好對應上這些比值。其結果,和 word2vec 一樣,支援那個著名的類比算術,也會把相關的詞聚到一處。

GloVe 由史丹佛研究者於2014年提出,多年來一直是人們隨手下載、直接塞進專案的一套預訓練向量。實踐中它與 word2vec 表現相當;誰更勝一籌取決於資料和任務,而非什麼宏大的原理。GloVe 也帶著同樣誠實的侷限:每個詞只有一個向量(於是詞義被糊在一起),而源文本裡的任何偏見,都會被烙進這套幾何之中。

看看每個詞與「水」共現的頻率:冰會,蒸汽也會,大致相當。但冰與「固體」共現得多得多,蒸汽則與「氣體」共現得多得多。GloVe 擬合出的向量,正是把這些會說話的比值,變成了幾何上的距離。

GloVe 一次性從整個語料的共現比值中學習。

GloVe 與 word2vec 之爭並非對錯之爭——它們以不同的路徑編碼同一種語義,表現通常也旗鼓相當。兩者都早於語境感知的嵌入,都只給每個詞一個不分詞義的向量。

又稱
Global Vectorsglobal vectors for word representation全局词向量共现词向量