word embedding and word2vec 理解

該篇博文純屬個人觀點,本着共同交流學習的想法,其中有錯誤和不足還請大佬們指正。

在NLP處理中,詞向量是網絡的基本輸入,那麼該如何獲得詞向量呢?

    兩種方法,一種是one-hot representation(中文:獨熱表示,不建議記中文名,以後均是英文),另一種是distribute representation。

一、One-hot representation

    問什麼稱之爲one-hot就是因爲它每個詞之間的表示都是獨立的,比如我們有10000個詞[a,an,alone,be,base........,often,usual.....],那麼在One-hot representation表示方法下,an的向量表示[0,1,0,0,.........0,0.....],其餘的自己腦補下,也就是隻有自己所在的位置爲1,其餘的都爲0。這種方法的缺點很明顯,首先(1)上下文之間沒有連接關係,這裏舉一個Andrew.Ng老師的例子,句子1:He said Teddy is a good teacher.   句子2:He said Teddy bear is lovely. 一個是人名一個是泰迪熊,所以上下文之間的關係是非常重要的,而one-hot中的0\1顯然不具有這個能力。(2)每個詞的向量過大,比如上例中的“an”,它就是一個10000的vector。

二、distribute representation

    先從大的方面說,它又分爲三種表示方法,基於矩陣的表示、基於聚類的表示、基於神經網絡的表示。其中基於矩陣常見的模型是Glove(Global Vector)(乍然一看名字挺唯美PS:這裏分享一個有趣的小知識,大家知道神經網絡的前身叫什麼嘛,感知機/多層感知機!但是一直不溫不火的,最後取了個高大上的名字一下子火了(當然還有很重要的學術因素在推動),可見名字的重要性啊。)基於聚類的就不說了,沒什麼有名的。基於神經網絡的有CBow,skip-gram,negative sampling模型。

    下面來通俗的解釋一下在NLP學習中的幾個名詞

    1、什麼是word embedding

         eg: I have 10000 words , and I set 300 features manually, just like this

 manwomenkingapple
gender-11-10.01
age0.070.020.30.04
fruit0.0020.010.010.97
......    
......    

    拿“king”這個詞舉例,它的feature 1 爲gender(性別),很明顯國王是男的,這裏爲了區分男女所以有了正負;feature  2爲age,國王的年齡一般偏大,肯定不會是小孩,可以把這裏的數值大小當成可信度;feature 3爲fruit,國王怎麼能是一個水果呢,所以這裏數值趨近於0.

    所以“king”這個詞的向量爲[-1,0.3,0.01,.......](300*1),向量的大小就是feature的數量,是不是相比於one-hot小了很多。

所謂的word embedding,我理解的爲:人工做出來一個300D的空間,然後每個詞按照其300個feature數值大小,嵌入該空間裏去。

2、什麼事word2vec

     其實word2vec是一個工具包,裏面包含了幾種word embedding的方法,其中這些方法中最突出的模型就是前面提到的CBow,skip-gram,negative sampling。利用這三種神經網絡訓練的到的embedding vector特別好,維度小,便於計算,同時上下文之間的聯繫又好。(這纔是我們最終想要的東西)

最後得到vector就可以輸入到你的RNN或其他網絡裏面繼續訓練了(也可以下載網上現成的,可能效果更好)。

(由於時間過於了一段時間,記憶有些模糊,理解錯誤之處還請指出)


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