CS224n | (2) Word Vectors and Word Senses

原文地址

cs224n系列博客筆記主要基於cs224n-2019,後續也會新增 CS224n-2020 裏的更新部分:CS224n-2020 並未更新 Note 部分,但課程的部分課件進行了教學順序上的調整與修改(Suggested Readings 也相應變動),需要注意的是三個 Guest Lecture 都是全新的。

本文爲 Lecture 02 Word Vectors and Word Senses 與 Notes 02 GloVe, Evaluation and Training 的筆記。

Useful links

Lecture 02 Word Vectors and Word Senses , and Classifier Review

Lecture Plan

  • Finish looking at word vectors and word2vec
  • Optimization basics
  • Can we capture this essence(本質) more effectively by counting?
  • The GloVe model of word vectors
  • Evaluating word vectors
  • Word senses
  • The course

Review: Main idea of word2vec

在這裏插入圖片描述

  • 遍歷整個語料庫中的每個單詞(每個單詞既作爲中心詞,也作爲上下文詞)
  • 使用單詞向量預測周圍的單詞 (skip-gram)
  • 更新向量以便更好地預測

Word2vec parameters and computations
在這裏插入圖片描述
URV×dv4TRd×1=Uv4TRV×1,softmax(Uv4T)RV×1U\in R^{|V|\times d} \cdot v_4^T\in R^{d\times 1}=U\cdot v_4^T\in R^{|V|\times 1},softmax(U\cdot v_4^T)\in R^{|V|\times 1}

  • U是輸出向量矩陣,其每行代表一個單詞的(輸出)詞向量,點乘後得到的分數通過softmax映射爲概率分佈,並且我們得到的(預測)概率分佈是對於該中心詞而言的上下文中單詞的概率分佈,該分佈於上下文所在的具體位置無關,所以在每個位置的預測都是一樣的。
  • 我們希望模型對上下文中(相當頻繁)出現的所有單詞給出一個合理的高概率估計
  • the, and, that, of 這樣的停用詞,是每個單詞點乘後得到的較大概率的單詞。去掉這一部分可以使詞向量效果更好。

Optimization: Gradient Descent

Gradient Descent 每次使用全部樣本進行更新
Stochastic Gradient Descent 每次只是用單個樣本進行更新
Mini-batch 每次使用batch_size個樣本進行更新,是前兩者的折衷。具有以下優點:

  • 通過平均值(batch中每個樣本都會產生梯度,對batch_size個樣本產生的梯度求均值),減少梯度估計的噪音。
  • 在GPU上並行化運算,加快運算速度(每個batch使用矩陣並行計算)

一個batch的樣本整體前向傳播(矩陣並行),計算損失(每個樣本都會產生一個loss,求batch_size個樣本的平均loss);反向傳播,計算梯度(每個樣本都會產生梯度,對batch_size個樣本產生的梯度求均值),更新參數。 上述就是一個迭代更新過程,不斷更換batch,進行迭代更新。

Stochastic gradients with word vectors
θJt(θ)\nabla_{\theta}J_t(\theta),將會非常稀疏,所以我們可能只更新實際出現的向量(θ\theta表示所有的模型參數,包括輸入詞向量矩陣V和輸出詞向量矩陣U,但是每次迭代我們只用到其中的一部分單詞的詞向量,只有部分詞向量(參數)存在梯度,所以計算的梯度會非常稀疏。)。
解決方案:

  • 需要稀疏矩陣更新操作來只更新矩陣U和V中的特定行或列
  • 需要保留單詞向量的散列

如果有數百萬個單詞向量,並且進行分佈式計算,那麼重要的是不必到處發送巨大的更新.

Word2vec: More details

爲什麼兩個向量?(每個單詞對應一個輸入向量和輸出向量)

  • 更容易優化,最後都取平均值
  • 可以每個單詞只用一個向量

兩個模型變體

  • Skip-grams (SG)
    輸入中心詞並預測上下文中的單詞
  • Continuous Bag of Words (CBOW)
    輸入上下文中的單詞並預測中心詞

之前一直使用naive的softmax(簡單但代價很高的訓練方法),接下來使用負採樣方法加快訓練速率。

The skip-gram model with negative sampling (HW2)
softmax中用於歸一化的分母的計算代價太高(對整個詞典求和,|V|太大了):
在這裏插入圖片描述
我們將在作業2中實現使用 negative sampling 負採樣方法的 skip-gram 模型.

  • 使用一個 true pair (正樣本:中心詞及其上下文窗口中的詞)與幾個 noise pair (負樣本:中心詞與隨機採樣的詞搭配) 形成的樣本,訓練二元邏輯迴歸

原文中的(最大化)目標函數是:
在這裏插入圖片描述
本課以及作業中的目標函數是(添加負號 轉換爲最小化問題):
在這裏插入圖片描述

  • 我們希望中心詞與真實上下文單詞的向量點積更大,中心詞與隨機單詞的點積更小
  • k是我們負採樣的樣本數目
    在這裏插入圖片描述
    使用上式作爲抽樣的分佈(每個單詞被採樣的概率),U(w)U(w)是 unigram 分佈(每個單詞出現的頻率),通過 34\frac{3}{4}次方,相對減少常見單詞的被抽樣的概率,增大稀有詞的被抽樣的概率。Z是歸一化因子,用於生成概率分佈。

But why not capture co-occurrence counts directly?

共現矩陣 X

  • 兩個選項:windows vs. full document
  • Window :與word2vec類似,在每個單詞周圍都使用Window,包括語法(POS)和語義信息
  • Word-document 共現矩陣的基本假設是在同一篇文章中出現的單詞更有可能相互關聯。假設單詞 i 出現在文章 j 中,則矩陣元素XijX_{ij}加一,當我們處理完數據庫/語料庫中的所有文章後,就得到了矩陣 X,其大小爲 V×M|V| \times M,其中|V|是詞彙量,而M是文章數。這一構建單詞文章co-occurrence matrix的方法也是經典的Latent Semantic Analysis所採用的(潛在語義分析)。

利用某個定長窗口中單詞與單詞同時出現的次數來產生window-based (word-word) co-occurrence matrix。下面以窗口長度爲1(長度爲2?)來舉例,假設我們的數據包含以下幾個句子:

  • I like deep learning.
  • I like NLP.
  • I enjoy flying.

則我們可以得到如下的word-word co-occurrence matrix(對稱):
在這裏插入圖片描述
使用共現次數衡量單詞的相似性,但是會隨着詞彙量的增加而增大矩陣的大小,並且需要很多空間來存儲這一高維矩陣,後續的分類模型也會由於矩陣的稀疏性而存在稀疏性問題,使得效果不佳。我們需要對這一矩陣進行降維,獲得低維(25-1000)的稠密向量。

Method 1: Dimensionality Reduction on X (HW1)

使用SVD方法將共現矩陣 X 分解爲UΣVTU\Sigma V^T, Σ\Sigma是對角線矩陣,對角線上的值是矩陣的奇異值(XTXX^TX特徵值的平方根)。U是正交矩陣,其列向量是矩陣XXTXX^T的特徵向量;V也是正交矩陣,其列向量是矩陣XTXX^TX的特徵向量.

爲了減少尺度同時儘量保存有效信息,可保留對角矩陣的最大的k個值,並將矩陣 U,V的相應的行列保留(|V| -> k)。這是經典的線性代數算法,對於大型矩陣而言,計算代價昂貴(涉及到特徵值分解)。

Hacks to X (several used in Rohde et al. 2005)

按比例調整 counts 會很有效。

  • 對高頻詞進行縮放(語法有太多的影響)
    1)使用log進行縮放
    2)min(X,t),t100min(X,t), t\approx 100
  1. 直接全部忽視(高頻詞)
  • 在基於window的計數中,提高更加接近的單詞的計數
  • 使用Person相關係數

Conclusion:對計數進行處理是可以得到有效的詞向量的。
在這裏插入圖片描述在這裏插入圖片描述
在向量中出現的有趣的句法模式:語義向量基本上是線性組件,雖然有一些擺動,但是基本是存在動詞和動詞實施者的方向。

基於計數:使用整個矩陣的全局統計數據來直接估計

  • 優點
    1)訓練快速
    2)統計數據高效利用
  • 缺點
    1)主要用於捕捉單詞相似性
    2)對大量數據給予比例失調的重視

轉換計數:定義概率分佈並試圖預測單詞

-優點
1)提高其他任務的性能
2)能捕獲除了單詞相似性以外的複雜的模式

  • 缺點
    1)與語料庫大小有關的量表
    2)統計數據的低效使用**(採樣是對統計數據的低效使用)**

Encoding meaning in vector differences

將兩個流派的想法結合起來,在神經網絡中使用計數矩陣。

關於GloVe的理論分析需要閱讀原文,或閱讀知乎上諸多解析,如 CS224N筆記(二):GloVe

關鍵思想:共現概率的比值可以對meaning component進行編碼
在這裏插入圖片描述
重點不是單一的概率大小,重點是他們之間的比值,其中蘊含着meaning component。

例如我們想區分熱力學上兩種不同狀態ice冰與蒸汽steam,它們之間的關係可通過與不同的單詞 x 的co-occurrence probability 的比值來描述。
例如對於solid固態,雖然P(solidice)P(solid|ice)P(solidsteam)P(solid|steam) 本身很小,不能透露有效的信息,但是它們的比值 P(solidice)/P(solidsteam)P(solid|ice)/P(solid|steam)卻較大,因爲solid更常用來描述ice的狀態而不是steam的狀態,所以在ice的上下文中出現機率較大.
對於gas則恰恰相反,而對於water這種描述ice與steam均可或者fashion這種與兩者都沒什麼聯繫的單詞,則比值接近於1。所以相較於單純的co-occurrence probability,實際上co-occurrence probability的相對比值更有意義.

我們如何在詞向量空間中以線性meaning component的形式捕獲共現概率的比值?

log-bilinear 模型 : wiwjw_i \cdot w_j = logP(ij)\log P(i|j)
向量差異 : wx(wawb)=logP(xa)P(xb)w_x\cdot (w_a-w_b)=\log \frac{P(x|a)}{P(x|b)}

  • 如果使(兩個單詞)向量點積等於共現概率的對數,那麼向量差異變成了共現概率的比率
    在這裏插入圖片描述

  • 使用平方誤差促使點積儘可能得接近共現概率的對數

  • 使用 f(x)f(x) 對常見單詞進行限制

在這裏插入圖片描述

  • 優點
    1)訓練快速
    2)可以擴展到大型語料庫
    3)即使是小語料庫和小向量,性能也很好

How to evaluate word vectors?

與NLP的一般評估相關:內在與外在

  • 內在
    1)對特定/中間子任務進行評估
    2)計算速度快
    3)有助於理解這個系統
    4)不清楚是否真的有用,除非與實際任務建立了相關性

  • 外在
    1)對真實任務的評估
    2)計算精確度可能需要很長時間
    3)不清楚子系統是問題所在,是交互問題,還是其他子系統
    4)如果用另一個子系統替換一個子系統可以提高精確度

Intrinsic word vector evaluation(內在)

詞向量類比 a:b = c:?
在這裏插入圖片描述

  • 通過加法後的餘弦距離是否能很好地捕捉到直觀的語義和句法類比問題來評估單詞向量
  • 從搜索中丟棄輸入的單詞
  • 問題:如果有信息但不是線性的怎麼辦?

GloVe可視化效果:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
可以使用數據集評估語法和語義上的效果

Analogy evaluation and hyperparameters
在這裏插入圖片描述

  • 300是一個很好的詞向量維度
  • 不對稱上下文(只使用單側的單詞)不是很好,但是這在下游任務中可能不同
  • window size 設爲 8 對 GloVe向量來說比較好
  • window size設爲2的時候實際上是有效的,並且對於句法分析是更好的,因爲句法效果非常局部

On the Dimensionality of Word Embedding

利用矩陣攝動理論,揭示了詞嵌入維數選擇的基本的偏差與方法的權衡
當持續增大詞向量維度的時候,詞向量的效果不會一直變好並且會保持平穩

Analogy(類比) evaluation and hyperparameters

  • 訓練時間越長越好
    在這裏插入圖片描述

  • 數據集越大越好,並且維基百科數據集比新聞文本數據集要好
    1)因爲維基百科就是在解釋概念以及他們之間的相互關聯,更多的說明性文本顯示了事物之間的所有聯繫
    2)而新聞並不去解釋,而只是去闡述一些事件

在這裏插入圖片描述
Another intrinsic word vector evaluation
使用 cosine similarity 衡量詞向量之間的相似程度

Word senses and word sense ambiguity(歧義)

大多數單詞都是多義的

  • 特別是常見單詞
  • 特別是存在已久的單詞

Improving Word Representations Via Global Context And Multiple Word Prototypes (Huang et al. 2012)

將常用詞的所有上下文進行聚類,通過該詞得到一些清晰的簇,從而將這個常用詞分解爲多個單詞(多個含義),例如bank_1, bank_2, bank_3
雖然這很粗糙,並且有時senses(含義)之間的劃分也不是很明確甚至相互重疊

Linear Algebraic(代數) Structure of Word Senses, with Applications to Polysemy(多義詞)

  • 單詞在標準單詞嵌入(如word2vec)中的不同含義以線性疊加(加權和)的形式存在,ff 指頻率
    在這裏插入圖片描述
    令人驚訝的結果,只是加權平均值就已經可以獲得很好的效果:

  • 由於從稀疏編碼中得到的概念,你實際上可以將感官分離出來(前提是它們相對比較常見)

  • 可以理解爲由於單詞存在於高維的向量空間之中,不同的緯度所包含的含義是不同的,所以加權平均值並不會損害單詞在不同含義所屬的緯度上存儲的信息

Extrinsic word vector evaluation
單詞向量的外部評估:詞向量可以應用於NLP的很多任務(使下游任務的效果提升)

Notes 02 GloVe, Evaluation and Training

Keyphrases: Global Vectors for Word Representation (GloVe). Intrinsic and extrinsic evaluations. Effect of hyperparameters on analogy evaluation tasks. Correlation of human judgment with word vector distances. Dealing with ambiguity in word using contexts. Window classification.

**概述:**這組筆記首先介紹了訓練詞向量的GloVe模型。然後,它擴展了我們對詞向量(或稱詞嵌入)的討論,看看它們是如何通過內部和外部來評估的。我們討論了以詞類比作爲一種內在評價技術的例子,以及它如何被用來調整詞嵌入技術。然後我們討論了訓練模型的權重/參數和詞向量的外部任務。最後,我們將人工神經網絡作爲一種自然語言處理任務的模型。

1 Global Vectors for Word Representation (GloVe)

1.1 Comparison with Previous Methods

到目前爲止,我們已經研究了兩類主要的詞嵌入方法。第一類是基於統計並且依賴矩陣分解(例如LSA,HAL)。雖然這類方法有效地利用了全局的信息,它們主要用於捕獲單詞的相似性,但是對例如單詞類比的任務上表現不好。另外一類方法是基於淺層窗口(例如,Skip-Gram 和 CBOW 模型),這類模型通過在局部上下文窗口通過預測來學習詞向量。這些模型除了在單詞相似性任務上表現良好外,還展示了捕獲複雜語言模式能力,但未能利用到全局共現統計數據。

相比之下,GloVe 由一個加權最小二乘模型組成,基於全局word-word共現計數進行訓練,從而有效地利用全局統計數據。模型生成了包含有意義的子結構的單詞向量空間,在詞類比任務上表現非常出色。

GloVe 利用全局統計量,以最小二乘爲目標,預測單詞 j 出現在單詞 i 上下文中的概率。

1.2 Co-occurrence Matrix

X表示 word-word 共現矩陣,其中XijX_{ij}表示詞 j 出現在詞 i 的上下文中的次數。令Xi=kXikX_i = \sum_{k}X_{ik}爲每個詞k出現在詞 i 的上下文中的次數之和。最後,令Pij=P(wjwi)=XijXiP_{ij} = P(w_j|w_i)=\frac{X_{ij}}{X_i}是詞 j 出現在詞 i 的上下文中的概率。

計算這個矩陣需要遍歷一次整個語料庫獲得統計信息。對龐大的語料庫,這樣的遍歷會產生非常大的計算量,但是這只是一次性的前期投入成本。

1.3 Least Squares Objective

回想一下 Skip-Gram 模型,我們使用 softmax 來計算詞 j 出現在詞 i 的上下文的概率。
在這裏插入圖片描述
訓練時以在線隨機的方式進行,但是隱含的全局交叉熵損失可以如下計算:
在這裏插入圖片描述
同樣的單詞 i 和 j 可能在語料庫中出現多次,因此首先將 i 和 j 相同的值組合起來更有效:
在這裏插入圖片描述
其中,共現頻率的值是通過共現矩陣 X 給定。

交叉熵損失的一個顯著缺點是要求分佈 Q 被正確歸一化,因爲對整個詞彙表的求和的計算量是非常大的。因此,我們使用一個最小二乘的目標函數,其中 P 和 Q 的歸一化因子被丟棄了:
在這裏插入圖片描述
其中P^ij=Xij\hat{P}_{ij}=X_{ij},Q^=exp(ujTvi)\hat{Q}=exp(u_j^Tv_i)是未歸一化分佈。這個公式帶來了一個新的問題,XijX_{ij}經常會是很大的值,從而難以優化。一個有效的改變是最小化P^\hat{P}Q^\hat{Q}對數的平方誤差(取對數進行數值縮放):
在這裏插入圖片描述
另外一個問題是權值因子 XiX_i不能保證是最優的。因此,我們引入更一般化的權值函數,我們可以自由地依賴於上下文單詞:
在這裏插入圖片描述

1.4 Conclusion

總而言之,GloVe 模型僅對單詞共現矩陣中的非零元素訓練,從而有效地利用全局統計信息,並生成具有有意義的子結構向量空間。給出相同的語料庫,詞彙,窗口大小和訓練時間,它的表現都優於 word2vec,它可以更快地實現更好的效果,並且無論速度如何,都能獲得最佳效果。

2 Evaluation of Word Vectors

到目前爲止,我們已經討論了諸如 Word2Vec 和 GloVe 來訓練和發現語義空間中的自然語言詞語的潛在向量表示。在這部分,我們討論如何量化評估詞向量的質量。

2.1 Intrinsic Evaluation

詞向量的內部評估是對一組由如 Word2Vec 或 GloVe 生成的詞向量在特定的中間子任務(如詞類比)上的評估。這些子任務通常簡單而且計算速度快,從而能夠幫助我們理解生成的的詞向量。內部評估通常應該返回給我們一個數值,來表示這些詞向量在評估子任務上的表現。

  • 對特定的中間任務進行評估
  • 可以很快的計算性能
  • 幫助理解子系統
  • 需要和真實的任務正相關來確定有用性

在下圖中,左子系統(紅色)訓練的計算量大,因此更改爲一個簡單的子系統(綠色)作內部評估。
在這裏插入圖片描述
動機:我們考慮創建一個問答系統,其中使用詞向量作爲輸入的例子。一個方法是訓練一個機器學習系統:

  1. 輸入詞語
  2. 將輸入詞語轉換爲詞向量
  3. 對一個複雜的機器學習系統,使用詞向量作爲輸入
  4. 將輸出的詞向量通過系統映射到自然語言詞語上。
  5. 生成詞語作爲答案

當然,在訓練這樣的一個問答系統的過程中,因爲它們(詞向量)被用在下游子系統(例如深度神經網絡),我們需要創建最優的詞向量表示。在實際操作中,我們需要對 Word2Vec 子系統中的許多超參數進行調整(例如詞向量的維度)。

雖然最理想的方法是在 Word2Vec 子系統中的任何參數改變後都重新訓練,但從工程角度來看是不實際的,因爲機器學習系統(在第3步)通常是一個深層神經網絡,網絡中的數百萬個參數需要很長的時間訓練。

在這樣的情況下,我們希望能有一個簡單的內部評估技術來度量詞向量子系統的好壞。顯然的要求是內部評價與最終任務的表現有正相關關係。

2.2 Extrinsic Evaluation

詞向量的外部評估是對一組在實際任務中生成的詞向量的評估。這些任務通常複雜而且計算速度慢。對我們上面的例子,允許對問題答案進行評估的系統是外部評估系統。通常,優化表現不佳的外部評估系統我們難以確定哪個特定子系統存在錯誤,這就需要進一步的內部評估。

  • 對真實任務的評估
  • 計算性能可能很慢
  • 不清楚是子系統出了問題,還是其他子系統出了問題,還是內部交互出了問題
  • 如果替換子系統提高了性能,那麼更改可能是好的

2.3 Intrinsic Evaluation Example: Word Vector Analogies

一個比較常用的內部評估的方法是詞向量的類比。在詞向量類比中,給定以下形式的不完整類比:
在這裏插入圖片描述
然後內部評估系統計算詞向量的最大餘弦相似度:
在這裏插入圖片描述
這個指標有直觀的解釋。理想的情況下,我們希望 xbxa=xdxcx_b-x_a=x_d-x_c(例如,queen-king=actress-actor)。這就暗含着我們希望 xbxa+xc=xdx_b-x_a +x_c=x_d。因此,我們確定可以最大化兩個詞向量之間的歸一化點積(即餘弦相似度)的向量xdx_d 即可。使用諸如詞向量類比的內部評估技術應該小心處理(要考慮到預訓練的語料庫的各個方面)。例如,考慮以下的類比形式:
在這裏插入圖片描述
上圖是可能受到具有相同名稱的不同城市的語義詞向量類比(內在評估)。在上面很多的例子,美國有很多同名的城市/城鎮/村莊。因此,很多州都符合正確的答案。例如,在美國至少有 10 個地方的名稱是 Phoenix,所以 Arizona 不是唯一的正確答案。在考慮以下的類比形式:
在這裏插入圖片描述
上圖是可能在不同時間點有不同首都的國家的語義詞向量類比(內在評估)。上面很多的例子,這個任務中生成的城市僅僅是近期的國家首都,可能會受到不同國家在不同時間點擁有不同首都的影響。例如,1997 年之前 Kazakhstan 的首都是 Almaty。因此,如果我們的語料庫過時就會出現問題。

之前的兩個例子說明如何使用詞向量進行語義測試。我們也可以使用詞向量類似進行語法測試。下面是測試形容詞最高級概念的句法詞向量類比(內在評價),如下圖所示:
在這裏插入圖片描述
類似地,下圖的內部評估展示了測試詞向量捕獲過去時態概念的能力
在這裏插入圖片描述

2.4 Intrinsic Evaluation Tuning Example: Analogy Evaluations

我們現在探討使用內在評估系統(如類比系統)來調整的詞向量嵌入技術(如 Word2Vec 和 GloVe)中的超參數。我們首先來看看在類比評估任務中,在相同的超參數下,由不同方法創建的詞向量的表現效果:
在這裏插入圖片描述
根據上表,我們可以看到 3 點:

  • 模型的表現高度依賴模型所使用的詞向量的模型:這點是可以預料到的,因爲不同的生成詞向量方法是基於不同的特性的(例如共現計數,奇異向量等等)。
  • 語料庫更大模型的表現更好:這是因爲模型訓練的語料越大,模型的表現就會更好。例如,如果訓練的時候沒有包含測試的詞語,那麼詞類比會產生錯誤的結果。
  • 對於極高或者極低維度的詞向量,模型的表現較差:低維度的詞向量不能捕獲在語料庫中不同詞語的意義。這可以被看作是我們的模型複雜度太低的高偏差問題。例如,我們考慮單詞“king”、“queen”、“man”、“woman”。直觀上,我們需要使用例如“性別”和“領導”兩個維度來將它們編碼成 2 字節的詞向量。維度較低的詞向量不會捕獲四個單詞之間的語義差異,而過高的維度可能捕獲語料庫中無助於泛化的噪聲-即所謂的高方差問題。

GloVe 中使用中心詞左右的窗口大小爲 8 時模型表現較好。

下圖可以看到訓練時間對模型表現的影響:
在這裏插入圖片描述
下圖可以看到增加語料庫規模對模型準確度的影響:
在這裏插入圖片描述
下圖可以看到不同超參數對 GloVe 模型準確度的影響:
在這裏插入圖片描述
超高維向量:
直觀地說,這些向量似乎會在語料庫中捕獲不允許泛化的噪聲,即導致高方差。
但是Yin等人在On the Dimensionality of Word Embedding上表明,skip-gram 和 GloVe 對這種過擬合具有魯棒性。

Intrinsic Evaluation Example: Correlation Evaluation

另外一個評估詞向量質量的簡單方法是,讓人去給兩個詞的相似度在一個固定的範圍內(例如 0-10)評分,然後將其與對應詞向量的餘弦相似度進行對比。這已經在包含人爲評估的各種數據集上嘗試過。

下圖是使用不同的詞嵌入技術與不同的人類判斷數據集的詞向量相似性之間的相關性
在這裏插入圖片描述

2.6 Further Reading: Dealing With Ambiguity

我們想知道如何處理在不同的自然語言處理使用場景下,用不同的詞向量來捕獲同一個單詞在不同場景下的不同用法。例如,“run”是一個名詞也是一個動詞,在不同的語境中它的詞性也會不同。論文 Improving Word Representations Via Global Context And Multiple Word Prototypes 提出上述問題的的解決方法。該方法的本質如下:

  1. 收集語料庫中該單詞的所有上下文 (如 前面5個單詞,後面5個單詞)
  2. 每個上下文使用上下文詞向量的加權平均值來表示(使用idf加權)。
  3. 用 spherical k-means 對這些上下文表示進行聚類。
  4. 最後,每個單詞的出現/上下文都重新標籤爲其相關聯的類,同時基於每個類(的上下文),來訓練對應的詞向量。

要對這個問題進行更嚴謹的處理,可以參考原文。

3 Training for Extrinsic Tasks

到目前爲止,我們一直都關注於內在任務,並強調其在開發良好的詞向量技術中的重要性。但是大多數實際問題的最終目標是將詞向量結果用於其他的外部任務(下游任務)。接下來會討論處理外部任務的方法。

3.1 Problem Formulation

很多 NLP 的外部任務都可以表述爲分類任務。例如,給定一個句子,我們可以對這個句子做情感分類,判斷其情感類別爲正面,負面還是中性。相似地,在命名實體識別(NER),給定一個上下文和一箇中心詞,我們想將中心詞分類爲許多類別之一。對輸入,“Jim bought 300 shares of Acme Corp. in 2006”,我們希望有這樣的一個分類結果:
在這裏插入圖片描述
對這類問題,我們一般有以下形式的訓練集:
其中 x(i)x^{(i)} 是一個 d 維的詞向量,y(i)y^{(i)}是一個 C 維的 one-hot 向量,表示我們希望最終預測的標籤(情感,其他詞,專有名詞,買/賣決策等)。

我們可以使用諸如邏輯迴歸和 SVM 之類的算法對 2-D 詞向量來進行分類,如下圖所示
在這裏插入圖片描述
在一般的機器學習任務中,我們通常固定輸入數據和目標標籤,然後使用優化算法來訓練權重(例如梯度下降,L-BFGS,牛頓法等等)。然而在 NLP 應用中,我們引入一個新的思想:在訓練外部任務時對輸入詞向量進行再訓練(預訓練+微調)。下面我們討論何時使用以及爲什麼要這樣做。

對於大型訓練數據集,應考慮詞向量再訓練。對於小數據集,重新訓練單詞向量可能會降低性能。

3.2 Retraining Word Vectors

正如我們迄今所討論的那樣,我們用於外部評估的詞向量是通過一個簡單的內部評估來進行優化並初始化。在許多情況下,這些預訓練的詞向量在外部評估中表現良好。但是,這些預訓練的詞向量在外部評估中的表現仍然有提高的可能。然而,重新訓練(finetuning)存在着一定的風險。

如果我們在外部評估中重新訓練詞向量(finetuning),這就需要保證訓練集足夠大並能覆蓋詞彙表中大部分的單詞。這是因爲Word2Vec或GloVe會生成語義相關的單詞,這些單詞位於單詞空間的同一部分。

假設預訓練向量位於二維空間中,如下圖所示。在這裏,我們看到在一些外部分類任務中,單詞向量被正確分類。
在這裏插入圖片描述
現在,如果我們因爲有限的訓練集大小而只對其中兩個向量進行再訓練,那麼我們在下圖中可以看到,其中一個單詞被錯誤分類了,因爲單詞向量更新導致邊界移動。
在這裏插入圖片描述
因此,如果訓練數據集很小,就不應該對(預訓練)單詞向量進行再訓練。如果訓練集很大,再訓練可以提高性能(預訓練+finetuning)。

3.3 Softmax Classification and Regularization

我們考慮使用 Softmax 分類函數,函數形式如下所示:
在這裏插入圖片描述
這裏我們計算詞向量 x 是類別 j 的概率。使用交叉熵損失函數計算一個樣本的損失如下所示:
在這裏插入圖片描述
當然,上述求和是對 C-1 個零值求和,因爲 yjy_j僅在單個索引爲 1,這意味着 x 僅屬於 1 個正確的類別。現在我們定義 k 爲正確類別的索引。因此,我們現在可以簡化損失函數:
在這裏插入圖片描述
然後我們可以擴展爲有 N 個單詞(樣本)的損失函數:
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200421183524763.png #pic_center =300x)
上面公式的唯一不同是 k(i)k(i) 現在是一個函數,返回 x(i)x^{(i)} 對應的正確類別的索引。

現在我們來估計一下同時訓練模型的權值 W 和詞向量x時需要更新的參數的數量。我們知道一個簡單的線性決策模型至少需要一個 d 維的詞向量輸入和生成一個 C個類別的分佈。因此更新模型的權值W,我們需要 C*d 個參數。如果我們也對詞彙表 V 中的每個單詞都更新詞向量,那麼就要更新 |V| 個詞向量,每一個的維度是 d 維。因此對一個簡單的線性分類模型,總共的參數數目是 (C+|V|)*d :
在這裏插入圖片描述
對於一個簡單的模型來說,這是相當大的參數量——這樣的參數量很可能會出現過擬合的問題。

爲了降低過擬合的風險,我們引入一個正則項,從貝葉斯派的思想看,這個正則項是對模型的參數加上一個先驗分佈,讓參數變小(即接近於 0):
在這裏插入圖片描述
如果調整好目標權重 λ\lambda 的值,最小化上面的函數將會降低出現很大的參數值的可能性,同時也提高模型的泛化能力。在我們使用更多參數更復雜的模型(例如神經網絡)時,就更加需要正則化的思想。

3.4 Window Classification

下圖是我們有一箇中心詞和一個長度爲 2 的對稱窗口。這樣的上下文可以幫助分辨 Paris 是一個地點還是一個名字。
在這裏插入圖片描述
目前爲止,我們主要探討了使用單個單詞向量 x 預測的外部評估任務(輸入是單個詞)。在現實中,因爲自然語言處理的性質,這幾乎不會有這樣的任務。在自然語言處理中,常常存在着一詞多義的情況,我們一般要利用詞的上下文來判斷其不同的意義。例如,如果你要某人解釋“to sanction”是什麼意思,你會馬上意識到根據“to sanction”的上下文其意思可能是“to permit”或者“to punish”。在更多的情況下,我們使用一個單詞序列作爲模型的輸入。這個序列是由中心詞向量和上下文詞向量組成。上下文中的單詞數量也被稱爲上下文窗口大小,並根據解決的問題而變化。一般來說,較窄的窗口大小會導致在句法測試中更好的性能,而更寬的窗口會導致在語義測試中更好的性能。

爲了將之前討論的 Softmax 模型修改爲使用單詞的窗口來進行分類,我們只需要按照下面形式將 x(i)x^{(i)} 替換爲xwindow(i)x^{(i)}_{window}
在這裏插入圖片描述
因此,當我們計算單詞的損失梯度如下所示,當然需要分配梯度來更新相應的詞向量:
在這裏插入圖片描述

3.5 Non-linear Classifiers

我們現在介紹非線性分類模型,如神經網絡。我們看到即使是最優的線性分類平面,也有許多樣例都被錯誤的分類。這是因爲線性模型在這個數據集上的分類能力有限。

在這裏插入圖片描述
在下圖中,我們看到非線性分類模型可以對上面的數據集的樣例有着更好的分類結果,這個簡單的例子可以初步的說明我們爲什麼需要非線性模型。
在這裏插入圖片描述

Reference

以下是學習本課程時的可用參考書籍:

《Speech and Language Processing》

《基於深度學習的自然語言處理》

《神經網絡與深度學習》

以下是學習本課程時的可用參考博客:

斯坦福CS224N深度學習自然語言處理2019冬學習筆記目錄 (課件核心內容的提煉,幷包含作者的見解與建議)

斯坦福大學 CS224n自然語言處理與深度學習筆記彙總 (這是針對note部分的翻譯)

Notes on Stanford CS224n

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