【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识
文章目錄
- 詞向量基礎
- One-hot represention
- Distributed Representation
- word2vec 基礎知識
- CBOW 和 Skip-gram
- 霍夫曼樹
系列文章:
由于計算機不能直接對各種字符進行運算,為此需要將詞的表示進行一些轉換。因此,在自然語言處理中,通常需要對輸入的語料進行一些預處理:
其中,如何對詞匯進行表示是很關鍵的問題,糟糕的表示方法容易導致所謂的 “Garbage in, garbage out”。
詞向量基礎
對詞匯的表示,常見的有One-hot represention 和 Distributed Representation 兩種形式。
One-hot represention
One-hot represention 將詞匯用二進制向量表示,這個向量表示的詞匯,僅僅在詞匯表中的索引位置處為1,其他地方都為0。例子如下圖所示:
這樣的方式表示詞匯雖然簡單,但是也有如下缺點:
- 單詞的上下文丟失了。
- 沒有考慮頻率信息。
- 詞匯量大的情況下,向量維度高且稀疏,占用內存。
Distributed Representation
Distributed Representation 也可以理解為Word Embedding,具體形式為:
注意到,使用Word Embedding得到的向量維度遠小于詞匯表的個數。如果將上面的向量在空間中表示,可以得到:
上圖告訴我們,通過詞向量之間的距離可以度量他們之間的關系,意思相近的詞在空間中的距離比較近。出現這種現象的原因是,我們最后得到的詞向量在訓練過程中學習到了詞的上下文。
那么,Distributed Representation 要如何得到?
之前介紹的神經網絡語言模型可以得到。
接下來要介紹的 word2vec 就是另一種更受歡迎的方法。
word2vec 基礎知識
word2vec 是 Google 于 2013 年推出的一個用于獲取 word vector 的工具包,它簡單、高效,因此引起了很多人的關注。在正式講解 word2vec 前,還需要對一些基本概念有所了解。
CBOW 和 Skip-gram
CBOW 的思想是輸入是某一個詞wtw_twt?的上下文相關的詞對應的詞向量,而輸出就是wtw_twt?的詞向量。如下圖所示:
可以看到,模型對輸入的上下文詞匯進行了求和運算,使用求和后的向量表示上下文的信息,然后學習wtw_twt?的向量表示。
Skip-Gram 的思想是和 CBOW 的思路是反著來的,即輸入是特定的一個詞wtw_twt?的詞向量,而輸出是特定詞對應的上下文詞向量。
word2vec 根據輸入輸出形式的不同,可以分為CBOW (Continuous Bag-of-Words) 與Skip-Gram兩種模型。
霍夫曼樹
一般情況下,詞匯表中詞匯的數量是非常多的,如果用傳統的DNN+Softmax的方式來訓練詞向量,計算量太大了。于是,word2vec 使用的數據結構是用霍夫曼樹來代替隱藏層和輸出層的神經元。霍夫曼樹的葉子節點起到輸出層神經元的作用,葉子節點的個數即為詞匯表的小大, 而內部節點則起到隱藏層神經元的作用。具體的內容,我們在之后會講解。這里首先需要了解下霍夫曼樹。
從實際的例子出發,看看如何構造霍夫曼樹:
假設有(a,b,c,d,e,f)共6個詞匯,詞匯的權值用詞頻表示:wa=16,wb=4,wc=8,wd=6,we=20,wf=3w_a=16,w_b=4,w_c=8,w_d=6,w_e=20,w_f=3wa?=16,wb?=4,wc?=8,wd?=6,we?=20,wf?=3,我們假設這6個詞匯是6棵只要根節點的森林集合。于是構造步驟如下:
首先是權值最小的b和f合并,得到的新樹,根節點權重是7。將b于f這兩個樹從列表中刪除,并且添加剛剛得到的合并的樹。此時森林里共有5棵樹,根節點權重分別是16,8,6,20,7。此時根節點權重最小的6,7對應的樹合并,得到新子樹,依次類推,最終得到下面的霍夫曼樹:
如何編碼呢?
一般對于一個霍夫曼樹的節點(根節點除外),可以約定左子樹編碼為0,右子樹編碼為1.如上圖,則可以得到c的編碼是00。
注意,在word2vec中,約定編碼方式和上面的例子相反,即約定左子樹編碼為1,右子樹編碼為0,同時約定左子樹的權重不小于右子樹的權重。
那么霍夫曼樹有什么好處呢?
一般得到霍夫曼樹后我們會對葉子節點進行霍夫曼編碼,由于權重高的葉子節點越靠近根節點,而權重低的葉子節點會遠離根節點。這樣我們的高權重節點編碼值較短,而低權重值編碼值較長。這保證的樹的帶權路徑最短,即我們希望越常用的詞擁有更短的編碼。
有了上面的基礎知識,就可以對word2vec進行講解了。相比于用傳統的神經網絡的方法來訓練詞向量,于word2vec提出了有兩種改進方法:一種是基于 Hierarchical Softmax 算法的,另一種是基于 Negative Sampling 算法的。
參考文章:
word2vec模型
word2vec 中的數學原理詳解
總結
以上是生活随笔為你收集整理的【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3dsmax怎么去除uv材质 3dsma
- 下一篇: 【word2vec】篇二:基于Hiera