Skip-Gram模型

Stanford CS224n的課程資料關於word2vec的推薦閱讀裏包含Word2Vec Tutorial - The Skip-Gram Model 這篇文章。這裏針對此文章做一個整理。網絡

word2vec作了什麼事情

從字面意思上來講就是將單詞word轉爲向量vector,經過詞向量來表徵語義信息。學習

word2vec模型

這篇文章主要介紹的是Skip-Gram模型,除此以外word2vec還有CBOW模型。

如上圖所示,這兩種模型的區別就是ui

  • Skip-Gram是給定輸入詞來預測上下文
  • 而CBOW則是給定上下文來預測輸入詞


那麼如何來訓練Skip-Gram模型呢?上面這張圖使用的句子是:"The quick brown fox jumps over the lazy dog.",經過逐一選定句子中的單詞做爲輸入詞,將與之相鄰的詞提取出來,進行學習。圖中的窗口大小爲2,也即每次向前和向後各看2個詞(若是存在的話)。編碼

一些細節

輸入參數:一般會將文本中的詞進行編碼表示,如常見的有將文本庫中的單詞轉換爲詞彙表,這樣能夠將每一個單詞經過one-hot編碼表示。好比總共有10000個詞,則每一個單詞最終均可以經過一個10000維向量表示。

如上圖所示,網絡的輸入是一個單詞,10000維的one-hot向量,最終輸出的結果也是一個10000維的向量,其中的值表示對應的詞做爲輸入詞的上下文的機率,也就是說最後輸出的是輸入詞的鄰近詞的機率分佈。3d

隱藏層

從上面的圖也能夠看出隱藏層中有300個神經元,也就是說輸入詞被表示爲300維的一個向量。

隱藏層中的權重矩陣大小爲10000*300,一個10000維的one-hot輸入詞經過權重矩陣映射到了一個300維的向量,而這個向量正是所謂的word vector,對應於上圖中右邊的每一行。orm

另外值得提的是,若是將110000的輸入向量與10000300的權重矩陣做乘積的話,其實效率挺低的。由於one-hot向量中只有1個元素是1,因此不難發現其實結果就是權重矩陣中的某一行。blog

輸出層

在隱藏層中計算獲得的300維的向量最終會再通過輸出層變爲10000維的向量,這裏使用的是softmax迴歸,最終輸出的結果全部機率之和爲1。

上圖展現了輸入詞爲ants,計算輸出詞爲car的機率。ip

參考

Word2Vec Tutorial - The Skip-Gram Modelget

相關文章
相關標籤/搜索