word2vec 過程理解 詞向量的獲取

2021-07-25 09:37:09 字數 1301 閱讀 4413

網上有很多這方面的資源,詳細各位都能夠對於word2vec了解了大概,這裡只講講個人的理解,

目的:通過對於乙個神經網路的訓練,得到每個詞對應的乙個向量表達

基於:這個神經網路,是基於語言模型,即給定t個詞的字串s,計算s是自然語言的概率p(w1,w2,…,wt)而構建的,更直白點,就是通過輸入wi的上下相鄰的n個詞(n-gram方法),來就算輸出是wi的概率

方案:cbom和skip-gram兩種,每一種有分別有霍夫曼和nec的2種實現方式,所以總共有4種實現模式。

網路:

cbom 霍夫曼:

輸入:與wi相鄰的n個節點的one-hot表達向量維度為v(v為語料庫的單詞總數)

過程:

step1:n個v維向量與v*m維權重向量wc相乘,得到n個m維的向量(m就是最後每個詞所對應的詞向量的維度,自己設定)

step2:n個m維的詞向量求和得到乙個m維向量作為霍夫曼層的輸入

step3:下面就是網上很多資料講解的乙個算p(wi|contenti)的過程了,在此不講具體的,霍夫曼樹是為了是計算p(wi|contenti)的時間複雜度降到log級,樹上的每個非葉子節點上都有乙個m維的向量引數,與step2得到的輸出相乘相加通過乙個sigmod的啟用函式來算的此節點的概率。

輸出:p(wi|contenti)的概率

其中loss是cross-entropy,然後反向傳播,更新網路中的引數。

詞向量就是step1中的輸出,乙個詞對應乙個m維的向量。

cbom nec:

step1和step2一樣,只不過優化計算p(wi|contenti)的時候,沒有採用霍夫曼樹,而是通過對語料庫的資料取樣來計算,而不是遍歷整個語料庫。

skip-gram和cbow剛好相反,

輸入是乙個單詞

輸出其上下相鄰單詞的概率

詞向量也蘊含在one-hot到m維向量的轉換中。

強烈建議看一下:

word2vec parameter learning explained

* 除此之外附上幾個較為有用的word2vec資料:*

word2vec中的數學原理詳解

深度學習word2vec學習筆記

word2vec 構建中文詞向量

利用Word2Vec訓練詞向量過程

先明確一點,選用不同的詞向量作為模型的初始值,效果的差異非常大!那麼怎麼產生乙個好的詞向量呢?參看文章 1 英文的詞向量可以訓練,也可以用google訓練好的那個模型。2 但是中文就不行了,沒有乙個公布乙個權威的詞向量。語料對詞向量的影響比模型的影響要重要得多得多得多 重要的事說三遍 很多 都提到語...

關於word2vec和詞向量的理解

1 如何產生詞向量 word embedding 原始語料某個漢字的one hot編碼向量 1 v 和word2vec模型中間引數矩陣w v n 相乘得到詞向量 1 n n 2 訓練得到的word2vec 模型的意義是什麼?3 弊端 word2vec 與一般的共現計數不同,word2vec主要來 單...

詞向量之載入word2vec和glove

1 google用word2vec預訓練了300維的新聞語料的詞向量googlenews vecctors negative300.bin,解壓後3.39個g。可以用gensim載入進來,但是需要記憶體足夠大。載入google訓練的詞向量 import gensim model gensim.mod...