fastText初探
- 目錄:
- 1、應用場景
- 2、優缺點
- 3、FastText的原理
- 4、FastText詞向量與word2vec對比
目錄:
1、應用場景
fastText是一種Facebook AI Research在16年開源的一個文本分類器。 其特點就是fast。相對于其它文本分類模型,如SVM,Logistic Regression和neural network等模型,fastText在保持分類效果的同時,大大縮短了訓練時間。
2、優缺點
3、FastText的原理
fastText 方法包含三部分:模型架構、層次 Softmax 和 N-gram 特征。
fastText 模型輸入一個詞的序列(一段文本或者一句話),輸出這個詞序列屬于不同類別的概率。
序列中的詞和詞組組成特征向量,特征向量通過線性變換映射到中間層,中間層再映射到標簽。
fastText 在預測標簽時使用了非線性激活函數,但在中間層不使用非線性激活函數。
fastText 模型架構和 Word2Vec 中的 CBOW 模型很類似。不同之處在于,fastText 預測標簽,而 CBOW 模型預測中間詞。
第一部分:fastText的模型架構類似于CBOW,兩種模型都是基于Hierarchical Softmax,都是三層架構:輸入層、 隱藏層、輸出層。
CBOW模型又基于N-gram模型和BOW模型,此模型將W(t?N+1)……W(t?1)W(t?N+1)……W(t?1)作為輸入,去預測W(t)
fastText的模型則是將整個文本作為特征去預測文本的類別。
第二部分:層次之間的映射
將輸入層中的詞和詞組構成特征向量,再將特征向量通過線性變換映射到隱藏層,隱藏層通過求解最大似然函數,然后根據每個類別的權重和模型參數構建Huffman樹,將Huffman樹作為輸出。
具體的數學求解過程可參考博客:
https://blog.csdn.net/yick_liao/article/details/62222153
第三部分:fastText的N-gram特征
常用的特征是詞袋模型(將輸入數據轉化為對應的Bow形式)。但詞袋模型不能考慮詞之間的順序,因此 fastText 還加入了 N-gram 特征。
“我 愛 她” 這句話中的詞袋模型特征是 “我”,“愛”, “她”。這些特征和句子 “她 愛 我” 的特征是一樣的。
如果加入 2-Ngram,第一句話的特征還有 “我-愛” 和 “愛-她”,這兩句話 “我 愛 她” 和 “她 愛 我” 就能區別開來了。當然,為了提高效率,我們需要過濾掉低頻的 N-gram。
在fastText 中一個低維度向量與每個單詞都相關。隱藏表征在不同類別所有分類器中進行共享,使得文本信息在不同類別中能夠共同使用。這類表征被稱為詞袋(bag of words)(此處忽視詞序)。在 fastText中也使用向量表征單詞 n-gram來將局部詞序考慮在內,這對很多文本分類問題來說十分重要。
舉例來說:fastText能夠學會“男孩”、“女孩”、“男人”、“女人”指代的是特定的性別,并且能夠將這些數值存在相關文檔中。然后,當某個程序在提出一個用戶請求(假設是“我女友現在在兒?”),它能夠馬上在fastText生成的文檔中進行查找并且理解用戶想要問的是有關女性的問題。
4、FastText詞向量與word2vec對比
FastText= word2vec中 cbow + h-softmax的靈活使用
靈活體現在兩個方面:
分類的label。不過不管輸出層對應的是什么內容,起對應的vector都不會被保留和使用;
兩者本質的不同,體現在 h-softmax的使用。
Word2vec的目的是得到詞向量,該詞向量 最終是在輸入層得到,輸出層對應的 h-softmax 也會生成一系列的向量,但最終都被拋棄,不會使用。
fasttext則充分利用了h-softmax的分類功能,遍歷分類樹的所有葉節點,找到概率最大的label(一個或者N個)。
參考:
https://blog.csdn.net/sinat_26917383/article/details/54850933
https://blog.csdn.net/yick_liao/article/details/62222153
總結
以上是生活随笔為你收集整理的fastText初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Java8实战》笔记(03):Lamb
- 下一篇: LeetCode - Easy - 11