自從 google 的 tomas mikolov 在《efficient estimation of word representation in vector space》提出 word2vec,就成為了深度學習在自然語言處理中的基礎部件。word2vec 的基本思想是把自然語言中的每乙個詞,表示成乙個統一意義統一維度的短向量。至於向量中的每個維度具體是什麼意義,沒人知道,也無需知道,也許對應於世界上的一些最基本的概念。但是,讀**去理解 word2vec 的模型生成,依然有些雲裡霧裡,於是只好求助於讀**,然後就茅塞頓開,與大家分享。
任何一門語言,都是由一堆的詞組成,所有的詞,構成了乙個詞彙表。詞彙表,可以用乙個長長的向量來表示。詞的個數,就是詞彙表向量的維度。那麼,任何乙個詞,都可以表示成乙個向量,詞在詞彙表中出現的位置設為1,其它的位置設為0。但是這種詞向量的表示,詞和詞之間沒有交集,用處不大。
word2vec 的訓練模型,看穿了,是具有乙個隱含層的神經元網路(如下圖)。它的輸入是詞彙表向量,當看到乙個訓練樣本時,對於樣本中的每乙個詞,就把相應的在詞彙表中出現的位置的值置為1,否則置為0。它的輸出也是詞彙表向量,對於訓練樣本的標籤中的每乙個詞,就把相應的在詞彙表中出現的位置的值置為1,否則置為0。那麼,對所有的樣本,訓練這個神經元網路。收斂之後,將從輸入層到隱含層的那些權重,作為每乙個詞彙表中的詞的向量。比如,第乙個詞的向量是(w1,1 w1,2 w1,3 ... w1,m),m是表示向量的維度。所有虛框中的權重就是所有詞的向量的值。有了每個詞的有限維度的向量,就可以用到其它的應用中,因為它們就像影象,有了有限維度的統一意義的輸入。
訓練 word2vec 的思想,是利用乙個詞和它在文字中的上下文的詞,這樣就省去了人工去標註。**中給出了 word2vec 的兩種訓練模型,cbow (continuous bag-of-words model) 和 skip-gram (continuous skip-gram model)。
首先看cbow,它的做法是,將乙個詞所在的上下文中的詞作為輸入,而那個詞本身作為輸出,也就是說,看到乙個上下文,希望大概能猜出這個詞和它的意思。通過在乙個大的語料庫訓練,得到乙個從輸入層到隱含層的權重模型。如下圖所示,第l個詞的上下文詞是i,j,k,那麼i,j,k作為輸入,它們所在的詞彙表中的位置的值置為1。然後,輸出是l,把它所在的詞彙表中的位置的值置為1。訓練完成後,就得到了每個詞到隱含層的每個維度的權重,就是每個詞的向量。
word2vec **庫中關於cbow訓練的**,其實就是神經元網路的標準反向傳播演算法。
接著,看看skip-gram,它的做法是,將乙個詞所在的上下文中的詞作為輸出,而那個詞本身作為輸入,也就是說,給出乙個詞,希望**可能出現的上下文的詞。通過在乙個大的語料庫訓練,得到乙個從輸入層到隱含層的權重模型。如下圖所示,第l個詞的上下文詞是i,j,k,那麼i,j,k作為輸出,它們所在的詞彙表中的位置的值置為1。然後,輸入是l,把它所在的詞彙表中的位置的值置為1。訓練完成後,就得到了每個詞到隱含層的每個維度的權重,就是每個詞的向量。
word2vec **庫中關於skip-gram訓練的**,其實就是神經元網路的標準反向傳播演算法。
乙個人讀書時,如果遇到了生僻的詞,一般能根據上下文大概猜出生僻詞的意思,而 word2vec 正是很好的捕捉了這種人類的行為,利用神經元網路模型,發現了自然語言處理的一顆原子彈。
與word2vec 原來word2vec那麼簡單
說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...
文字挖掘 word2vec 筆記
xin rong 的 word2vec parameter learning explained 重點推薦!理論完備由淺入深非常好懂,且直擊要害,既有 high level 的 intuition 的解釋,也有細節的推導過程 一定要看這篇 一定要看這篇 一定要看這篇 如果用one hot encod...
word2vec學習參考
最近看nlp的東西比較多。就拿現在google 基於神經網路做的 word2vec 作為部落格的開始吧,今後會陸陸續續補充內容。基本是分4塊內容 1.神經網路語言模型 2.語言模型分層優化 3.word2vec 原理 4.google word2vec 看一點寫一點,先扔些參考資料鏈接上去。附上在研...