word2vec與詞嵌入


詞嵌入:將一個單詞(word)轉換爲一個向量(vector)表示。
word2vec:是實現詞嵌入的一些算法的集合。

爲什麼需要做詞嵌入

獨熱編碼

獨熱編碼即 One-Hot 編碼,又稱一位有效編碼,其方法是使用N位狀態寄存器來對N個狀態進行編碼,每個狀態都有它獨立的寄存器位,並且在任意時候,其中只有一位有效。
舉個例子,假設我們有四個樣本(行),每個樣本有三個特徵(列),如圖:
在這裏插入圖片描述
feature_1有兩種可能的取值,比如是男/女,這裏男用1表示,女用2表示。feature_2 和feature_3各有4種取值。one-hot編碼就是保證每個樣本中的單個特徵只有1位處於狀態1,其他的都是0。上述狀態用one-hot編碼如下圖所示:
在這裏插入圖片描述
優點:一是解決了分類器不好處理離散數據的問題,二是在一定程度上也起到了擴充特徵的作用。
缺點:在文本特徵表示上有些缺點就非常突出了。首先,它是一個詞袋模型,不考慮詞與詞之間的順序(文本中詞的順序信息也是很重要的);其次,它假設詞與詞相互獨立(在大多數情況下,詞與詞是相互影響的);最後,它得到的特徵是離散稀疏的,向量維度非常大。

詞嵌入:可以將onehot這種高維詞向量嵌入到一個低維空間。
映射必須滿足以下性質:
(1)這個映射是單射;
(2)映射之後的向量不會丟失之前的那種向量所含的信息。

詞嵌入

詞嵌入一般有兩種方法:一種方法基於“計數”計算一個詞語與另外一個詞語同時出現的概率,將同時出現的詞映射到向量空間的相近位置;另一種方法基於“預測”,從一個詞或幾個詞出發,預測它們可能的相鄰詞組。
又有兩種基於預測的方法CBOWSkip-Gram

CBOW模型的訓練輸入是某一個特徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的一個詞的詞向量。
Skip-Gram模型和CBOW的思路是反着來的,即輸入是特定的一個詞的詞向量,而輸出是特定詞對應的上下文詞向量。CBOW對小型數據庫比較合適,而Skip-Gram在大型語料中表現更好。

CBOW(Continuous Bag-of-Words)

CBOW又叫做連續詞袋模型,之所以叫詞袋,是因爲不考慮單詞的順序問題。核心思想:利用某個詞的上下文預測這個詞。
CBOW的訓練模型如圖所示:
在這裏插入圖片描述
輸入層:上下文單詞的onehot。假設單詞向量空間dim爲V,上下文單詞個數爲C,C爲窗口的大小,因此xckx_{ck}是1 * V的向量。
隱含層:所有onehot分別乘以共享的輸入權重矩陣W。 W是V * N的矩陣,N爲自己設定的數,初始化權重矩陣W。所得的向量相加求平均作爲隱層向量, size爲1*N,N一般爲100。
輸出層:乘以輸出權重矩陣W’(N * V),得到向量 1 * V, 對輸出層向量應用softmax得到V-dim概率分佈。概率最大的index所指示的單詞爲預測出的中間詞target word與true label的onehot做比較,誤差越小越好(根據誤差更新權重矩陣)。所以,需要定義loss function(一般爲交叉熵代價函數),採用梯度下降算法更新W和W’。
訓練完畢後,輸入層的每個單詞與矩陣W相乘得到的向量的就是我們想要的詞向量word embedding,這個矩陣(所有單詞的word embedding)也叫做look up table(其實這個look up table就是矩陣W自身),任何一個單詞的onehot乘以這個矩陣都將得到自己的詞向量。有了look up table就可以直接查表得到單詞的詞向量了。

基於損失函數CBOW改進

上述整個網絡相當於是一個V類的分類器,V是單詞表中單詞的數量,這個值非常的大,所以比較難以訓練,通常會簡單修改網絡的結構,將V類分類變成兩分類。前者使用的是softmax損失,後者選取一些“噪聲詞”作爲負樣本,進行二分類,使用的是NCE損失。

Skip-Gram

下面的例子顯示了一些訓練樣本(單詞對),這些單詞對將從“The quick brown fox jumps over the lazy dog.”獲取。這裏採用了一個小的窗口大小2,。標爲高亮藍色的是我們的輸入單詞。
在這裏插入圖片描述
假如字典的大小是10000,那麼模型的輸入是一個110000的向量,輸出也是一個110000的向量。
在這裏插入圖片描述
輸入層:特定單詞的onehot。例如“the”,即對“the”的上下文進行預測,上面產生了關於“the”的兩組訓練詞對,假如先拿一組詞對 (‘the’, ‘quick’) 來訓練神經網絡。(假設單詞向量空間dim爲V,因此輸入是1 * V的向量。)
隱含層:特定單詞的onehot乘以權重矩陣W。 (W是V * N的矩陣,N爲自己設定的數,初始化權重矩陣W)。所得的向量爲隱層向量, size爲1 * N。
輸出層:乘以輸出權重矩陣W’ (N * V),得到向量 (1 * V), 處理得到V-dim概率分佈。概率最大的index所指示的單詞爲預測出的上下文詞(target word)與true label(即’quick’)的onehot做比較,誤差越小越好(根據誤差更新權重矩陣)。
模型的輸出概率代表着到我們詞典中每個詞有多大可能性跟input word同時出現。舉個例子,如果我們向神經網絡模型中輸入一個單詞“中國“,那麼最終模型的輸出概率中,像“英國”、 ”俄羅斯“這種相關詞的概率將遠高於像”蘋果“、”蟈蟈“非相關詞的概率。因爲”英國“、”俄羅斯“在文本中更大可能在”中國“的窗口中出現。我們將通過給神經網絡輸入文本中成對的單詞來訓練它完成上面所說的概率計算。
在這裏插入圖片描述

Hierarchical Softmax

Negative Sampling

爲了加速訓練過程,Google論文裏真實實現的word2vec對模型提出了兩種改進思路,即Hierarchical Softmax模型和Negative Sampling模型。

Airbnb Listing Embedding

Wordvec的應用

參考:
CBOW:
https://blog.csdn.net/u010665216/article/details/78724856
https://www.jianshu.com/p/471d9bfbd72f
https://blog.csdn.net/u012762419/article/details/79366052
《Efficient Estimation of Word Representations in Vector Space》
Airbnb Listing Embedding
《Real-time Personalization using Embeddings for Search Ranking at Airbnb》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章