日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识

發布時間:2023/12/19 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 詞向量基礎
    • One-hot represention
    • Distributed Representation
  • word2vec 基礎知識
    • CBOW 和 Skip-gram
    • 霍夫曼樹

系列文章:

  • 【word2vec】篇一:理解詞向量、CBOW與Skip-Gram等知識
  • 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
  • 【word2vec】篇三:基于Negative Sampling 的 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等知识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。