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-gram 和 CBOW。從直觀上理解,Skip-Gram是給定input word來預測上下文。而CBOW是給定上下文,來預測input word。接下來會分別介紹下這兩種模型的大致思想。htm
word2vec主要的實現方式有兩種,分別爲 Hierarchical Softmax 和 Negative sampling。他們和 CBOW 、 skip-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.