what is word2vec

什麼是Word2vec?Skip-Gram和Continuous Bag of Words(CBOW)又是什麼模型?

什麼是Word2vec?

  用來學習文字向量表達的模型(相關文本文字的特徵向量)。

兩種Word2vec

  • 連續Bag-of-Words(CBOW)
    • 從上下文來預測一個文字
  • Skip-Gram
    • 從一個文字來預測上下文

  其實,用一個向量標識word已經提出有一段時間了,Tomas Mikolov的word2vec算法的一個不同之處在於,他把一個word映射到高維(50到300維),並且在這個維度上有了很多有意思的語言學特性,比如單詞”Rome”的表達vec(“Rome”),可以是vec(“Paris”)-vec(“France”)+vec(“Italy”)的計算結果。

  Word2vec的示意圖如下:
word2vec|center|200*150
  顯然,word2vec是隻有一個隱層的全連接神經網絡,用來預測給定單詞的關聯度大的單詞。

  WI的大小是V*N,V是單詞詞典的大小,每次輸入是一個單詞,N是你自己設定的隱層大小。

  舉個例子,如果我們語料中僅僅有這3句話:“the dog saw a cat”,“the dog chased the cat”,“the cat climbed a tree”。那麼單詞詞典中只有8個單詞:the, dog, saw, a, cat, chased, climbed, tree。

  那麼V=8,輸入層的初始就是:
[0,0,0,0,0,0,0,0]代表:[“the”,”dog”,”saw”,”a”,”cat”,”chased”,”climbed”,”tree”]。輸入[“”,”dog”,”“,”“,”“,”“,”“,”“]就可以表示爲:[0,1,0,0,0,0,0,0],輸入[“”,”“,”saw”,”“,”“,”“,”“,”“]就可以表示爲:[0,0,1,0,0,0,0,0],如果是在字典中有的,就用1表示。

  WO的大小是N*V,於是,通過訓練完畢的WI和WO,只要輸入單詞,就能預測出最符合這個上下文的下一個單詞。當然這個單詞一定是字典中有的,也就是說在大小爲V的字典中選出概率最大的那個單詞。

  那麼,連續Bag-of-Words(CBOW)又是怎麼從上下文來預測一個文字呢?其實就是它就是通過拷貝上面word2vec的輸入層做到的:
continuous bag-of-words|center|150*100

  這樣,拷貝次數C就是這個上下文短語的長度,即單詞個數,每一個輸入\(X_i\)就是一個單詞。輸入層和隱含層之間就多了好多個WI矩陣,每個矩陣就代表了這個單詞對隱層的影響和貢獻。最後N*V矩陣依然能預測出最可能的下一個單詞。

  Skip-Gram就是把上圖顛倒過來,如果你要預測的輸出上下文的單詞個數是C,那麼就像CBOW一樣,拷貝C次輸出矩陣就可以了。

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