自然語言處理 Word2Vec的理解

2022-06-20 10:18:11 字數 2889 閱讀 8856

筆者在學習了吳恩達,以及斯坦福cs224n後,對於word2vec有了一些粗淺的理解,如有不合理之處請大家多多指正。這裡就記記筆記啦:

在自然語言處理當中,一種是利用one-hot vector(獨熱編碼)進行詞彙表徵,假設有30000個單詞,那麼hotel是其中的第7889個單詞,那麼整個表示hotel的向量,只有在一維向量的索引第7889處,數字為1,其餘為0.這樣計算機就可以知道這個單詞是什麼了,因為計算機和我們人類並不一樣,他並不會清楚每乙個單詞的含義,我們只能夠使用數字來表示單詞。

但是用這種方式我們並不能夠讓計算機知道兩個單詞之間的相似程度,以及對應的關係。比如english和chinese可以歸類為同一類的詞語,而women對應這man。這個時候,單詞的特徵表示向量誕生了!

我們的乙個單詞,可以用其他不用的單詞來進行表示,如下所示:

我們乙個單詞可以用其他單詞不同的權重來表示,比如對於man而言,其gender的特性為-1,royal為0.01說明不太royal,food一般吃得比女性較多,因此food的引數為0.09,而women的food引數為0.01。通過這種方式就可以知道每個單詞的具體語義了。最終,某乙個單詞的向量表示會長成這樣;

在我們的word2vec當中,分為了兩種演算法,一種是skip-gram,一種是cbow(詞袋模型)演算法,這裡講解skip-gram演算法。

假設我們有這樣的兩句話:

在這兩句話當中都同時出現了banking這個單詞,但是這兩句話卻表示的是不同的意思。skip-gram演算法認為,只要知道了中心詞banking,我們就可以去**這個詞旁邊詞語是什麼的概率。

那麼這個模型是幹啥用的呢?假設有乙個詞語,有了word2vec這個模型,我們就可以用於知道這個單詞周圍每乙個單詞的概率是多少。(這個是我個人的理解,如有不對,請多多指正)

因此我們定義中心單詞為wt,不是中心單詞的單詞為w-t,這樣我們就可以通過條件概率得到單詞wt周圍其中任何乙個詞語的概率,context可以表示wt旁的任意乙個單詞。

其中j是我們的loss function,概率越大,則j越小,我們loss function就擬合得越好。

同樣的,我們可以使用wt+2來表示距離wt右邊兩個詞距的詞語,wt-2來表示距離wt左邊兩個詞距的詞語。因此我們有這樣的乙個例子:

通過banking這個中心詞,通過神經網路訓練就可以得到其餘詞彙的概率啦!而且這些詞彙在訓練開始之前,我們是不知道其概率是啥的.現在我們用更深刻的數學形式來表示整個過程:

用j(theta)這個函式進行梯度下降和優化,就可以得到theta的最優值,從而使得對j(theta)求導的概率值最大,這個概率值也就是中心單詞wt旁邊所有單詞最有可能出現的單詞的概率之和,概率之和最大了,就可以細分出每乙個單詞的概率。其中的引數theta其實就是中心單詞的向量表示的引數。

由於在優化的時候,我們借助了神經網路,因此最後一定會有乙個根據softmax層用於輸出每乙個單詞的概率。softmax整個同時對於我媽呢來說已經非常熟悉了。公式如下:『

公式當中的uw表示的是除了center word之外的所有的words,進行遍歷。vc表示的是center word的特徵向量。整個skip-gram的神經網路結構如下:

首先我們會有某個單詞的one-hot vectorwt,然後經過乙個引數矩陣,用整個one-hot vector乘以w整個引數矩陣(訓練出來的),是所有單詞的特徵表示向量的集合,這樣就可以得到我們想要的單詞的特徵表示向量(從one-hot 到feature representation),然後得到的vc乘上周圍單詞的特徵向量,通過softmax得到周圍單詞出現的概率,選取概率最大的那乙個變成one-hot vector,經歷這樣的乙個過程,我們就會知道周圍單詞有哪些會出現了!

skip-gram:乙個詞語w作為輸入,輸出的單詞數量可以人為規定,且輸出的為最有可能在w旁邊的上下文

cbow:多個詞語作為輸入,輸出乙個單詞

這兩者的區別可以如下所示的圖來表示;

最後,我們通過word2vec訓練出詞彙表徵之後,講訓練完後所有的詞彙的特徵表示進行視覺化,就會得到這樣的效果,具有相似單詞屬性的單詞將會聚集在一起,形成一簇:

與word2vec 原來word2vec那麼簡單

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

word2vec學習參考

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

Word2Vec知識總結

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