與word2vec 原來word2vec那麼簡單

2021-10-16 03:08:23 字數 1420 閱讀 3367

說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中, 足以體現它的優勢所在,並且多年一直備受工業界喜愛. 那麼word2vec到底是怎麼個原理的, 發現身邊總是有很多人問, 確不能準確的說出為什麼是兩個矩陣, 到底是怎麼自動反向傳播的, 以及對於softmax之後那麼大的維度資料,是怎麼加速計算的,本文就在這這裡做一簡單概述.

word2vec實際是一種淺層的神經網路, 它有兩種網路結構,分別是cbow(continus bag of words)和skip-gram.

通常我們可以都看到類似這樣的乙個圖

對於兩種模型都可以表示為輸入層(input),對映層(projection)和輸出層(output)組成的神經網路.

在輸入層,乙個詞轉成one-hot向量,在第乙個矩陣上進行計算(w1.shape=(v*n)),然後再通過第二個矩陣(w2.shape=(n*v)),最後輸出的就是乙個超級巨大的softmax.

對於cbow(continuous bag-of-words)這種演算法,通過周圍詞來**中心詞,這個也是使用最廣泛的,而且效果最好,對於輸出的是多個詞的one-hot編碼,然後進多個詞的one-hot求和,然後輸入網路進行計算.

對於skip-gram,是使用當前詞進行周圍詞的**,其他的和cbow一樣的.

word2vec本質上是乙個語言模型,它輸出的節點數是v個,對應v個詞語,理所當然是乙個分類問題, 可惜, 這個分類問題不是那麼容易計算的,對於中文文字大概有5000左右,也就是說模型是乙個5000類的分類了, 可是對於英文呢,300k的詞彙量,想象在分母上指數相加,那個啥,不切合實際吆.

理想總是豐滿的,現實卻是骨感的,方案是設計出來了,但是這樣的計算量,那是現在的計算機能在有限的是時間內計算出來的, 提出該解決方案的作者也是厲害, 不僅提出了解決方案,還搞了兩,智商完全碾壓我們這些nlp小小兵.

對於第一種方案,其實細想是很簡單的, 對於滑動視窗,視窗之外幾百萬的詞完全沒必要都在分母上進行計算,按照現實生活中,乙個單詞僅僅與其周圍的單詞之間有語義關聯,相距太遠的就沒有什麼關聯性了,於是乎, 採用的負取樣(negative sampling)的方案, 對於距離較遠的詞語,只獲取部分詞語, 就可以達到預期效果.

而另一種方案更裡巧妙至極,作者使用乙個哈夫曼樹(hierarchical softmax),對於每乙個葉子結點是乙個詞語的向量,對於常用詞,他的在樹中的深度淺一些,生僻詞在樹上的深度深一些,然後樹上的每乙個結點是乙個矩陣,而每乙個詞語的向量就是他所在路徑向量的相乘.

word2vec學習參考

最近看nlp的東西比較多。就拿現在google 基於神經網路做的 word2vec 作為部落格的開始吧,今後會陸陸續續補充內容。基本是分4塊內容 1.神經網路語言模型 2.語言模型分層優化 3.word2vec 原理 4.google word2vec 看一點寫一點,先扔些參考資料鏈接上去。附上在研...

Word2Vec知識總結

word2vec是乙個產生詞向量的模型,是乙個雙層的神經網路 非常善於找出詞彙的相似度,同時可用於處理之前的技術 像one hot編碼和wordnet 處理不了的語義關係。它可以利用神經網路從大量的無標註的文字中提取有用資訊。我們也可以將它看成是乙個工具,它裡面包含了三種重要的模型 1 nnlm 神...

word2vec學習筆記

常見面試問題 問題 1,介紹一下 word2vec word2vec 的兩個模型分別是 cbow 和 skip gram,兩個加快訓練的 loss 是 hs hierarchical softmax 和負取樣。假設乙個訓練樣本是又核心詞 w和其上下文 context w 組成,那麼 cbow 就是用...