【RNN】理解word2vec中的 Skip-Gram

在處理文字模型的時候,將文字轉化成可以放進模型的數字,最簡單方法是用 one-hot 編碼。但是這種方法有弊端,轉化後的每個詞之間在數字上都是相互獨立的,任何一對詞的one-hot向量的餘弦相似度都爲0,任何詞之間都沒有關係。

Google團隊發表的 word2vec 工具。word2vec工具主要包含兩個模型:跳字模型(skip-gram)和連續詞袋模型(continuous bag of words,簡稱CBOW)。值得一提的是,word2vec詞向量可以較好地表達不同詞之間的相似和類比關係。

下面就介紹一下Skip-Gram。

訓練樣本

確認窗口大小,比如這裏設置爲2。指定某個詞後,例 brown,與其窗口爲2的範圍內的其他詞可組成一對Training Sample,例 (brown,the) (brown,quick) (brown,fox) (brown,jumps)。這樣每組Training Sample就對應每次訓練的 (輸入,輸出)

採樣

網絡結構

上面確定好了輸入與輸出後,接下來需要將輸入與輸出的詞轉化爲向量表示。這裏我們均使用 one-hot 方法轉換。假設詞庫中有10000個words,輸入 xx 和輸出 yy 都是長度爲10000的 one-hot 向量。

網絡中包括一個隱藏層,和一個softmax輸出層。隱藏層數量自己設置,但這裏的隱藏層數量決定最終word2vec 後的vector的數量(後面會詳細解釋)。softmax輸出層的數量必須與詞庫大小相同,這裏是10000。

網絡結構確定後,把 xx 放入網絡中訓練,輸出的結果是長度10000的向量 y^\hat y。由於softmax的存在,所以結果已經不再稀疏,,而是由不同的概率值組成。y^\hat y 中每一個概率值代表着詞庫中每個word出現在單詞 xx 相鄰位置的概率。使用真實的 yy 與預測值 y^\hat y 的交叉熵損失函數進行優化參數。

完成訓練過程後,得到優化後的參數 WW,只有一個隱藏層,所以也只有一個 WW 。接下來講一下 WW 與輸出結果的關係。
結構

輸出結果

假設隱藏層節點數設置爲300,隱藏層所對應的 WW 維度 爲 10000*300 。最終訓練結果中,隱藏層 W 的結果,就是總的詞庫對應的詞向量。爲什麼這麼說呢?

這是由於每個詞最初由長度爲10000的 one-hot 向量表示,除了對應的位置爲1外,其餘全部爲0,此時每個詞大小爲 [1, 10000] 。每個詞與總的 WW 相乘後,得到的長度爲300的新向量則是我們想要的對應 詞向量表示結果了。這就讓隱藏層中的信息變成了一張“查找表”,我們給定 one-hot 輸入,得到相應的“查找結果”。只是“查找結果”的大小和數字表示都變了,變的不再稀疏,而是由實實在在的非零數字表示。

當然,這裏的隱藏層節點數量300 ,可以根據需求自己進行設置。

輸出

理解

其實某種程度上可以說,這是個“假的”監督學習訓練模型。雖然整個流程是完整的,有輸入和輸出,有損失函數和優化方法。但是我們想要的結果並不是模型本身,因爲並沒有其他測試樣本需要帶入模型。想要的結果只是隱藏層的參數 WW 信息,是可以讓 one-hot 向量轉化成一個新的向量的信息,因爲它使得新向量所能表達的含義更加豐富。而且整個神經網絡模型中是沒有激活函數的。

再舉個例子,假設有多個訓練樣本(juice,apple) (juice,pear) (juice,banana) ,這裏指定中心詞是 juice ,規定窗口內有apple、pear、banana等單詞。這些訓練樣本的特點是,共同的輸入 juice 對應多個不同詞的輸出。如果用這些樣本訓練後,得到的概率結果中,apple、pear、banana處的概率值肯定都相對較高。從而使得它們在對應隱藏層中的參數可能是相似的,這樣才能得到相似的結果。如果我們用這些“水果”單詞對應的新向量去計算它們之間餘弦相似度的話,肯定是相對較高的。這也從另一個角度解釋了,爲什麼word2vec方法得到的結果可以讓單詞之間具有相似性和類比關係。

其實這個模型確實還挺簡單的。只是如果不能從根本上理解這麼做的目的和意義,思維轉不過來的話,可能會很難理解。本文只是想通過簡單的語言解釋Skip-Gram模型,並沒有去堆公式來證明。公式的話我另一篇博客 中有詳細描述。

當然,上面描述這個模型的方法有弊端,每次訓練的時候,輸入和輸出計算量都是針對整個詞庫大小來的,假如詞庫有一百萬個詞,計算量就會變得非常大。針對這個問題,有兩種高效訓練的方法:負採樣(negative sampling)和層序softmax(hierarchical softmax),以後有機會再介紹。

部分文字引用自 詞向量 - - gluon.ai
部分圖片引用自 Word2Vec Tutorial - The Skip-Gram Model

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