對Word2Vec的理解

1. word embeddinghtml

       在NLP領域,首先要把文字或者語言轉化爲計算機能處理的形式。通常來講計算機只能處理數值型的數據,因此,在NLP的開始,有一個很重要的工做,就是將文字轉化爲數字,把這個過程稱爲 word embedding網絡

       word embedding即詞嵌入,就是將一個詞或者特徵轉化爲一個向量。函數

      詞嵌入通常有兩種方式:最簡單和原始的方式one-hot;word2vec方式。下面咱們簡單回顧一下one-hot方式,重點講解word2vec詞嵌入方式。學習

2. one-hotspa

       one-hot的思想很簡單,其長度爲字典大小,每一個維度對應一個字典裏的每一個詞,除了這個詞對應維度上的值是1,其餘元素都是0。One-hot vector雖然簡單,可是用處有限。當特徵數量比較大的時候,one-hot向量就會很長。對於線性的分類器還好,可是模型一旦更加複雜,計算的複雜度就會很快的增加到咱們沒法承受的程度。同時,因爲特徵向量中不一樣維度之間是徹底無關的,這就會致使特徵向量沒法刻畫單詞間的類似性,從而致使模型的泛化能力較差。
3d

 3. word2veccode

        word2vec 也是word embedding的一種,它會將一個詞映射到一個固定維度的向量中(不隨語料的變化而變化),而且可以在必定程度上反映出詞與詞之間的關係Word2vec是一個用於處理文本的雙層神經網絡。它的輸入是文本語料,輸出則是一組向量:該語料中詞語的特徵向量。雖然Word2vec並非深度神經網絡,但它能夠將文本轉換爲深度神經網絡可以理解的數值形式。orm

      word2vec目前主要有兩種模型,分別叫作 Skip-gramCBOW。從直觀上理解,Skip-Gram是給定input word來預測上下文。而CBOW是給定上下文,來預測input word。接下來會分別介紹下這兩種模型的大致思想htm

   word2vec主要的實現方式有兩種,分別爲 Hierarchical SoftmaxNegative sampling。他們和 CBOWskip-gram 兩兩結合,共能夠組成4種不一樣的模型。咱們對基於Hierarchical Softmax的兩種模型進行原理分析。blog

3.1 Skip-gram

      skip-gram 主要實現方式就是,經過輸入一個詞x,預測它的上下文的詞。

       文本信息:「我」, 「想」, 「學習」, 「計算機」, 「技術

      在這個例子中,就至關於當輸入「學習」這個詞的時候,要輸出「我」,「想」,「計算機」,「技術」四個詞(假設設定的窗口大小爲5)。 具體結構以下圖所示:

 

 

 

 

 

 

3.2 CBOW

    CBOW 的思想則和skip-gram相反,它是經過上下文的詞,去預測當前的詞。

文本信息:「學習計算機技術

    在這個例子中,就至關於輸入爲上文「我」,「想」,和下文「計算機」,「技術」,要輸出「學習」這個詞(假設設定的窗口大小爲5)。 具體結構以下:

 

 

 

3.3基於 Hierarchical Softmax 的 CBOW 實現方式及原理

該模型主要由3層組成

1) 第一層:

  每個輸入項表示上下文中的詞的2c個向量(假設窗口大小爲5,則有4個輸入,即c=2)

  每一個輸入變量爲一個m維的向量,即對應輸入的詞的詞向量

 

2)第二層:

 將上一層輸入的2c個向量求和累加

 

3) 第三層:

    輸出層,輸出爲一個二叉樹(Huffman樹),對應一個葉子節點(每一個葉子節點對應一個詞,因此葉子節點共有D個,D表示詞的種類數量)

 

  

那麼輸出層爲何要輸出一個二叉樹,以及它是怎麼輸出的一個二叉樹。下面舉一個例子:

當要輸出 足球 這個詞的時候,這個模型其實並非直接輸出 "1001" 這條路徑,而是在每個節點都進行一次二分類。

至關於將最後輸出的二叉樹變成多個二分類的任務。而路徑中的每一個根節點都是一個待求的向量。 也就是說這個模型不只須要求每一個輸入參數的變量,還須要求這棵二叉樹中每一個非葉子節點的向量,固然這些向量都只是臨時用的向量。

因此計算過程能夠表示爲機率的累乘。 分類的單元使用的是邏輯迴歸,公式以下:

被分爲正類的機率:

 

被分爲負類的機率:

 

上面公式中的θ即爲二叉樹中非葉子節點的臨時參數。

以「足球」爲例,從根節點到葉子節點要通過4個分類器,分別爲:

 

因此可獲得:

 

完整的公式能夠表示爲:

 

 

根據上面的公式能夠獲得對數似然函數爲:

 

而後經過隨機梯度上升法進行訓練,更新輸入的w

 

 經過不斷的計算和更新,最終獲得的word2vec模型。

 

 3.4基於 Hierarchical Softmax 的 Skip-gram 實現方式及原理

    Skip-gram 的模式跟 CBOW 的基本同樣,因此會結合上面的簡略的說明一下。

 

 

 

一樣也是由3層組成的。惟一的區別就是將第一層輸入層輸入變量從輸入2c個值變爲輸入一個值。

Skip-gram的模型定義爲:

即輸出的全部上下文的機率之積。

在這裏 P(u∣w)的計算方式就是跟CBOW中說到的同樣。

因此能夠獲得最終的對數似然函數爲:

 

 

接下來就是跟上面同樣的使用隨機梯度上升的方式,不斷更新各項參數。最終獲得最終的word2vec模型。

參考資料

https://www.read138.com/archives/732/f13js0re9wu6zyi7/

https://www.cnblogs.com/DjangoBlog/p/7903683.html

Mikolov T, Sutskever I, Chen K, et al.Distributed representations of words and phrases and theircompositionality[C]//Advances in neural information processing systems. 2013:3111-3119.

相關文章
相關標籤/搜索