該算法由facebook在2016年開源,典型應(yīng)用場景是“帶監(jiān)督的文本分類問題”。

模型
模型的優(yōu)化目標(biāo)如下:
其中,$<x_n,y_n>$是一條訓(xùn)練樣本,$y_n$是訓(xùn)練目標(biāo),$x_n$是normalized bag of features。矩陣參數(shù)A是基于word的look-up table,也就是A是詞的embedding向量。$Ax_n$矩陣運(yùn)算的數(shù)學(xué)意義是將word的embedding向量找到后相加或者取平均,得到hidden向量。矩陣參數(shù)B是函數(shù)f的參數(shù),函數(shù)f是一個多分類問題,所以$f(BAx_n)$是一個多分類的線性函數(shù)。優(yōu)化目標(biāo)是使的這個多分類問題的似然越大越好。
將優(yōu)化目標(biāo)表示為圖模型如下:
與word2vec的區(qū)別
這個模型與word2vec有很多相似的地方,也有很多不相似的地方。相似地方讓這兩種算法不同的地方讓這兩
相似的地方:
- 圖模型結(jié)構(gòu)很像,都是采用embedding向量的形式,得到word的隱向量表達(dá)。
- 都采用很多相似的優(yōu)化方法,比如使用Hierarchical softmax優(yōu)化訓(xùn)練和預(yù)測中的打分速度。
不同的地方:
- word2vec是一個無監(jiān)督算法,而fasttext是一個有監(jiān)督算法。word2vec的學(xué)習(xí)目標(biāo)是skip的word,而fasttext的學(xué)習(xí)目標(biāo)是人工標(biāo)注的分類結(jié)果。
- word2vec要求訓(xùn)練樣本帶有“序”的屬性,而fasttext使用的是bag of words的思想,使用的是n-gram的無序?qū)傩浴?/li>
V.S. 深度神經(jīng)網(wǎng)絡(luò)
fasttext只有1層神經(jīng)網(wǎng)絡(luò),屬于所謂的shallow learning,但是fasttext的效果并不差,而且具備學(xué)習(xí)和預(yù)測速度快的優(yōu)勢,在工業(yè)界這點(diǎn)非常重要。
- 比一般的神經(jīng)網(wǎng)絡(luò)模型的精確度還要高。
- 訓(xùn)練和評估速度快幾百倍。10分鐘內(nèi)就可以在一臺多核CPU訓(xùn)練10億詞匯。1分種內(nèi)完成100萬句子在31萬中類型中的分類。