https://www.cnblogs.com/randomstring/p/10439384.html
(原創)
word2vec是將單詞轉為向量,並為后續應用機器學習的算法做准備。
經典的模型有兩種,skip-gram和cbow,
其中,skip-gram是給定輸入單詞來預測上下文,而cbow相反,是給定上下文來預測輸入單詞。下面主要介紹skip-gram:
1.skip-gram訓練詞對
skip-gram首先設定所謂一個值( skip_window),作為一個單詞選取它的上下文的單詞的數量,
這些詞對,作為訓練數據,如 “the quick brown fox jumps over lazy dog”,對於quick,有
(quick,the),(quick,brown),(quick,fox)三個詞對,作為quick的訓練標簽。
2.word嵌入到k維空間,k維向量化
接下來是對語料中單詞的向量化處理,首先將語料中不重復的單詞都拿出來成為詞匯表,
然后對其進行one-hot編碼,如10000個單詞,其中a編碼為 [1,0,0,0....],這個時候單詞已經轉為了向量,但是只是這樣並不能看出任意兩詞之間的相關性,而且詞匯表如果大的話,導致維度災難。
Hinton提出了映射到K維向量的思想,基於這個思想用一個簡單的多分類的神經網絡來訓練得到這些K為向量。
輸入層是n個one-hot編碼的詞,輸出也是one-hot編碼的詞(對skipgram的詞對進行訓練),
隱含層為 k個神經元節點,含有n*k的權重矩陣,經過這層將詞向量轉換為k維向量,
再經softmax輸出為n維的預測概率向量,優化殘差函數,訓練權重系數。
最終訓練結束后,這個n*k的權重矩陣的每一行就作為該單詞的k維向量了。