fasttext工作原理

2021-10-06 08:46:18 字數 2896 閱讀 5633

fasttext:是facebook於2023年開源的乙個詞向量計算和文字分類工具,在文字分類任務中,fasttext(淺層網路)往往能取得和深度網路相媲美的精度,卻在訓練時間上比深度網路快許多數量級,在標準的多核cpu上, 能夠訓練10億詞級別語料庫的詞向量在10分鐘之內,能夠分類有著30萬多類別的50多萬句子在1分鐘之內

fasttext 組成:第一部分為詞嵌入,也就是無監督學習詞向量。另一部分是分類,是有監督學習

fasttext 模型執行過程:輸入乙個詞的序列,輸出這個詞序列屬於不同類別的概率。序列中的詞和片語組成特徵向量,特徵向量通過線性變換對映到中間層,中間層再對映到標籤。fasttext 在**標籤時使用了非線性啟用函式,但在中間層不使用非線性啟用函式。fasttext 模型架構和 word2vec 中的 cbow 模型很類似。不同之處在於,fasttext **標籤,而 cbow 模型**中間詞。

fasttext實際工作中的使用

fasttext是乙個被用於對詞向量和句子分類進行高效學習訓練的工具庫,採用c++編寫,並支援訓練過程中的多程序處理。你可以使用這個工具在監督和非監督情況下訓練單詞和句子的向量表示。這些訓練出來的詞向量,可以應用於許多處理資料壓縮的應用程式,或者其他模型的特徵選擇,或者遷移學習的初始化

fasttext的優勢是:效果好,速速快,核心原因是使用了詞內n-gram(sub-word,n-gram),第二是用了hierararchical softmax,介紹如下:

fasttext模型也只有三層:輸入層、隱含層、輸出層(hierarchical softmax),輸入都是多個經向量表示的單詞,輸出都是乙個特定的target,隱含層對多個詞向量的疊加平均(其中x1,x2,…,xn−1,xn表示乙個文字中的n-gram向量,每個特徵是詞向量的平均值)

hierararchical softmax

背景:當類別的數量巨大時,計算線性分類器的計算量相當大,計算的複雜度是o(kh)k表示類別的數量,h表示文字特徵的維度,基於huffman樹的hierararchical softmax 可以將計算複雜度降為o(hlog(k)),在用n個訓練樣本進行訓練時,根據每個類別出現的次數作為權重來構建huffman樹,出現次數多的類別樣本,路徑就短,出現次數少的來別樣本,經過計算,單個樣本在訓練時所需要的時間複雜度是hlog(k),但fasttext在**時,計算複雜度還是o(kh),只是**時的計算量減小了

fasttext是根據標籤(label)和頻率建立霍夫曼樹;(label出現的頻率越高,huffman樹的路徑越短),huffman樹中每一葉子結點代表乙個label

hierararchical softmax的思想實際是將乙個全域性的多分類問題,轉化成若干個二分類的問題,從而將計算的複雜度從o(v)蔣到o(log(v))每個二元分類問題,由乙個基本的邏輯回歸單元實現,如下圖所示,從根節點開始,每乙個中間結點(標記成灰色)都是乙個邏輯回歸單元,根據它的輸出來選擇下一步是向左還是向右走,下圖示例中實際上走了一條「左一左一右一」的路線,從而找到單詞w2,而最終輸出單詞w2的概率,等於中間若干邏輯回歸單元輸出概率的連乘積

fasttext 可以用於文字分類和句子分類。不管是文字分類還是句子分類,我們常用的特徵是詞袋模型。但詞袋模型不能考慮詞之間的順序,因此 fasttext 還加入了 n-gram 特徵,對於輸入的上下文的每乙個詞都進行基於詞的n-gram,之後將所有的n-gram和原詞相加,來代表上下文資訊,這樣的好處是可以有字首或者字尾等語言形態上的相似性,建立詞與詞之間的聯絡

sub-word:將乙個單詞打散到字元級別,然後利用字元的n-gram資訊捕獲字元之間的順序關係,希望以此豐富單詞內部更細微的語義

示例對於單詞「google」為了表達單詞前後邊界,我們加入<>兩個字元,即變形為「」假設我們希望抽取所有的tri-gram資訊,可以得到如下集合g={cbow與fasttext對比

cbow的輸入是目標單詞的上下文,fasttext的輸入是多個單詞及其n-gram特徵,cbow的輸入單詞被one-hot編碼過,fasttext的輸入它特徵是被embedding過,cbow的輸出是目標的詞彙,fasttext的輸出是**的標籤

fasttext的輸入時,將單詞的字元級別n-gram作為額外的特徵,輸出時fasttext採用了分層softmax 大大降低了模型的訓練時間

fasttext的安裝

# 使用pip安裝python中的fasttext工具包

pip install .

FastText模型原理

預備知識 n gram模型 對句子或單詞的所有長度為n的子句或子字串進行操作,如2 gram中,對 girl 的字串為 gi ir rl 進行操作,通常有操作如下 cbow模型 是把單詞的高維稀疏的one hot向量對映為低維稠密的表示的方法。模型架構如下 此處有圖 x c h 1c i 1cx i...

fasttext 安裝 fasttext使用筆記

這裡記錄使用fasttext訓練word vector筆記 gitclone cdfasttext make make報錯 原因gcc版本過低 gcc v 公升級版本 參考 1.新增源 首先新增ppa到庫 sudo add apt repository ppa ubuntu toolchain r ...

筆記整合三 fastText原理剖析

一 邏輯回歸 1.1 從線性回歸到邏輯回歸 線性回歸的模型求出的是輸出特徵向量與輸入樣本矩陣x之間得線性關係係數k,即我們的y是連續的,假設我們想要y離散的話,那麼思路可以為對這個y在做一次函式,由此得到乙個 分類函式。邏輯回歸即對線性回歸的結果做了乙個sigmoid函式,將其結果整合到了 0,1 ...