常見面試問題
問題 1,介紹一下 word2vec
word2vec 的兩個模型分別是 cbow 和 skip-gram,兩個加快訓練的 loss 是 hs(hierarchical softmax )和負取樣。
假設乙個訓練樣本是又核心詞 w和其上下文 context(w) 組成,那麼 cbow 就是用 context(w)去** w;而 skip-gram 則反過來,是用 w去** context(w) 裡的所有詞。
hs 是試圖用詞頻建立一棵哈夫曼樹,那麼經常出現的詞路徑會比較短。樹的葉子節點表示詞,共詞典大小多個,而非葉子結點是模型的引數,比詞典個數少乙個。要**的詞,轉化成**從根節點到該詞所在葉子節點的路徑,是多個二分類問題。
對於負取樣,則是把原來的 softmax 多分類問題,直接轉化成乙個正例和多個負例的二分類問題。讓正例** 1,負例** 0,這樣子更新區域性的引數。
問題 2,對比 skip-gram 和 cbow
訓練速度上 cbow 應該會更快一點,因為每次會更新 context(w) 的詞向量,而 skip-gram 只更新核心詞的詞向量。
skip-gram 對低頻詞效果比 cbow,因為是嘗試用當前詞去**上下文,當前詞是低頻詞還是高頻詞沒有區別。但是 cbow 相當於是完形填空,會選擇最常見或者說概率最大的詞來補全,因此不太會選擇低頻詞。
skip-gram 在大一點的資料集可以提取更多的資訊。總體比 cbow 要好一些。
問題 3,對比 hs 和 負取樣
負取樣更快一些,特別是詞表很大的時候。
問題 4,負取樣為什麼要用詞頻來做取樣概率?
因為這樣可以讓頻率高的詞先學習,然後帶動其他詞的學習。
問題 5,為什麼訓練完有兩套詞向量,為什麼一般只用前一套?
對於 hierarchical softmax 來說,哈夫曼樹中的引數是不能拿來做詞向量的,因為沒辦法和詞典裡的詞對應。負取樣中的引數其實可以考慮做詞向量,因為中間是和前一套詞向量做內積,應該也是有意義的。但是考慮負樣本取樣是根據詞頻來的,可能有些詞會採不到,也就學的不好。
問題 6,對比字向量和詞向量
字向量其實可以解決一些問題,比如未登陸詞,還有做一些任務的時候還可以避免分詞帶來的誤差。
而詞向量它的語義空間更大,更加豐富,語料足夠的情況下,詞向量是能夠學到更多的語義的。
與word2vec 原來word2vec那麼簡單
說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...
word2vec學習參考
最近看nlp的東西比較多。就拿現在google 基於神經網路做的 word2vec 作為部落格的開始吧,今後會陸陸續續補充內容。基本是分4塊內容 1.神經網路語言模型 2.語言模型分層優化 3.word2vec 原理 4.google word2vec 看一點寫一點,先扔些參考資料鏈接上去。附上在研...
文字挖掘 word2vec 筆記
xin rong 的 word2vec parameter learning explained 重點推薦!理論完備由淺入深非常好懂,且直擊要害,既有 high level 的 intuition 的解釋,也有細節的推導過程 一定要看這篇 一定要看這篇 一定要看這篇 如果用one hot encod...