《GloVe: Global Vectors for Word Representation》閱讀筆記

寫在前面

論文題目:

《GloVe: Global Vectors for Word Representation》

Jeffrey Pennington, Richard Socher and Christopher D. Manning. EMNLP 2014

文章摘要:

GloVe 演算法通過對語料進行詞與詞的共現統計聚類,生成一個詞向量空間的線性子結構。

相關鏈接:

  1. 論文地址
  2. 項目源碼

1 什麼是詞共現矩陣

根據已有知識,語義距離相近的詞,共現次數多,反之共現次數少。為了提高詞與詞之間的區分度,我們用共現之間的比值來增大區分度。

共現概率表

對於單詞 i, j, k,應當有:

  1. 如果 i,j 很相關, i, k 不相關,那麼 P(j | i) / P(k | i) 應當很大
  2. 如果 i,j 很相關, i,k 也相關,那麼 P(j | i) / P(k | i) 應當趨近於 1

通過一個滑動窗口,可以得到一個詞共現矩陣,矩陣中的元素 X_{i, j} 表示在指定窗口大小內,單詞 i 和單詞 j 共同出現的次數。

2 什麼是 Glove 演算法

詞向量與詞共現概率比值是相關的,所以可以定義以下公式:

F(w_i,w_j,	ilde{w_k})=P_{ik}/P_{jk} (1)

其中,取單詞 i 的出現次數為 X_i,定義 P_{ij} = P(j | i) = X_{ij} / X_iF 表示某一種能夠定義詞向量和詞共現概率比值之間關係的變換,其可能的式子表示有很多,但可以通過一些限制和規定來得到一個簡單的式子。

由於詞向量的線性可加減的,故可將 (1) 式轉換為 (2) 式:

F(w_i-w_j,	ilde{w_k})=P_{ik}/P_{jk} (2)

又為了避免維度之間的不必要計算,進一步轉換為 (3) 式:

F((w_i-w_j)^T	ilde{w_k})=P_{ik}/P_{jk} (3)

由於在一次共現中單詞 i,j 是同等地位的,所以 F 應當是對稱的,因此加上公式 (4) 的約束,使 F 是一個同態變換。選擇除法一是因為這樣的同態變換好找(如 exp),二是與公式 (3) 在形式和參數上都能完美符合。

F((w_i-w_j)^T	ilde{w_k})=F(w_i^T	ilde{w_k})/F(w_j^T	ilde{w_k}) (4)

根據 (3),可以得到:

F(w_i^T	ilde{w_k})=P_{ik}=X_{ik}/X_i (5)

F=exp,可以得到公式 (6):

w_i^T	ilde{w_k}=log(P_{ik})=log(X_{ik})-log(X_i) (6)

log(X_i) 移到左邊,它是單詞 i 的出現次數,與單詞 k 無關,因此可以歸為偏置 b_i。為了保持公式的對稱性,再加入偏置 b_k,最終變成公式 (7):

w_i^T	ilde{w_k}+b_i+	ilde{b_k}=log(X_{ik}) (7)

公式 (7) 是從公式 (3) 出發,推導出的一個公式。式左為對詞向量的運算,式右是一個共現常量。

由於共現矩陣是很稀疏的,大部分元素都是 0,需要合理的 loss 加權,對共現多的詞給予更高關注,因此定義 loss 加權函數為 f(X_{ij}),其表示形式為公式 (9)。loss 加權函數的具體意義是:共現次數超過閾值後,其 loss 權重維持在 1.0 不變。文章也給出了兩個超參的參考值: x_{max} = 100α = 0.75。最終定義的損失函數如下:

J=sum_{i,j=1}^Vf(X_{ij})(w_i^T	ilde{w_k}+b_i+	ilde{b_j}-logX_{ij})^2 (8)

f(x)=egin{cases} (x/x_{max})^alpha & x<x_{max}\ 1 & otherwise end{cases} (9)

3 總結

Glove 用詞共現矩陣來得到一個詞向量子空間,是一種有趣的詞嵌入學習方法。


推薦閱讀:

TextGAN 代碼閱讀筆記
SQLnet 代碼閱讀筆記
python學習之文章數據分析
論文筆記 - 從神經圖靈機 NTM 到可微分神經計算機 DNC
NLP 自然語言處理國際會議(轉)

TAG:自然語言處理 | 詞向量 |