fasttext是facebook開源的一個詞向量與文本分類工具,在2016年開源,典型應(yīng)用場景是“帶監(jiān)督的文本分類問題”。在當(dāng)時,它的性能比肩深度學(xué)習(xí)而且速度更快。Fasttext方法包含三部分,模型架構(gòu),層次SoftMax和N-gram子詞特征。fastText的架構(gòu)和word2vec中的CBOW的架構(gòu)類似,可能因為它們的作者之一都有Facebook的科學(xué)家Tomas Mikolov,有意思的一點是在發(fā)表word2vec論文時Tomas Mikolov在谷歌工作。CBOW的思路是用上下文詞語來預(yù)測當(dāng)前詞,從而拿到模型最終的W矩陣得到詞向量,而Fasttext的思路是使用模型進行文本分類操作。 其中x1,x2,...,xN?1,xNx1,x2,...,xN?1,xN表示一個文本中的n-gram向量,每個特征是詞向量的平均值。如果n為3,也叫作trigram,最小切分單位為字,則“歡迎關(guān)注數(shù)據(jù)科學(xué)雜談”這個句子的3-gram為{“歡迎關(guān)”,“迎關(guān)注”,“關(guān)注數(shù)”,“注數(shù)據(jù)”,“數(shù)據(jù)科”,“據(jù)科學(xué)”,“科學(xué)雜”,“學(xué)雜談”}。n-gram除了獲取上下文信息,還能將語言的局部順序保持住,想想看“羊吃草”,如果不考慮順序,可能會有“草吃羊”的語義不正確問題。 因為每個字有字向量,例如之前CBOW得到的每個詞的詞向量,當(dāng)我們使用n-gram時,我們將n個字向量取平均,例如我們將“歡”、“迎”、“關(guān)”三個字的向量平均后得到“歡迎關(guān)”這個詞的向量。然后在隱藏層將得到的所有n-gram的詞向量求平均,得到最終的一個向量。此時的情況有點像CBOW中得到的向量,和CBOW相似,此時的向量要經(jīng)過一個softmax層,只是不同于CBOW的普通softmax,F(xiàn)asttext中使用分層Softmax分類。分層Softmax分類作為其輸出層。在標(biāo)準(zhǔn)的softmax中,計算一個類別的softmax概率時,我們需要對所有類別概率做歸一化,在這類別很大情況下非常耗時,因此提出了分層softmax,思想是根據(jù)類別的頻率構(gòu)造哈夫曼樹來代替標(biāo)準(zhǔn)softmax,通過分層softmax可以將復(fù)雜度從N降低到logN,下圖給出分層softmax示例:哈夫曼樹中的每個葉子節(jié)點代表一種類別,在每一個非葉子節(jié)點處都要做一次二分類,走左邊子樹的概率為p,走右邊子樹的概率為1-p,這里的二分類都可以用邏輯回歸表示。每一種分類都會有一條路徑,也就是說,每個中間節(jié)點都是一個邏輯回歸二分類器,而每個類別的概率為中間若干邏輯回歸單元輸出概率的連乘積。至此,我們還剩下兩個問題,一是如何構(gòu)造每個邏輯回歸單元的輸入,另一個是如何建立這棵用于判斷的樹形結(jié)構(gòu)。每個邏輯回歸單元中,sigmoid函數(shù)所需的輸入由三項構(gòu)成,如下公式所示:?x?是一個特殊的函數(shù),如果下一步需要向左走其值為1,向右則為-1。在訓(xùn)練時,我們知道最終輸出葉子結(jié)點,并且從根結(jié)點到葉子結(jié)點的每一步的路徑也是確定的。v' 是每個邏輯回歸內(nèi)部節(jié)點對應(yīng)的一個向量,這個向量可以在訓(xùn)練過程中學(xué)習(xí)和更新。h 是網(wǎng)絡(luò)中隱藏層的輸出向量。因此,我們以隱藏層的輸出向量、中間結(jié)點對應(yīng)向量以及路徑取向取值為輸入,相乘后為一個標(biāo)量,然后經(jīng)過sigmoid函數(shù),可以得到每個邏輯回歸的輸出值。然后計算輸出值和真實值的誤差反傳,調(diào)節(jié)邏輯回歸的單元向量v' ,這也就是訓(xùn)練的過程了。因此,我們以隱藏層的輸出向量、中間結(jié)點對應(yīng)向量以及路徑取向取值為輸入,相乘后為一個標(biāo)量,然后經(jīng)過sigmoid函數(shù),可以得到每個邏輯回歸的輸出值。然后計算輸出值和真實值的誤差反傳,調(diào)節(jié)邏輯回歸的單元向量v' ,這也就是訓(xùn)練的過程了。如何建立這棵用于判斷的樹形結(jié)構(gòu)?哈夫曼樹構(gòu)造是按照所有數(shù)據(jù)的類別個數(shù)統(tǒng)計作為每個葉子節(jié)點的權(quán)重。我們讓越頻繁的類別離根結(jié)點越近,使得最終的softmax經(jīng)過的路徑最短。如果大家不了解哈夫曼樹,以后可以寫一篇原理加代碼實戰(zhàn)的文章。在英文中,還可以對單詞進行子詞的N-gram特征提取例如“where are you”使用3-gram后:“<wh”、“whe”、“her”、“ere”、“re>”、“<ar”、“are”、“re>”、“<yo”、“you”、“ou>”在英文中使用字詞N-gram可以獲取更細致的特征,例如“ed>”可能代表過去時,“l(fā)y>”可能代表副詞等等。
|