天天看點

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

前言

Word Embedding是整個自然語言處理(NLP)中最常用的技術點之一,廣泛應用于企業的模組化實踐中。我們使用Word Embedding能夠将自然文本語言映射為計算機語言,然後輸入到神經網絡模型中學習和計算。如何更深入地了解以及快速上手生成Word Embedding呢?本文對Word Embedding原理和生成方法進行了講解。

一、Word Embedding初探

什麼是Word Embedding

一句話概述,Word Embedding即詞向量,是一種函數映射關系。我們知道,在機器學習中,特征都是以數值的形式進行傳遞的。同樣的,在NLP中,文本特征也需要被映射成數值向量。例如,我們将單詞“你好”進行Word Embedding後,可以把其映射成一個5維向量:你好 ——>  (0.1, 0.5, 0.3, 0.2, 0.2)。

詞向量的映射過程

一般來說,我們采用“詞 ——> 向量空間1 ——> 向量空間2”的映射過程實作文本單詞向量化。整個映射過程可以分為兩步:

1、詞 ——> 向量空間1

該步驟解決把一個詞轉換成vector(數值向量)的問題。例如,将文本單詞轉換成One-Hot向量。

2、向量空間1 ——> 向量空間2

該步驟解決vector的優化問題,即在已經有了一個vector的情況下,尋求更好的辦法優化它。

二、使用One-Hot和SVD求Word Embedding方法

One-Hot(詞——>向量空間1)

One-Hot是目前最常見的用于提取文本特征的方法之一。本文使用One-Hot完成映射過程的第一步,即詞——>向量空間1。

我們将語料庫中的每一個詞都作為一個特征列,如果語料庫中有V個詞,則有V個特征列,例如:

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

在這一映射過程中,One-Hot存在以下缺點:1)容易産生稀疏特征;2)容易引發次元爆炸;3)使得詞間失去語義關系。

例如,按照常識,旅店(hotel)和汽車旅店(motel)間應該是具備某種相似性的,但是我們的映射結果卻表明他們的向量積為0。旅店(hotel)和汽車旅店(motel)之間的相似性等于其和貓(cat)之間的相似性,這顯然是不合理的。

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

改進方向:

1)嘗試将詞向量映射到一個更低維的空間;

2)同時保持詞向量在該低維空間中具備語義相似性,如此,越相關的詞,它們的向量在這個低維空間裡就能靠得越近。

SVD(向量空間1——>向量空間2)

1、如何表示出詞和詞間的關系

SVD,即奇異值分解(Singular Value Decomposition),是在機器學習領域廣泛應用的算法,它不僅可以用于降維算法中的特征分解,也廣泛應用于推薦系統,以及自然語言處理等領域,是很多機器學習算法的基石。本文使用SVD來解決vector的優化問題。

我們首先構造了一個親和矩陣(affinity matrix),先保證在不降維的情況下,能夠反映出詞和詞間的關系。構造親和矩陣的方式有很多種,這裡列舉較常見的兩種方式。

✦方式一

假設你有N篇文章,一共有M個去重詞,則可以構造親和矩陣如下:

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

其中每一個值表示單詞在某篇文章中的出現次數。這個矩陣可以反映詞的一些性質。比如一個詞是“播種”,那麼它可能在“農學”類的文章裡出現得多一些;一個詞是“電影”,那麼它可能在“藝術”類的文章中出現得多一些。

✦方式二

假設我們有M個去重單詞,則可構造M*M的矩陣,其中每個值表示相應的兩個單詞在一篇文章裡共同出現的次數,例如:

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

2、對親和矩陣進行分解

有了親和矩陣,就可以對其進行SVD分解,這個目的就是進行降維了,結果如下:

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

我們把原親和矩陣X(左邊)分解成了右邊的三部分,右邊的三個部分從左到右可以這麼了解:

✦U矩陣:從舊的高維向量空間到低維向量空間的一種轉換關系;

✦ σ矩陣:方差矩陣。每一清單示低維空間中每一個坐标軸的資訊蘊含量。方差越大,說明在該坐标軸上資料波動顯著,則資訊蘊含量越豐富。在降維時,我們首先考慮保留方差最大的若幹個坐标軸;

✦ V矩陣:每個詞向量的新表示方式。在和前兩個矩陣相乘後,得到最終的詞向量表示方式。

此時,右邊的矩陣依然是V維的,還沒有實作降維。是以,正如前文所說,我們取top k大的方差列,将U,σ和V三個矩陣按照方差從大到小的順序排列好,這樣就能得到最終的降維後的結果了:

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

3、SVD缺點

1)親和矩陣的次元可能經常變,因為總有新的單詞加進來,每加進來一次就要重新做SVD分解,是以這個方法不太通用;2)親和矩陣可能很稀疏,因為很多單詞并不會成對出現。

改進思路:

1)在降低稀疏性方面,可以不僅僅關注和一個單詞有上下文關系的那些詞;2)對于一個模型從沒有見過一個單詞,則考慮從上下文關系中猜到它的資訊,以增加通用性。

沿着這兩個思路,我們可以考慮引入CBOW和Skip-Gram,來求word embedding。

三、CBOW和Skip-Gram求Word Embedding

CBOW的全稱是continuous bag of words(連續詞袋模型),其本質也是通過context word(背景詞)來預測一個單詞是否是中心詞(center word)。Skip-Gram算法則是在給定中心詞(center word)的情況下,預測一個單詞是否是它的上下文(context)。

本文主題是embedding,這裡我們提到預測中心詞和上下文的最終目的還是通過中心詞和上下文,去訓練得到單詞語義上的關系,同時把降維做了,這樣就可以得到最終想要的embedding了。

CBOW

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

思路:

  • 假設已知一個center word和一串context
  • 可嘗試訓練一個矩陣V,它的作用是把單詞映射到新的向量空間中去(這就是我們想要的embedding!)
  • 同時還可訓練一個矩陣U,它的作用是把embedding後的向量映射到機率空間,計算一個詞是center word的機率

訓練過程:

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

過程詳述:

(1)假設X的C次方是中間詞,且context的長度為m,那麼context樣本可以表示成

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

其中每一個元素都是一個One-Hot vector。

(2)對于這些One-Hot變量,我們希望可以用Word Embedding将它映射到一個更低維的空間。這裡要補充介紹一下,Word Embedding是一種function,映射到更低維的空間是為了降低稀疏性,并保持詞中的語義關系。

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

(3)取得embedding後輸入 vector的平均值。之是以要取平均值,是因為這些單詞都具有上下文聯系,為了訓練友善,我們可以用一個更緊湊的方法表示它們。

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

(4)這樣,我們就實作了一個文本在低維空間中的平均embedding。

接下來,我們需要訓練一個參數矩陣,對這個平均embedding進行計算,進而輸出平均embedding中每一個詞是中心詞的機率。

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding
詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

CBOW一條龍訓練過程回顧

softmax訓練打分參數矩陣

交叉熵:

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

skip-gram

詞向量Word Embedding原理及生成方法一、Word Embedding初探二、使用One-Hot和SVD求Word Embedding方法三、CBOW和Skip-Gram求Word Embedding

skip-gram 已知中心詞,預測context。此處不再贅述。

總結

本文對Word Embedding原理和生成方法進行了講解,對Word Embedding生成過程中的相關問題進行了解答,希望能幫助讀者提升Word Embedding的實踐效率。

如今,機器學習快速發展,并應用到衆多行業場景。作為一家資料智能企業,個推在大規模機器學習和自然語言處理領域持續探索,也将Word Embedding應用到标簽模組化等方面。目前,個推已經建構起覆寫數千種标簽的立體畫像體系,為移動網際網路、品牌營銷、公共服務等領域的客戶開展使用者洞察、人口分析、資料化營運等持續提供助力。

後續個推還将繼續分享在算法模組化、機器學習等領域的幹貨内容,請保持關注哦。

繼續閱讀