詞向量學(xué)習(xí)算法 Glove

常見(jiàn)的詞嵌入算法有基于矩陣分解的方法和基于淺層窗口的方法,Glove 結(jié)合了這兩類方法的優(yōu)點(diǎn)生成詞向量。基于矩陣分解的方法可以有效地利用全局信息,但是在大數(shù)據(jù)集上速度慢;而基于淺層窗口的方法對(duì)于詞匯類比任務(wù)效果較好,訓(xùn)練速度快,但是不能有效利用全局信息。

1. 詞嵌入算法 Word Embedding

在上一篇文章《詞表征學(xué)習(xí)算法 — Word2Vec》中,主要介紹了詞嵌入算法 Word2Vec。與傳統(tǒng)的 one-hot 編碼、共現(xiàn)向量相比,詞嵌入算法得到的詞向量維度更低、也可以更好地支持一些下游的任務(wù),例如文檔分類,問(wèn)答系統(tǒng)等。

本文介紹另一種詞嵌入算法 Glove,首先簡(jiǎn)述目前主要的兩類詞嵌入算法的優(yōu)缺點(diǎn)。第一類是 Matrix Factorization (矩陣分解) 方法,例如 LSA;第二類是 Shallow Window-Based (基于淺層窗口) 方法,也稱為基于預(yù)測(cè)的方法,例如 Word2Vec。Glove 算法結(jié)合了基于統(tǒng)計(jì)和基于淺窗口兩種方法的優(yōu)點(diǎn)

1.1 矩陣分解

基于矩陣分解的 word embedding 算法是一種利用了全局統(tǒng)計(jì)信息的方法,首先需要在語(yǔ)料庫(kù)中構(gòu)造出單詞共現(xiàn)矩陣或者文檔 - 單詞矩陣。下面用一個(gè)簡(jiǎn)單的例子說(shuō)明,假設(shè)語(yǔ)料庫(kù)中包含以下三個(gè)文檔,則可以構(gòu)造出對(duì)應(yīng)的單詞共現(xiàn)矩陣或者文檔 - 單詞矩陣

文檔 1:I have a cat

文檔 2:cat eat fish

文檔 3:I have a apple


單詞共現(xiàn)矩陣與文檔 - 單詞矩陣??

單詞共現(xiàn)矩陣中,單詞 “I” 和 單詞 “have” 在兩篇文檔中共同出現(xiàn),因此它們的連接權(quán)重為 2;在文檔 - 單詞矩陣中文檔 1 包含一個(gè)單詞 “I”,因此為 1。在實(shí)際構(gòu)造文檔 - 單詞矩陣時(shí)則可以使用 tf-idf 作為權(quán)重。

在得到單詞共現(xiàn)矩陣或者文檔 - 單詞矩陣后可以采用 LSA 算法學(xué)習(xí)得到詞向量,LSA 算法 (潛在語(yǔ)義分析) 主要用于文本話題分析,通過(guò)對(duì)文檔 - 單詞矩陣進(jìn)行分解可以找出文檔與話題、單詞與話題之間的聯(lián)系 。矩陣?X(M×N) 表示文檔 - 單詞矩陣,其中包含 M 個(gè)文檔和 N 個(gè)單詞。LSA 使用 SVD 分解矩陣?X?,得到兩個(gè)低維的矩陣?U(M×k) 和?V(N×k),V?的每一行就是一個(gè)單詞的詞向量。


SVD 分解文檔 - 單詞矩陣

基于矩陣分解的方法優(yōu)點(diǎn)是:可以有效利用全局統(tǒng)計(jì)信息。缺點(diǎn)是:1. SVD算法的時(shí)間復(fù)雜度太大,不適合用于大數(shù)據(jù)集;2. 主要用于獲取詞匯的相似性,對(duì)于詞匯類比任務(wù)的表現(xiàn)沒(méi)有基于淺窗口預(yù)測(cè)的方法好。

1.2 基于淺窗口

基于淺窗口的方法也稱為基于預(yù)測(cè)的方法,代表算法有 NNLM、Word2Vec 等?;跍\窗口的方法通常使用了語(yǔ)料庫(kù)的局部信息,在訓(xùn)練的過(guò)程中生成一個(gè)局部的上下文窗口。通過(guò)用上下文單詞預(yù)測(cè)中心詞或者用中心詞預(yù)測(cè)上下文單詞,最大化條件概率 P(中心詞|上下文單詞) 或者 P(上下文單詞|中心詞),從而訓(xùn)練得到詞向量。例如在 Word2Vec 的 Skip-Gram 模型中主要是使用中心詞預(yù)測(cè)上下文單詞,最大化 P(上下文單詞|中心詞);而 Word2Vec 中的 CBOW 模型主要是通過(guò)上下文單詞預(yù)測(cè)中心詞,最大化 P(中心詞|上下文單詞) 。上一篇文章介紹了 Word2Vec,因此不贅述了。

基于淺窗口方法的優(yōu)點(diǎn)是:1. 訓(xùn)練的過(guò)程中采用了預(yù)測(cè)的方式,在詞匯類比任務(wù)中的表現(xiàn)更好;2. 訓(xùn)練更快,能適應(yīng)大數(shù)據(jù)集;3. 能夠?qū)W習(xí)到單詞之間除了相似性之外的復(fù)雜模式。缺點(diǎn)是:1. 不能很好的使用全局統(tǒng)計(jì)信息;2. 需要大量的數(shù)據(jù)集。

可以看到矩陣分解和基于淺窗口的方法都存在一些局限,而 Glove 算法的邏輯就是,結(jié)合了兩類算法的優(yōu)點(diǎn),接下來(lái)重點(diǎn)了解 Glove 算法。

2. Glove 單詞共現(xiàn)矩陣與共現(xiàn)概率矩陣

GloVe模型將 LSA 和 Word2Vec 的優(yōu)點(diǎn)結(jié)合在一起,既利用了語(yǔ)料庫(kù)的全局統(tǒng)計(jì)信息,也利用了局部的上下文特征 (滑動(dòng)窗口)。Glove 首先需要構(gòu)造單詞共現(xiàn)矩陣,并提出了共現(xiàn)概率矩陣 (Co-occurrence Probabilities Matrix)的概念,共現(xiàn)概率矩陣可以通過(guò)單詞共現(xiàn)矩陣計(jì)算。

2.1 Glove 單詞共現(xiàn)矩陣

Glove 中構(gòu)造單詞共現(xiàn)矩陣時(shí)與 LSA 存在一些區(qū)別,需要限定一個(gè)上下文窗口,構(gòu)造的過(guò)程如下:

1.構(gòu)造一個(gè) N×N 的空矩陣,值為0

2.定義一個(gè)滑動(dòng)窗口,大小為 c

3.從語(yǔ)料庫(kù)的第1個(gè)單詞開(kāi)始作為中心詞滑動(dòng)窗口,中心詞在窗口中心

4.中心詞左右兩邊的單詞有 c-1個(gè),為上下文單詞

5.統(tǒng)計(jì)中心詞左右的上下文單詞出現(xiàn)的次數(shù),添加到矩陣中

6.繼續(xù)滑動(dòng)窗口

例如給定句子 “I have a cat” 和上下文窗口大小為 3,則可以構(gòu)造出以下窗口。當(dāng)遍歷到第 3 個(gè)窗口 “have a cat” 時(shí),中心詞是 “a”,此時(shí)要在單詞共現(xiàn)矩陣 X?中加上統(tǒng)計(jì)信息。X(a, have) += 1,X(a, cat) += 1。注意這種方法構(gòu)造出的單詞共現(xiàn)矩陣 X?是對(duì)稱矩陣。在實(shí)際使用的時(shí)候,還可以根據(jù)上下文單詞與中心詞的距離調(diào)整添加到矩陣?X?中的權(quán)重,遠(yuǎn)的詞權(quán)重小,而近的詞權(quán)重大。


中心詞的上下文窗口

2.2 Glove 共現(xiàn)概率矩陣

統(tǒng)計(jì)出共現(xiàn)矩陣?X?后,可以使用?Xij 表示單詞 i 和 j 共同出現(xiàn)的次數(shù),而?Xi 為所有?Xij 的和,Pij =?P(j|i) 表示單詞 j 出現(xiàn)在單詞 i 上下文的概率。

單詞 j 出現(xiàn)在單詞 i 上下文的概率??

Glove 在上述基礎(chǔ)上提出了共現(xiàn)概率 (Co-occurrence)?的概念,共現(xiàn)概率可以理解為上面條件概率的比例?Ratio。以下是原論文中的例子,給定中心詞 ice (冰) 和 steam (水蒸氣),可以通過(guò)不同的上下文單詞 k 與中心詞 ice、steam 條件概率的比例?Ratio(ice, steam, k) 判斷它們之間的關(guān)系。

上下文單詞 k 與中心詞 ice、steam 條件概率的比例??
條件概率比例 Ratio 的計(jì)算方式??

當(dāng)單詞 k 與 ice 相關(guān)性比較大的時(shí)候,例如 k = solid (固體),Ratio(ice, steam, k) 會(huì)比較大;

當(dāng)單詞 k 與 steam 相關(guān)性比較大的時(shí)候,如 k = gas (氣體),Ratio(ice, steam, k) 會(huì)比較??;

當(dāng) k 與 ice、steam 都相關(guān)時(shí),如 k = water (水),Ratio(ice, steam, k) 的值會(huì)接近 1;

當(dāng) k 與 ice、steam 都不相關(guān)時(shí),如 k = fashione (時(shí)尚),Ratio(ice, steam, k) 的值也會(huì)接近 1;

通過(guò)這個(gè)比例?Ratio(ice, steam, k) 可以很好地區(qū)分與 ice 相關(guān)的詞 (solid)、與 steam 相關(guān)的詞 (gas) 和一些對(duì)于 ice、steam 不是很重要的詞 (water、fashion)。因此 Glove 使用了一種重要的思想,即給定中心詞 i,j 和上下文單詞 k,詞向量的學(xué)習(xí)應(yīng)該與單詞條件概率的比例?Ratio(i, j, k) 相關(guān),好的詞向量可以編碼?Ratio(i, j, k) 的相關(guān)信息。

3. Glove 算法的推導(dǎo)

使用 w(x) 表示單詞 x 的詞向量,w'(x) 表示單詞 x 作為上下文時(shí)候的詞向量。則給定中心詞 i,j 和上下文單詞 k,Glove 希望詞向量可以編碼?Ratio(i, j, k)的信息,則會(huì)存在一種函數(shù) F,使得下式成立。

上式右側(cè)部分通過(guò)單詞共現(xiàn)矩陣計(jì)算,接下來(lái)需要簡(jiǎn)化公式。Glove 的作者認(rèn)為,單詞詞向量空間是一個(gè)線性結(jié)構(gòu),例如?“man” - “women”?的差與?“king” - “queen”?的差很相近。因此一種直觀的方法是,通過(guò)詞向量的差值簡(jiǎn)化公式。


上式的右側(cè)是一個(gè)標(biāo)量,而左側(cè) F 函數(shù)里面是向量。為了避免函數(shù) F (F可以很復(fù)雜,例如使用神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)) 學(xué)習(xí)到一些無(wú)用的東西,混淆 Glove 希望得到的線性結(jié)構(gòu),因此進(jìn)一步對(duì)公式進(jìn)行簡(jiǎn)化,將公式 F 函數(shù)里面的也變?yōu)橐粋€(gè)標(biāo)量。


單詞共現(xiàn)矩陣 X?是一個(gè)對(duì)稱矩陣,說(shuō)明中心詞與上下文詞是可以互換位置的,即公式中變換 w(x) 與 w'(x)、X(i, j) 與?X(j, i),公式應(yīng)該不變。但是上面的式子并不滿足這一條件,因此要將上面的公式變成滿足同態(tài)性的。


從式子可以看出 F 是指數(shù)函數(shù),即 F = exp,于是上面的公式可以進(jìn)行變換,得到下面的公式。

注意到上面的式子右側(cè)交換 i 和 k 的位置會(huì)改變公式對(duì)稱性,為了保證對(duì)稱性,作者進(jìn)行了如下變換,增加了兩個(gè)偏置項(xiàng) b(i) 與 b'(k)。

因此最終需要最小化下面的目標(biāo)函數(shù):

目標(biāo)函數(shù)就是平方誤差,其中 f(Xij) 表示損失函數(shù)的權(quán)重,作者采用了上述公式計(jì)算 f(Xij),保證了:1. 兩個(gè)單詞共現(xiàn)次數(shù)越多,損失函數(shù)權(quán)重越大;2. 兩單詞共現(xiàn)次數(shù)超過(guò)一個(gè)閾值時(shí),權(quán)重不繼續(xù)增大,最大權(quán)重為 1;3. 兩個(gè)單詞共現(xiàn)次數(shù)為 0,則權(quán)重為 0。f(Xij) 的圖像如下。

目標(biāo)函數(shù)采用隨機(jī)梯度下降法進(jìn)行優(yōu)化,隨機(jī)選取單詞共現(xiàn)矩陣 X?中的非 0 項(xiàng)進(jìn)行優(yōu)化。X?是一個(gè)稀疏矩陣,Glove 通常優(yōu)化速度比 Word2Vec 要快,因?yàn)?Word2Vec 中語(yǔ)料庫(kù)的每一對(duì) (中心詞、上下文詞) 都是訓(xùn)練樣本,樣本數(shù)量較多。

4. 總結(jié)

Glove 算法結(jié)合了矩陣分解淺窗口方法的優(yōu)點(diǎn),充分地利用了全局的統(tǒng)計(jì)信息局部上下文窗口的優(yōu)勢(shì)。在實(shí)際使用中效果會(huì)比 Word2Vec 要好,而且訓(xùn)練的速度更快。

參考文獻(xiàn)

《GloVe : Global Vectors forWord Representation》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫在最前:本篇學(xué)習(xí)筆記是我在DUTIR情感計(jì)算組組會(huì)準(zhǔn)備主講過(guò)程的一些記錄,通過(guò)閱讀了一些博客以及論文,整理的學(xué)習(xí)...
    Chen_0221閱讀 1,039評(píng)論 0 5
  • 一、詞嵌入背景 詞嵌入(Word Embedding)是一種將文本中的詞轉(zhuǎn)換成數(shù)字向量的方法,為了使用標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)...
    rosyxiao閱讀 21,289評(píng)論 0 15
  • 目前詞向量主要用的技術(shù) word2vec fasttext glove 1 one-host編碼 one-hot編...
    georgeguo閱讀 2,615評(píng)論 0 2
  • 一、GloVe模型 基于統(tǒng)計(jì)的詞向量模型以基于SVD分解技術(shù)的LSA模型為代表,通過(guò)構(gòu)建一個(gè)共現(xiàn)矩陣得到隱層的語(yǔ)義...
    DataArk閱讀 1,101評(píng)論 0 2
  • 因生辰好友帶我來(lái)了念叨很久的鼓浪嶼。鼓浪嶼國(guó)家5A級(jí)景區(qū),世界文化遺產(chǎn),是廈門最大的一個(gè)嶼,因漲潮水涌,浪擊礁石...
    織愁閱讀 317評(píng)論 1 2

友情鏈接更多精彩內(nèi)容