CS224n 深度自然語言處理(二) Note - Word Vectors 2 and Word Senses

Global Vectors for Word Representation(GloVe)

Comparison with Previous Methods

到目前爲止,我們已經見過兩種主要的詞嵌入方法。第一種計算基於統計計算矩陣分解方法(如LSA, HAL)。這些方法有效的使用了全局的統計信息,主要用來捕捉詞語相似性,但是對於詞類比等任務表現較差。另外一種方法基於滑動窗口(如skip-gram和CBOW),這種方法通過預測滑動窗口內的詞來學得詞嵌入。這些模型都有捕獲超過詞語相似度的複雜語言模型的能力,但是不能利用全局共現詞語的信息。

相比之下,GloVe包含一個加權最小二乘模型,可以訓練全局的單詞-單詞共現計數,因而也可以更有效的利用這些數據。模型產生一個單詞向量空間,有明顯的子結構。在單詞類比中表現出SOTA,在許多其他與單詞相似度有關的任務表現突出。

Co-occurrence Matrix

XX表示單詞-單詞的共現矩陣,其中Xi,jX_{i,j}表示單詞jj出現在單詞jj上下文的次數,令Xi=kXikX_i=\sum_kX_{ik}表示任意單詞kk出現在ii上下文的次數。令Pij=P(wjwi)=XijXiP_{ij}=P(w_j|w_i)=\frac{X_{ij}}{X_i}爲單詞jj出現在單詞jj上下文的概率。

通過遍歷整個語料可以構建出矩陣。對於更大的語料,這樣到操作會花費很多時間,但是只需要進行一次。

Least Square Objective

回憶skip-gram模型,我們使用softmax來計算單詞jj出現在單詞ii上下文的概率:
Qij=exp(ujTvi)w=1Wexp(uwTvi) Q_{ij} = \frac{exp(u_j^Tv_i)}{\sum_{w=1}^Wexp(u_w^Tv_i)}
訓練過程使用在線訓練,隨機梯度下降,最後使用交叉熵作爲loss,寫爲:
J=icorpusjcontext(i)logQij J = -\sum_{i\in corpus} \sum_{j\in context(i)}log Q_{ij}
同樣的單詞ii和單詞jj可能在語料中出現多次,將iijj出現次數放在一起:
J=i=1Wj=1WXijlogQij J = -\sum_{i=1}^W \sum_{j=1}^WX_{ij}logQ_{ij}
其中當共現頻率被賦予共現矩陣XX。交叉熵一個顯著的缺點是要求分佈QQ被適當的歸一化,這也需要花費大量的時間計算整個詞彙表的和。取而代之,我們使用最小二乘爲目標,歸一項PPQQ被寫爲:
J^=j=1Wj=1WXi(P^ijQ^ij)2 \hat{J} = \sum_{j=1}^W\sum_{j=1}^WX_i(\hat{P}_{ij}-\hat{Q}_{ij})^2
其中P^ij=Xij\hat{P}_{ij}=X_{ij}並且Q^ij=exp(ujTvi)\hat{Q}_{ij}=exp(u_j^Tv_i)是未歸一化的分佈。公式引入了一個新的問題,XijX_{ij}的值經常很大,使得優化過程變得困難。有效的解決方法是將平方誤差改對數誤差:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲\hat{J} & = \su…
另外個權重因子XiX_i不能保證是最優的,取而代之引入一個更通用的權重函數,可以更自由的依賴上下文。
J^=j=1Wj=1Wf(Xij)(ujTvilogXij)2 \hat{J} = \sum_{j=1}^W\sum_{j=1}^Wf(X_{ij})(u_j^Tv_i-logX_{ij})^2

Conclusion

GloVe模型有效的使用了全局的統計信息,通過訓練單詞共現矩陣中的非零元素,並且產生一個更有意義的向量空間的子結構。在單詞類比任務上比word2vec表現要好。表現更好的同時速度更快。

Evaluation of Word Vectors

到此爲止,我們已經討論了像Word2vec和GloVe來訓練和發現自然語言單詞潛在向量表示的方法。在這一小節中,我們討論如何定量評估這些模型產出單詞向量的好壞。

Instrinsic Evalution

詞向量的內在評價方法爲,將一些通過嵌入方法(如Word2Vec或者GloVe)得到的詞向量在特定的中間任務(如單詞類比推斷)進行評估。這些子任務往往簡單並且計算迅速,因此可以幫助我們理解產生詞向量的系統。內在評價應該返回一個數值,表示這些詞向量在評估任務中的表現。

Motivation(動機):考慮一個例子,我們的最終目標是建立一個問答系統,它使用詞向量作爲輸入,一種方法是訓練一個機器學習系統,它可以:

  1. 使用單詞作爲輸入
  2. 把單詞轉換爲詞向量
  3. 複雜的機器學習系統使用詞向量作爲輸入
  4. 將輸出的詞向量映射爲自然語言單詞
  5. 產生單詞作爲輸出

在這個產生SOTA問答系統中,我們將創建一個優化過的詞向量表示,因爲問答系統作爲下游任務(例如深度神經網絡)。在實踐當中,我們需要調整Word2Vec中的許多超參數(例如每個詞向量表示的維度)。然而理想的方式是在調整Word2Vec模型參數之後,重新訓練整個系統,這從工程角度來看是不太實際的,因爲機器學習系統(在第3步)通常是一個有着數以百萬參數的深度神經網絡,需要花費很長時間來訓練。這樣的話,我們需要想出一個簡單的內在評價方法,可以提供評估詞向量系統好壞的方法。顯然,對於內在評價的一個要求是必須和最終任務表現正相關。

Extrinsic Evaluation

詞向量的外部評價指的是,評估由詞嵌入技術產生的詞向量在真實任務中的表現。這些任務通常較爲複雜並且計算速度很慢。用上面使用的例子,問答系統產出的答案使用的就是外部評價。更一般的說,優化外部評價表現不好的系統,不允許我們判斷具體哪一個子系統有問題,這催生了內部評價指標(也就是說使用外部評價通常都是看最後結果,詞嵌入方法只作爲其中一小部分,我們只能獲得在最終任務的結果,沒辦法具體判斷詞嵌入部分的優劣性)。

Intrinsci Evaluation Example: Word Vector Analogies

內部評價指標而言,一個主流的選擇是比較在詞向量類比任務上的表現。在詞向量類比任務重,我們提供如下形式不完整的類比:
a:b::c:? a:b::c:?
(aa之於bb相當於cc之於誰?)

這種內在評價系統實際是在確定哪個詞向量使得餘弦相似度最大:
d=argmaxi(xbxa+xc)Txixbxa+xc d = argmax_{i} \frac{(x_b-x_a+x_c)^Tx_i}{||x_b-x_a+x_c||}
這個計算方式有更加直觀的解釋。理想情況下,我們希望xbxa=xdxcx_b-x_a=x_d-x_c(比如,queen-king=actress-actor)。這強調了我們希望xbxa+xc=xdx_b-x_a+x_c=x_d。因此我們最大化兩個詞向量點乘歸一化後的值(其實也就是餘弦相似度)。

使用內在評價方法(如詞向量類比)是應該謹慎處理(應當使用各個類別的預料作預訓練)。例如,考慮如下的類比形式:
City 1: state containing City 1 :: City 2: State containing City 2 \text{City 1: state containing City 1 :: City 2: State containing City 2}
在這裏插入圖片描述

在上面的許多樣例中,有多個城市/城鎮/鄉村有同樣的名字。因此許多表述都應當認爲是正確的。例如,在美國至少有10個地點交Phoenix,因此Arizona也不是唯一的正確答案。現在考慮另外一種類比形式:
Capital City 1: Country 1 :: Capital City 2: Country 2 \text{Capital City 1: Country 1 :: Capital City 2: Country 2}
在這裏插入圖片描述

在上面的樣例中,產生結果僅僅是近代作爲首都的城市。例如早在1997年Kazakhstan的首都是Almyty。因此如果語料庫過時了我們可以提前預知其他問題。

之前的兩個例子闡述了使用詞向量進行予以測試。我們也可以使用詞向量推斷做語法測試。下面的內部評價測試將使用詞向量推斷形容詞的比較級:

在這裏插入圖片描述

類似的,使用詞向量來做過去時態的內部評價測試如下:

在這裏插入圖片描述

Instrinsic Evaluation Tuning Example: Analogy Evaluations

現在我們探索詞向量嵌入中超參數,這些超參數在內部評價系統中可以被調整。首先觀察相同的超參數對於不同模型在類比任務中的表現:

在這裏插入圖片描述
觀察上述表格,可以得出三個主要的結論。

模型表現十分依賴於詞嵌入使用的模型。這個結果不出所料,因爲不同方法做詞嵌入從根本上有不同的特性。

使用大型預料表現更好。因爲嵌入技術可以獲得更多的樣例。如果一個類比樣例根本沒見過測試詞(也就是一個樣例對應的答案),那麼會輸出錯誤的答案。

特別低緯度詞向量表現更差。低維詞向量不能夠捕捉語料庫中不同單詞的不同意思。可以看做是一個高偏差問題,模型複雜度不夠。例如考慮’king’, ‘queen’, ‘man’, ‘woman’這些詞,憑直覺而言,我們使用2bits將詞語編碼,這兩維分別代表’gender’和’leadership’。再低維度的向量都不能捕捉這四個單詞語義差別了。

下圖闡述了準確率隨着語料庫則變大而提高。

在這裏插入圖片描述

下圖闡述了超參數對GloVe模型準確率的影響。

在這裏插入圖片描述

Instrinsic Evalution Example: Correlation Evalution

另外一個用來評估詞向量質量的方法是詢問人類兩個詞之前的相關性,相關性被限定在一個固定尺度範圍(如1-10)。之後用餘弦相似度作爲指標比較對應的詞向量。這種操作已經在很多數據集上實施過。
在這裏插入圖片描述

Futher Reading: Dealing With Ambiguity

有人會好奇,如何處理自然語言一詞多義的問題。例如’run’即使名詞也是動詞,在不同語境中有不同的含義。Improving Word Representations Via Global Context And Multiple Word Prototypes (Huang et al, 2012)這篇文章描述了這種請款如何解決。必要的步驟如下:

  1. 通過固定大小上下文窗口獲取上下文詞(如獲取中心詞之前的5個詞和之後的5個詞)
  2. 每一個上下文被表示爲上下文詞的加權平均(使用idf作爲權重)
  3. 應用球形k-means聚類這些上下文表示
  4. 最終每一個單詞的出現都被重新標記爲與他相關的類別,然後再訓練與類別對應的單詞表示。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章