詞向量Word Embedding原理及生成方法

前言

Word Embedding是整個天然語言處理(NLP)中最經常使用的技術點之一,普遍應用於企業的建模實踐中。咱們使用Word Embedding可以將天然文本語言映射爲計算機語言,而後輸入到神經網絡模型中學習和計算。如何更深刻地理解以及快速上手生成Word Embedding呢?本文對Word Embedding原理和生成方法進行了講解。算法

1、Word Embedding初探

什麼是Word Embedding

一句話概述,Word Embedding即詞向量,是一種函數映射關係。咱們知道,在機器學習中,特徵都是以數值的形式進行傳遞的。一樣的,在NLP中,文本特徵也須要被映射成數值向量。例如,咱們將單詞「你好」進行Word Embedding後,能夠把其映射成一個5維向量:你好 ——> (0.1, 0.5, 0.3, 0.2, 0.2)。網絡

詞向量的映射過程

通常來講,咱們採用「詞 ——> 向量空間1 ——> 向量空間2」的映射過程實現文本單詞向量化。整個映射過程能夠分爲兩步:機器學習

一、詞 ——> 向量空間1

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

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

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

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

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

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

咱們將語料庫中的每個詞都做爲一個特徵列,若是語料庫中有V個詞,則有V個特徵列,例如:spa

在這一映射過程當中,One-Hot存在如下缺點:1)容易產生稀疏特徵;2)容易引起維度爆炸;3)使得詞間失去語義關係。ip

例如,按照常識,旅店(hotel)和汽車旅店(motel)間應該是具有某種類似性的,可是咱們的映射結果卻代表他們的向量積爲0。旅店(hotel)和汽車旅店(motel)之間的類似性等於其和貓(cat)之間的類似性,這顯然是不合理的。
it

改進方向:io

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

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

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

一、如何表示出詞和詞間的關係

SVD,即奇異值分解(Singular Value Decomposition),是在機器學習領域普遍應用的算法,它不只能夠用於降維算法中的特徵分解,也普遍應用於推薦系統,以及天然語言處理等領域,是不少機器學習算法的基石。本文使用SVD來解決vector的優化問題。

咱們首先構造了一個親和矩陣(affinity matrix),先保證在不降維的狀況下,可以反映出詞和詞間的關係。構造親和矩陣的方式有不少種,這裏列舉較常見的兩種方式。

方式一

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

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

方式二

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

二、對親和矩陣進行分解

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

咱們把原親和矩陣X(左邊)分解成了右邊的三部分,右邊的三個部分從左到右能夠這麼理解:

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

σ矩陣:方差矩陣。每一列表示低維空間中每個座標軸的信息蘊含量。方差越大,說明在該座標軸上數據波動顯著,則信息蘊含量越豐富。在降維時,咱們首先考慮保留方差最大的若干個座標軸;

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

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

三、SVD缺點

1)親和矩陣的維度可能常常變,由於總有新的單詞加進來,每加進來一次就要從新作SVD分解,所以這個方法不太通用;2)親和矩陣可能很稀疏,由於不少單詞並不會成對出現。

改進思路:

1)在下降稀疏性方面,能夠不只僅關注和一個單詞有上下文關係的那些詞;2)對於一個模型從沒有見過一個單詞,則考慮從上下文關係中猜到它的信息,以增長通用性。

沿着這兩個思路,咱們能夠考慮引入CBOW和Skip-Gram,來求word embedding。

3、CBOW和Skip-Gram求Word Embedding

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

本文主題是embedding,這裏咱們提到預測中心詞和上下文的最終目的仍是經過中心詞和上下文,去訓練獲得單詞語義上的關係,同時把降維作了,這樣就能夠獲得最終想要的embedding了。

CBOW

思路:

假設已知一個center word和一串context

可嘗試訓練一個矩陣V,它的做用是把單詞映射到新的向量空間中去(這就是咱們想要的embedding!)

同時還可訓練一個矩陣U,它的做用是把embedding後的向量映射到機率空間,計算一個詞是center word的機率。

訓練過程:

過程詳述:

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

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

(2)對於這些One-Hot變量,咱們但願能夠用Word Embedding將它映射到一個更低維的空間。這裏要補充介紹一下,Word Embedding是一種function,映射到更低維的空間是爲了下降稀疏性,並保持詞中的語義關係。

(3)取得embedding後輸入 vector的平均值。之因此要取平均值,是由於這些單詞都具備上下文聯繫,爲了訓練方便,咱們能夠用一個更緊湊的方法表示它們。

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

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

CBOW一條龍訓練過程回顧

softmax訓練打分參數矩陣

交叉熵:

skip-gram


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

總結

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

現在,機器學習快速發展,並應用到衆多行業場景。做爲一家數據智能企業,個推在大規模機器學習和天然語言處理領域持續探索,也將Word Embedding應用到標籤建模等方面。目前,個推已經構建起覆蓋數千種標籤的立體畫像體系,爲移動互聯網、品牌營銷、公共服務等領域的客戶開展用戶洞察、人口分析、數據化運營等持續提供助力。

後續個推還將繼續分享在算法建模、機器學習等領域的乾貨內容,請保持關注哦。

相關文章
相關標籤/搜索