GloVe推導

Global Vectors for Word Representation (GloVe)

對比之前的方法

求詞向量的兩類主要方法:

  1. 基於計數性的:共現矩陣
  • 方法:基於SVD矩陣分解(LSA,HAL)
  • 優點:有效利用全局統計信息
  • 缺點:主要用來刻畫詞的相似度,在涉及到上下文的詞類比任務上表現欠佳
  1. 基於小窗口的:skip-gram和CBOW
  • 方法:通過在局部上下文窗口中做預測來學習詞向量
  • 優點:能捕捉到超出詞相似度的複雜語言模式(linguistic pattern)
  • 缺點:不能利用全局的共現統計信息

Glove

  • 方法:帶權最小二乘模型,在全局的詞共現計數的基礎上訓練
  • 優點:
    ​ a. 生成具有有意義的子結構的向量空間,在詞類比任務和詞相似度任務上表現突出
    ​ b. 僅針對共現矩陣中的非零元素訓練,能更快地實現更好的效果

共現矩陣X

設有共現矩陣XX,其中XijX_{i j}表示詞jj在詞ii的上下文中出現的頻次。令Xi=ΣkXikX_{i}=\Sigma_{k} X_{i k}表示所有在詞ii的上下文中出現過的詞的總次數,則詞jj在詞ii的上下文中出現的概率爲:Pij=P(wjwi)=XijXiP_{i j}=P\left(w_{j} | w_{i}\right)=\frac{X_{i j}}{X_{i}}

tips:生成共現矩陣需要遍歷整個語料庫,儘管這是一筆昂貴的計算,但好在它只需要做一次。

最小二乘目標函數

在skip-gram模型中使用的是softmax來計算詞jj在詞ii的上下文中出現的概率:

Qij=exp(ujTvi)w=1Wexp(uwTvi)Q_{i j}=\frac{\exp \left(\vec{u}_{j}^{T} \vec{v}_{i}\right)}{\sum_{w=1}^{W} \exp \left(\vec{u}_{w}^{T} \vec{v}_{i}\right)}

訓練的全局交叉熵可以由如下公式計算得到:

J=icorpusjcontext(i)logQijJ=-\sum_{i \in \text {corpus}} \sum_{ j \in \text {context}(i)} \log Q_{i j}

把共現矩陣中的概率PijP_{i j} 作爲實際的標籤,那麼優化的過程可以轉換爲QijQ_{i j} 不斷逼近PijP_{i j} 的過程:

J=icorpusjcontext(i)logQijPijJ=-\sum_{i \in \text {corpus}} \sum_{ j \in \text {context}(i)} \log |\frac{Q_{i j}}{P_{i j}}|

這一過程可以用最小二乘目標函數來表示:

J=icorpusjcontext(i)(logQijlogPij)2J=-\sum_{i \in \text {corpus}} \sum_{ j \in \text {context}(i)} (\log Q_{i j} - \log P_{i j}) ^2

由於在語料庫中詞ii和詞jj同時出現的情況可能會多次出現,因此可以將相同的iijj對歸到一塊來計算總Loss:

J=i=1Wj=1WXi(logQijlogPij)2J =\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i} (\log Q_{i j} - \log P_{i j}) ^2

使用softmax的一個明顯缺陷就是,概率分佈QQ需要歸一化,也就意味着需要在整個詞彙表中做昂貴的加法計算。爲了避免繁重的計算,可以不做歸一化,令P^ij=Xij\hat{P}_{i j}=X_{i j}Q^ij=exp(ujTvi)\hat{Q}_{i j}=\exp \left(\vec{u}_{j}^{T} \vec{v}_{i}\right),則有:

J^=i=1Wj=1WXi(logP^ijlogQ^ij)2=i=1Wj=1WXi(ujTvilogXij)2\hat{J}=\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i}\left(\log \hat{P}_{i j}-\log \hat{Q}_{i j}\right)^{2} \\ =\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i}\left(\vec{u}_{j}^{T} \vec{v}_{i}-\log X_{i j}\right)^{2}

通常還採用一個權重函數f(x)=x3/4f(x)=x ^ {3 / 4}來進一步優化權重XiX{i},因爲詞頻XijX{i j}過高時,權重不應該過分地增大。

爲什麼是 3/4?下面的一些例子可能讓你有一些直觀的瞭解:

is:0.93/4=0.92is: 0.9 ^ {3 / 4}=0.92

Constitution:0.093/4=0.16Constitution: 0.09 ^ {3 / 4}=0.16

Bombastic:0.013/4=0.032Bombastic: 0.01 ^ {3 / 4}=0.032

“Bombastic”現在被抽樣的概率是之前的三倍,而“is”只比之前的才提高了一點點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章