word2vec思路很簡單,我覺得網上很多介紹都弄得太複雜、太細節化了,下面說說我的看法。
word2vec說白了就是乙個對映:
w or
d→fv
ec
(1)\tag1 word \stackrel \to vec
word→f
vec(
1)那麼word、vec、f 如何定義呢?
神經網路模型(2) 無法實現標註其訓練資料,如果知道如何標註,這個問題就不用研究了。因此,我們得**乙個間接的方法來訓練這個模型。
我們不妨利用一批實際文字做訓練樣本,這樣做的好處是不需要人為標註。
我們假設乙個 word 的意義取決於句子中該 word 所在句子中前後順序排列的其他單詞。如果兩個 word 在大量的文獻中,他們在句子中所處的前後位置關係很接近,我們認為這兩個 word 的意義是相近的。
從訓練資料,提取 word 很容易,主要問題聚焦在標籤 label 如何生成。
對於乙個 word,我們可以用它所在句子中的其他單詞作為其標籤。作為簡化方案,選擇 word 所在句子前後若干個單詞,比如前後各取 3 個單詞,組成乙個詞袋,來做其標籤。這樣的話,word 的標籤 label 也是乙個 m 維向量。
當然了,同乙個 word 在不同的句子中,就會有不同的標籤。這個沒啥關係,通過大量的訓練,我們總會得到 word 到 label 的分量的乙個概率分布。意義相近的 word,其語境的概率分布也會相近。
把數學模型(1) 擴充套件一下:
w or
d→fv
ec→g
labe
l(2)
\tag2 word \stackrel \to vec \stackrel \to label
word→f
vec→
glab
el(2
) 這樣一來,經過大量語料訓練之後,模型(2)就完成了。當然,也就順便得到了模型(1)。目前我們一般不會直接用自己的語料訓練詞向量,而是使用別人在超大量語料庫上訓好的詞向量,直接用這些現成的詞向量進行下游任務。除了word2vec之外,比較常用的還有glove。至於elmo和bert,它的原理就跟w2v完全不同了,這個需要單獨學習。
通俗理解word2vec
參考 假設詞表中共有4萬個詞彙,現在知道第t個詞前面的n 1個詞,預估第t個詞 首先將n 1 依據詞表進行onehot編碼得到n 1個 1 4萬 的稀疏向量 只有乙個位置為1,其餘為0 然後為每乙個詞 隨機初始化乙個 1 k 維的詞向量c,這n 1個詞向量經過拼接 求和等操作得到乙個1 k維的向量,...
與word2vec 原來word2vec那麼簡單
說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...
word2vec工具的技術演進
google目前開源了一款深度學習工具word2vec,該工具有很多有意思的特性。顧名思義,word2vec就是將詞語轉換為向量,通過轉換為向量,複雜的自然語言處理就可以轉換為簡單的向量代數運算。word2vec技術基於神經網路模型,可以簡單地將神經網路模型分為三層,分別為輸入層 隱含層和輸出層。神...