【NLP】Word2Vec筆記(理論)

視頻課/大神筆記的“學後感”

 


筆記類

代碼類

 

 


視頻課:[MXNet/Gluon] 動手學深度學習第十六課:詞向量(word2vec)

  • 視頻主要包括以下內容:詞向量和word2vec工具概述、word2vec的兩種模型——跳字模型(skip-gram)、連續詞袋模型(CBOW),以及兩種高效的訓練方法(以減少訓練開銷)——負採樣(negative sampling)、層序softmax(hierarchical softmax)。視頻主要介紹模型原理,基本未涉及模型的實現。對現階段的個人學習用處不大
  • 可以直接使用已經預訓練好的詞模型,以mxnet框架爲例:
#先用pip安裝mxnet框架
from mxnet.contrib import text

 

視頻課件:NLP到Word2vec實戰

課件鏈接:https://pan.baidu.com/s/1P8Ca2pe47YAnSWHh_SXxHw 密碼:7f3h

課件挺有用的呢,偏基礎,適合菜鳥本菜。

以NLTK爲基礎介紹NLP原理

  • 代碼較多,若需使用NLTK處理文本,可以參考本節PPT。

Word2Vec理論基礎

1.文本離散表示之One-hot

2.文本離散表示之Bag of Words

3.文本離散表示之Bi-gram和N-gram

1.分佈表示之基於矩陣(又稱分佈語義模型)

2.分佈表示之基於神經網絡 (詞向量)

神經網絡語言模型(NNLM)

循環神經網絡語言模型(RNNLM)

谷歌Word2Vec工具 之 CBOW模型和Skip-Gram模型

  • 分佈表示之Word2Vec

  • 分佈表示之Word2Vec改進版(Glove、FastText等)

  • 離散表示VS分佈表示

Word2Vec應用案例

有興趣的同學可以試試gensim的doc2vec;同時使用LSTM神經網絡分類效果會比SVM更好。

Word2Vec在深度學習中的應⽤:⽂本⽣成(Word2Vec + RNN/LSTM) 、⽂本分類(Word2Vec + CNN) 

處理序列數據——RNN循環神經網絡。LSTM是RNN的一種。(關於LSTM,詳見本部分第四課PPT,風格有趣值得看)


大神筆記

[NLP] 秒懂詞向量Word2vec的本質

Word2vec的最終目的:關心模型訓練完後的副產物——模型參數(這裏特指神經網絡的權重),並將這些參數作爲輸入 x 的某種向量化的表示,這個向量便叫做——詞向量。

投影層(相當於隱層)的激活函數是線性的,相當於沒做任何處理(這也是 Word2vec 簡化之前語言模型的獨到之處),我們要訓練這個神經網絡,用反向傳播算法,本質上是鏈式求導,在此不展開說明了。當模型訓練完後,最後得到的其實是神經網絡的權重

輸出的詞向量的維度(與隱含層節點數一致)一般情況下要遠遠小於詞語總數 V 的大小,所以 Word2vec 本質上是一種降維操作——把詞語從 one-hot encoder 形式的表示降維到 Word2vec 形式的表示。

訓練技巧(trick):hierarchical softmax 和 negative sampling 

CBOW訓練之層次softmax
CBOW訓練之negative sampling

 

Skip-Gram

 

 


大神筆記:理解 Word2Vec 之 Skip-Gram 模型

CBOW模型:由上下文預測詞。輸入是8個詞向量,輸出是所有詞的softmax概率。當我們要求出某8個詞對應的最可能的輸出中心詞時,我們可以通過softmax激活函數找到概率最大的詞對應的神經元即可。CBOW模型:訓練模型時,詞向量只是個副產品,確切來說,是CBOW模型的一個參數。 訓練開始的時候,詞向量是個隨機值,隨着訓練的進行不 斷被更新

Skip-Gram模型:和CBOW的思路是反着來的,即輸入是特定的一個詞的詞向量,而輸出是特定詞對應的上下文詞向量。還是上面的例子,我們的上下文大小取值爲4, 特定的這個詞"Learning"是我們的輸入,而這8個上下文詞是我們的輸出。這樣我們這個Skip-Gram的例子裏,我們的輸入是特定詞, 輸出是softmax概率排前8的8個詞。

 

 

神經網絡NLP模型的好處
Word2Vec輸入/輸出數據都是one-hot編碼形式
preview
Word2Vec輸入/輸出數據都是one-hot編碼形式(輸入10000維one-hot編碼向量,輸出10000維概率向量)
隱層的輸出就是每個輸入單詞的“嵌入詞向量”
Word2Vec計算負擔過重的解決辦法(負採樣)
Word2Vec計算負擔過重的解決辦法(負採樣)
one-hot維度災難→distributed representation

 

 

使用T-SNE,PCA等降維可視化展示

詞的分佈,推薦用google的tensorboard,可以多視角查看,如果不想搭建服務,直接訪問這裏。另外可以用python的matplotlib。http://projector.tensorflow.org/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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