Global Vectors for Word Representation (GloVe)
對比之前的方法
求詞向量的兩類主要方法:
- 基於計數性的:共現矩陣
- 方法:基於SVD矩陣分解(LSA,HAL)
- 優點:有效利用全局統計信息
- 缺點:主要用來刻畫詞的相似度,在涉及到上下文的詞類比任務上表現欠佳
- 基於小窗口的:skip-gram和CBOW
- 方法:通過在局部上下文窗口中做預測來學習詞向量
- 優點:能捕捉到超出詞相似度的複雜語言模式(linguistic pattern)
- 缺點:不能利用全局的共現統計信息
Glove
- 方法:帶權最小二乘模型,在全局的詞共現計數的基礎上訓練
- 優點:
a. 生成具有有意義的子結構的向量空間,在詞類比任務和詞相似度任務上表現突出
b. 僅針對共現矩陣中的非零元素訓練,能更快地實現更好的效果
共現矩陣X
設有共現矩陣X,其中Xij表示詞j在詞i的上下文中出現的頻次。令Xi=ΣkXik表示所有在詞i的上下文中出現過的詞的總次數,則詞j在詞i的上下文中出現的概率爲:Pij=P(wj∣wi)=XiXij
tips:生成共現矩陣需要遍歷整個語料庫,儘管這是一筆昂貴的計算,但好在它只需要做一次。
最小二乘目標函數
在skip-gram模型中使用的是softmax來計算詞j在詞i的上下文中出現的概率:
Qij=∑w=1Wexp(uwTvi)exp(ujTvi)
訓練的全局交叉熵可以由如下公式計算得到:
J=−i∈corpus∑j∈context(i)∑logQij
把共現矩陣中的概率Pij 作爲實際的標籤,那麼優化的過程可以轉換爲Qij 不斷逼近Pij 的過程:
J=−i∈corpus∑j∈context(i)∑log∣PijQij∣
這一過程可以用最小二乘目標函數來表示:
J=−i∈corpus∑j∈context(i)∑(logQij−logPij)2
由於在語料庫中詞i和詞j同時出現的情況可能會多次出現,因此可以將相同的i、j對歸到一塊來計算總Loss:
J=i=1∑Wj=1∑WXi(logQij−logPij)2
使用softmax的一個明顯缺陷就是,概率分佈Q需要歸一化,也就意味着需要在整個詞彙表中做昂貴的加法計算。爲了避免繁重的計算,可以不做歸一化,令P^ij=Xij,Q^ij=exp(ujTvi),則有:
J^=i=1∑Wj=1∑WXi(logP^ij−logQ^ij)2=i=1∑Wj=1∑WXi(ujTvi−logXij)2
通常還採用一個權重函數f(x)=x3/4來進一步優化權重Xi,因爲詞頻Xij過高時,權重不應該過分地增大。
爲什麼是 3/4?下面的一些例子可能讓你有一些直觀的瞭解:
is:0.93/4=0.92
Constitution:0.093/4=0.16
Bombastic:0.013/4=0.032
“Bombastic”現在被抽樣的概率是之前的三倍,而“is”只比之前的才提高了一點點。