fasttext 與 word2vec、doc2vec 的區別

 

 

 

 

 

相似:

  • 圖模型結構很像,都是採用embedding向量的形式,得到word的隱向量表達。
  • 都採用很多相似的優化方法,比如使用Hierarchical softmax優化訓練和預測中的打分速度。

不同點:

  • 1.word2vec是一個無監督算法,而fasttext是一個有監督算法。
  • 2.模型的輸入層:word2vec的輸入層是上下文單詞;而fasttext 對應的整個句子/文本的單詞及其n-gram特徵。word2vec要求訓練樣本是基於上下文帶有“序”的屬性,而fasttext使用的是詞袋模型的思想,使用的是n-gram的無序屬性。
  • 3.隱層:對於cbow,隱層採用簡單的求和;對於fastText,隱層是由輸入層求和並平均
  • 4.模型的輸出層:word2vec的輸出層,對應的是每一個term,計算某term的概率最大;而fasttext的輸出層對應的是分類的label。不過不管輸出層對應的是什麼內容,起對應的vector都不會被保留和使用。
  • 5.word2vec的學習目標是得到詞向量,而fasttext的學習目標是得到文本的分類結果。Word2vec的目的是得到詞向量,該詞向量 最終是在輸入層得到,輸出層對應的 h-softmax也會生成一系列的向量,但最終都被拋棄,不會使用。fastText則充分利用了h-softmax的分類功能,遍歷分類樹的所有葉節點,找到概率最大的label(一個或者N個)

 

Fasttext模型有個致命的問題,就是丟失了詞順序的信息,因爲隱層是通過簡單的求和取平均得到的。爲了彌補這個不足,Fasttext增加了N-gram的特徵。

 

n-gram的怎麼處理:

Fasttext採用了Hash桶的方式,把所有的n-gram都哈希到buckets個桶中,哈希到同一個桶的所有n-gram共享一個embedding vector。Ref:https://blog.csdn.net/kingzone_2008/article/details/81429501

3. 字符級n-gram帶來兩點好處: Ref:https://zhuanlan.zhihu.com/p/129756562

  • 對於低頻詞生成的詞向量效果會更好。因爲它們的n-gram可以和其它詞共享。
  • 對於訓練詞庫之外的單詞,仍然可以構建它們的詞向量。可以疊加它們的字符級n-gram向量。

4、爲什麼fastText甚至可以爲語料庫中未出現的單詞產生詞向量
fastText一個重要的特性便是有能力爲任何單詞產生詞向量,即使是未出現的,組裝的單詞。主要是因爲fastText是通過包含在單詞中的子字符substring of character來構建單詞的詞向量,正文中也有論述,因此這種訓練模型的方式使得fastText可以爲拼寫錯誤的單詞或者連接組裝的單詞產生詞向量

 

doc2vec相比於word2vec的c-bow模型,區別點有:

  • 訓練過程中新增了paragraph id,即訓練語料中每個句子都有一個唯一的id。paragraph id和普通的word一樣,也是先映射成一個向量,即paragraph vector。paragraph vector與word vector的維數雖一樣,但是來自於兩個不同的向量空間。在之後的計算裏,paragraph vector和word vector累加或者連接起來,作爲輸出層softmax的輸入。在一個句子或者文檔的訓練過程中,paragraph id保持不變,共享着同一個paragraph vector,相當於每次在預測單詞的概率時,都利用了整個句子的語義。
  • 在預測階段,給待預測的句子新分配一個paragraph id,詞向量和輸出層softmax的參數保持訓練階段得到的參數不變,重新利用梯度下降訓練待預測的句子。待收斂後,即得到待預測句子的paragraph vector。

  doc2vec相比於word2vec的skip-gram模型,區別點爲:在sentence2vec裏,輸入都是paragraph vector,輸出是該paragraph中隨機抽樣的詞。

 

 

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