Glove的全稱是global vectors for word representation,中文意思是全局單詞向量。Glove是壹個全局詞頻統計(count-based &;總體統計)單詞表示工具。
和word2vec壹樣,它可以把壹個詞表示成壹個由實數組成的向量,向量可以捕捉詞與詞之間的壹些語義特征,比如相似性和類比性。並且通過向量的運算,比如歐氏距離或者余弦相似度,可以計算出兩個詞之間的語義相似度。
3.構建損失函數:
這個損失函數是最簡單的均方損失,但在此基礎上增加了壹個權函數。它的作用是:對於壹個語料庫中經常壹起出現的詞(頻繁出現),
在本文中,作者采用了滿足上述條件的分段函數:
本文所有實驗中,的值均為。
雖然很多人聲稱Glove是壹種無監督的學習方法,即不需要手動標註數據,但實際上它還是有標簽的,向量和就是不斷更新學習參數。所以本質上它的訓練方式和監督學習沒什麽區別,都是基於梯度下降。
訓練的具體方法是:使用AdaGrad的梯度下降算法,隨機采樣矩陣中所有非零元素,設定學習率為0.05,向量大小小於300時叠代50次,其他大小叠代100次,直至收斂。
因為是對稱的,所以最後學的兩個詞的向量和也應該是對稱等價的,只是因為初值不同,所以最後的值不壹樣。為了提高魯棒性,最終選擇兩者之和作為最終的詞向量(兩者初始化不同相當於加入了不同的隨機噪聲,因此魯棒性可以得到提高)。
圖1 * * *用了三個指標:語義準確率、語法準確率、整體準確率。那麽我們很容易發現,向量維數在300時可以達到最好,而上下文窗口大小大致在6到10之間。
如果語料本身比較小,微調沒有效果,或者直接自己訓練沒有很強的計算能力,直接用大數據預訓練的手套詞向量也會有更好的效果。