陳 志,郭 武
(中國科學(xué)技術(shù)大學(xué) 語音及語言信息處理國家工程實驗室,合肥 230027)
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,各種各樣的文本數(shù)據(jù)在日益增加,文本分類技術(shù)能夠有效地組織和管理這些文本數(shù)據(jù),極大地節(jié)省了物力和人力.
在文本分類中,首先需要用表示模型將文本表示為固定維數(shù)的向量,然后用分類器對固定維數(shù)的文本向量進(jìn)行分類.TF-IDF模型是常用的文本表示模型,其通過計算文本中詞頻和逆向文檔頻率來將文本表示成一個固定維的向量[1].這種表示方法雖然簡單有效,但是面臨眾多問題,比如數(shù)據(jù)稀疏、忽略語義信息等.
為了克服TF-IDF的缺點,研究者們發(fā)展了一系列文本降維方法,主要分為無監(jiān)督方法和監(jiān)督方法.典型的無監(jiān)督方法有LSA[2]、PLSA[3]和LDA[4].LSA主要通過對大量的文本集進(jìn)行統(tǒng)計分析來挖掘文本間關(guān)系,進(jìn)而將文本表示為一個低維的向量.PLSA,LDA等主題模型主要利用文本詞語之間的關(guān)聯(lián)性來挖掘詞語中蘊(yùn)含的潛在語義信息,進(jìn)而將該文本的潛在語義信息映射為一個低維的向量.上述方法均可以有效解決TF-IDF數(shù)據(jù)稀疏性問題.
與無監(jiān)督方法相比,有監(jiān)督方法產(chǎn)生的潛在主題特征通常更具主題區(qū)分性,因為其直接將文本的標(biāo)簽信息作為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練目標(biāo).近年來,基于深度學(xué)習(xí)的詞向量方法可以完美地實現(xiàn)詞匯的低維、稠密的連續(xù)向量表示[5,6],為基于深度學(xué)習(xí)的文本表示學(xué)習(xí)提供了基礎(chǔ).近來如何利用神經(jīng)網(wǎng)絡(luò)模型去學(xué)習(xí)文檔的分布式表示是一個研究重點.例如遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,RNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)在文本建模任務(wù)上均獲得了很好地效果[7-13].文獻(xiàn)[11]中,作者通過利用三組大小不同的卷積核去提取文本中不同的n-gram特征,然后通過全局最大池化操作提取文中最重要的信息.實驗結(jié)果表明作者提出的模型在文本分類任務(wù)上效果顯著,已成為目前主流文本分類模型之一.
上述模型在訓(xùn)練數(shù)據(jù)各類樣本平衡時能夠取得很好的分類效果,但是當(dāng)訓(xùn)練數(shù)據(jù)不平衡時,模型參數(shù)會偏移,導(dǎo)致分類效果并不理想[14-17].不平衡數(shù)據(jù)集指的是在同一個數(shù)據(jù)集中,某些類別的記錄數(shù)遠(yuǎn)遠(yuǎn)大于或小于其他類別的記錄數(shù)量,在實際文本分類任務(wù)中,例如垃圾郵件檢測,電話詐騙檢測等應(yīng)用中都存在數(shù)據(jù)不平衡問題.如何解決這個難題成為了研究的熱點.針對不平衡數(shù)據(jù)集分類改進(jìn)方法一般可以分為兩類:面向訓(xùn)練數(shù)據(jù)和面向模型參數(shù).面向數(shù)據(jù)的方法主要是采樣技術(shù).采樣是對訓(xùn)練數(shù)據(jù)進(jìn)行處理,改變原有的數(shù)據(jù)分布,降低不平衡程度.采樣主要包括下采樣(random oversampling,RAMO)和上采樣(random undersampling,RAMU)[18]:下采樣主要通過刪除訓(xùn)練集中的多數(shù)類樣本數(shù)目來重新平衡數(shù)據(jù)集,但是下采樣在刪除多數(shù)類樣本的時候,可能會刪除重要的樣本信息.上采樣主要通過隨機(jī)增加訓(xùn)練集中的少數(shù)類的數(shù)目,即重復(fù)利用少數(shù)類,來重新平衡數(shù)據(jù)集.
面向訓(xùn)練模型參數(shù)常用的方法有三種:
1)代價敏感學(xué)習(xí)方法,讓網(wǎng)絡(luò)結(jié)構(gòu)對少數(shù)類更加敏感.例如Adaboosting算法[19],其主要通過在每一輪迭代中學(xué)習(xí)一個新的分類器方式得到多個分類器.在每一輪迭代學(xué)習(xí)中,當(dāng)前分類器會根據(jù)每個樣本的表現(xiàn)來給每個樣本賦予不同的權(quán)重.這種賦值策略是為了減小正確分類樣本的權(quán)重,而加大錯誤分類樣本權(quán)重.最后通過對多次迭代模型線性加權(quán)得到最終的模型,那些分類準(zhǔn)確率高的分類器會獲得更大的權(quán)重;
2)集成學(xué)習(xí)方法,即把樣本數(shù)量多的類切割成幾個小部分,用不同的網(wǎng)絡(luò)訓(xùn)練,每個網(wǎng)絡(luò)訓(xùn)練多數(shù)類樣本的一個小部分,同時訓(xùn)練全部少數(shù)類樣本,通過投票原則確定最終分類結(jié)果.例如Bagging算法[20-22],多次在原始數(shù)據(jù)集上選出若干個樣本來訓(xùn)練分類器,然后用訓(xùn)練得到的分類器集合來對測試樣本進(jìn)行分類得到多個分類結(jié)果.最后用多數(shù)投票或者對輸出求均值的方法來得到這些分類器的最終分類結(jié)果,即最終的標(biāo)簽.
3)單分類器方法,即僅對少數(shù)類進(jìn)行訓(xùn)練,例如運(yùn)用支持向量機(jī) (Support Vector Machine,SVM)只對少數(shù)類進(jìn)行訓(xùn)練分類.
上述方法均在傳統(tǒng)算法上進(jìn)行改進(jìn)的,隨著深度學(xué)習(xí)的發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的文本分類方法逐漸成為主流的文本分類模型,然而數(shù)據(jù)的不平衡給神經(jīng)網(wǎng)絡(luò)訓(xùn)練帶來了巨大的挑戰(zhàn),如何減小數(shù)據(jù)不平衡給神經(jīng)網(wǎng)絡(luò)帶來的影響成為了研究的熱點.本文在神經(jīng)網(wǎng)絡(luò)模型參數(shù)訓(xùn)練中,提出了一種帶類別權(quán)重的誤差函數(shù),實驗結(jié)果表明本文提出的方法能顯著地提升文本分類的F1值,提高了神經(jīng)網(wǎng)絡(luò)對不平衡數(shù)據(jù)的分類能力.
本文的后續(xù)內(nèi)容安排如下:第二部分簡要介紹了系統(tǒng)框架,第三部分介紹了改進(jìn)方法,第四部分是實驗結(jié)果及分析,最后一部分是總結(jié).
本文研究中文的文本分類任務(wù),整個系統(tǒng)主要包括文本預(yù)處理、詞向量訓(xùn)練、帶類別權(quán)重的卷積神經(jīng)網(wǎng)絡(luò)分類器三個部分.
在訓(xùn)練或測試之前,需要對文本進(jìn)行預(yù)處理,主要包括分詞和去詞.本文采用哈工大的LTP分詞工具進(jìn)行分詞.分詞后一般要引入停用詞表和高頻詞表剔除對分類沒多大影響的詞語.
機(jī)器學(xué)習(xí)算法需要將輸入表示為固定長度的特征向量,如何將詞表示為一個固定長度的特征向量是將機(jī)器學(xué)習(xí)引入文本分類的核心.本文詞向量是用谷歌公司開源的word2vec[5]訓(xùn)練得到的,實驗中采用300維詞向量.
近年來,CNN逐漸被應(yīng)用于NLP任務(wù)中,在語義解析、搜索查詢檢索、句子建模、文本分類等任務(wù)上均取得了不錯的效果,已經(jīng)成為一種主流的文本分類模型.
卷積神經(jīng)網(wǎng)絡(luò)的輸入是詞向量矩陣,然后通過卷積和最大池化操作來篩選和組合信息,從而獲得文檔最終的分布式表示.本文采用的卷積神經(jīng)網(wǎng)絡(luò)如圖1所示,其主要由輸入層、卷積層、池化層和全連接層4部分組成.

圖1 卷積神經(jīng)網(wǎng)絡(luò)Fig.1 Convolution neural network
1)輸入層
在卷積神經(jīng)網(wǎng)絡(luò)輸入層,其要求輸入的是固定長度的向量,所以輸入的句子會被映射成詞向量矩陣x1:n=[x1,x2,…,xn]∈h×k.其中xi代表句子中第i個詞對應(yīng)的詞向量,n表示輸入句子長度,k表示詞向量的維度.
2)卷積層
在卷積層,三組不同的濾波器同時在一個高度為h的窗口內(nèi)進(jìn)行卷積操作,從而就能同時提取出了三組不同的n-gram信息.
例如,用其中的一組卷積核w在xi:i+h-1上進(jìn)行卷積操作,提取出n-gram特征ci:
ci=f(w·xi:i+h-1+b)
(1)
其中,f表示激活函數(shù),b表示偏置.w在{x1:h,x2:h+1,…,xn-h+1:n} 這n-h+1個窗口進(jìn)行一輪完整的卷積運(yùn)算,得到相應(yīng)的特征圖c=[c1,c2,…,cn-h+1].
圖1顯示了兩組不同卷積核,即兩個陰影矩陣即分別表示大小為2和4的濾波器.
3)池化層

4)全連接層
最后我們會對計算得到的特征向量z進(jìn)行softmax操作,進(jìn)而得到每個文本在每一類別上的分布概率.softmax輸出結(jié)果y∈M為:
y=softmax(w·z+b)
(2)
為了防止卷積神經(jīng)網(wǎng)絡(luò)對訓(xùn)練數(shù)據(jù)過擬合,我們在全連接層之前加入dropout,并且dropout僅在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中使用.
卷積網(wǎng)絡(luò)的訓(xùn)練過程中根據(jù)算法對其進(jìn)行更新,先正向計算得到網(wǎng)絡(luò)輸出誤差,然后反向更新網(wǎng)絡(luò)權(quán)重,使網(wǎng)絡(luò)的輸出誤差最小,本文采用批量梯度下降的方法更新網(wǎng)絡(luò)參數(shù).
卷積網(wǎng)絡(luò)輸出結(jié)果為y=[y1,y2,…,yN],y∈N×M,其中N是batch size包含的樣本個數(shù),M是輸入數(shù)據(jù)集類別總數(shù).
卷積神經(jīng)網(wǎng)絡(luò)的誤差函數(shù)E為:
(3)
其中,tij表示樣本i屬于類別j的概率,當(dāng)且僅當(dāng)tij是1時,樣本i屬于類別j;yij表示第i個樣本經(jīng)過softmax回歸后第j個節(jié)點的輸出值,即樣本i屬于類別j的概率.
本文提出改進(jìn)后的誤差函數(shù)E為:
(4)
其中,cij是第i個樣本真實類別j對應(yīng)的標(biāo)簽權(quán)重.與之前卷積神經(jīng)網(wǎng)絡(luò)誤差函數(shù)不同的是,本文所用的誤差函數(shù)引入了類別標(biāo)簽權(quán)重c:c=[c1,c2,…,cM],其中cj為第j類標(biāo)簽對應(yīng)的標(biāo)簽權(quán)重,具體計算方式為:
(5)
其中,T是超參數(shù),dj為第j類標(biāo)簽在訓(xùn)練集中的文本總數(shù),可以看出標(biāo)簽權(quán)重與標(biāo)簽所有的文本總數(shù)成反比.在不平衡數(shù)據(jù)集上,多數(shù)類與少數(shù)類樣本數(shù)相差較大,如果類標(biāo)簽權(quán)重與標(biāo)簽所有的文本總數(shù)成反比,這樣可以強(qiáng)化少數(shù)類對模型參數(shù)的影響,讓神經(jīng)網(wǎng)絡(luò)對少數(shù)類更加敏感,從而獲得更好的分類效果.
本實驗采用的數(shù)據(jù)集為復(fù)旦大學(xué)發(fā)布的文本分類數(shù)據(jù)集,該數(shù)據(jù)庫共包含19637篇文檔,覆蓋了20個主題,主要包括Art、Literature、Education等.訓(xùn)練語料和測試語料基本按照1:1的比例來劃分.主題的具體分布如圖2所示.
由圖可以看出主題之間差異較大,例如主題15有1600個文本,而主題9只有25個文本,訓(xùn)練數(shù)據(jù)集各類別不平衡.
文本分類任務(wù)需要同時衡量準(zhǔn)確率P和召回率R.為了兼顧兩者,本文采用F1作為文本分類的評價指標(biāo),具體計算方式如下:
(6)
在多類別分類任務(wù)中,F(xiàn)1可分為宏平均F1和微平均F1.微平均F1主要從整體上計算分類結(jié)果的F1值,其反應(yīng)了系統(tǒng)的整體性能;宏平均F1先分別計算每個類別的F1,然后對所有類別的F1求平均,其反應(yīng)了各個類別性能的均衡狀況.本次實驗主要在不平衡的復(fù)旦數(shù)據(jù)集進(jìn)行,所以我們同時采用微平均F1和宏平均F1作為系統(tǒng)的性能評價指標(biāo).

圖2 主題分布Fig.2 Distribution of topic
本文建立了基于VSM(Vector Space Model)、PLSA、LDA和CNN四個對比系統(tǒng),其中:
1)基于TF-IDF的VSM:用TF-IDF表示文本,特征的維度為52315,并用SVM對文本進(jìn)行分類;
2)PLSA:用概率主題模型PLSA對文本建模,其中主題個數(shù)為190個時性能最優(yōu),主題模型提取出文本的主題向量之后用SVM進(jìn)行分類;
3)LDA:用概率主題模型LDA對文本建模,其中主題個數(shù)為130個時性能最優(yōu),主題模型提取出文本的主題向量之后用SVM進(jìn)行分類;
4)CNN:用訓(xùn)練集訓(xùn)練一個CNN模型,輸入維度是3000;卷積核尺度為3、4、5;每組不同尺度的卷積核有128個波器;輸出節(jié)點數(shù)為20,即主題個數(shù);dropout的參數(shù)p設(shè)為0.5;激活函數(shù)采用ReLU.
表1 不同系統(tǒng)在復(fù)旦數(shù)據(jù)集上的實驗結(jié)果
Table 1 Experimental results of different systems on fudan corpus

ModelACCmacroF1microF1TF-IDF0.92240.72540.9224PLSA0.85560.59920.8556LDA0.86320.44380.8632CNN0.92460.72750.9246
表1顯示了基于TF-IDF、LDA、PLSA和CNN四個系統(tǒng)在復(fù)旦文本分類據(jù)集上的實驗結(jié)果.由表可以看出在這四個系統(tǒng)中,不管是宏平均F1值還是微平均F1值,都是CNN最高.概率主題模型PLSA和LDA分類效果較差,這也是由于數(shù)據(jù)不均勻?qū)е赂怕手黝}模型有偏差所致.由四組實驗結(jié)果可以觀察到宏平均F1值均明顯小于微平均F1值,這是由數(shù)據(jù)類別不平衡造成的.為了提高分類宏平均F1值,我們選擇分類效果最好的算法CNN,在其訓(xùn)練的過程中引入類別標(biāo)簽權(quán)重,強(qiáng)化少數(shù)類對模型參數(shù)的影響,類別標(biāo)簽權(quán)重如公式(5)所示.在公式(5)中,T是超參數(shù),圖3顯示不同T對宏平均F1值和微平均F1值的影響.
圖3顯示了不同T值對F1的影響.曲線micro F1表示不同T值對微平均F1值的影響,由圖可以看出當(dāng)T值變化時,微平均F1值整體變化不大.曲線macro F1表示不同T值對宏平均F1值的影響,當(dāng)T值在變化時,宏平均F1值變化較大,并在T等于100時取得最大值(0.7724),當(dāng)T大于100時隨著T的增大而呈現(xiàn)出下降趨勢,所以帶類別權(quán)重的卷積神經(jīng)網(wǎng)絡(luò)在T等于100時性能較好.

圖3 不同T對F1的影響Fig.3 Influence of different T on F1 performance
為了證明卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的過程中引入類別標(biāo)簽權(quán)重分類效果好于先進(jìn)的文本分類的算法、數(shù)據(jù)采樣和集成學(xué)習(xí)算法,本文加入四組對比試驗.
1)RAMO:對訓(xùn)練集隨機(jī)上采樣[18];
2)RAMU:對訓(xùn)練集隨機(jī)下采樣[18];
3)Bagging:子分類器是決策樹[22];
4)Adaboosting:子分類器是決策樹[19].
表2 不同改進(jìn)方法在復(fù)旦數(shù)據(jù)集上的實驗結(jié)果
Table 2 Experimental results of different improvement methods on fudan corpus

ModelACCmacroF1microF1CNN0.92460.72750.9246RAMO0.92420.74790.9242RAMU0.91970.73670.9197Bagging0.91270.67840.9127Adaboost0.92170.71550.9217Weight_CNN0.92500.77240.9250
表2顯示了CNN、RAMO、RAMU、Adaboosting、Bagging和本文CNN六種不同算法在復(fù)旦文本分類據(jù)集上的實驗結(jié)果.對比本文CNN (Weight_CNN)與其他算法,改進(jìn)后的CNN算法宏平均F1值和微平均F1值均最高,分類效果最好.隨機(jī)上采樣(RAMO)可以同時提高宏平均F1值和微平均F1值,隨機(jī)上采樣(RAMU)提高宏平均F1值,卻降低了微平均F1值,這很可能由于丟失信息造成的.本文CNN (Weight_CNN)分類效果明顯好于上采樣和下采樣,而且也好于集成算法Adaboost和Bagging.Adaboost的宏平均F1值和微平均F1值均高于Bagging,因為Adaboost會關(guān)注被分錯的訓(xùn)練樣本,而Bagging是隨機(jī)選擇訓(xùn)練樣本.相比于原來的CNN,改進(jìn)后的Weight_CNN算法的宏平均F1值有了4.49%的提升.本文推薦Weight_CNN算法雖然對微平均提升不是很多,這主要是由于類別不均勻所致,但是畢竟也有提升.
為了證明在損失函數(shù)中引入類別標(biāo)簽權(quán)重來解決不平衡問題方法的有效性,本文還在較先進(jìn)的文本分類算法RCNN上進(jìn)行了實驗[23].
表3 RCNN和Weight_RCNN在復(fù)旦數(shù)據(jù)集上的實驗結(jié)果
Table 3 Experimental results of RCNN and Weight_RCNN on fudan corpus

ModelACCmacroF1microF1RCNN0.93930.75010.9393Weight_RC-NN0.94020.78900.9391
表3顯示了RCNN和帶權(quán)重RCNN(Weight_RCNN)算法在復(fù)旦文本分類據(jù)集上的實驗結(jié)果.對比帶權(quán)重RCNN(Weight_RCNN)和RCNN,可以看到改進(jìn)后的RCNN算法宏平均F1值有了3.89%的提升.由此可以看出,即使對于較先進(jìn)的文本分類算法,在訓(xùn)練中引入類別權(quán)重來解決不平衡問題也是可行的.

圖4 CNN和Weight_CNN在每個主題上的實驗結(jié)果Fig.4 Experimental results of CNN and Weight_CNN on each topic
圖4顯示了CNN和Weight_CNN在每個主題上的F1值.由圖可以看出,Weight_CNN在多數(shù)類分類準(zhǔn)確度保持基本不變的情況下,可以較好地提高少數(shù)類的分類正確度,從而提高數(shù)據(jù)集整體的分類正確度.由實驗結(jié)果可以看出,改進(jìn)后的誤差函數(shù)可能會降低某些多數(shù)類的分類性能,但是下降幅度很小.改進(jìn)后的誤差函數(shù)旨在讓神經(jīng)網(wǎng)絡(luò)能夠較好地檢測出少數(shù)類,避免少數(shù)類樣本被多數(shù)類覆蓋(因為少數(shù)類樣本數(shù)量太少).同時多數(shù)類訓(xùn)練樣本充足,而且樣本不同類別屬性差異性較大,所以神經(jīng)網(wǎng)絡(luò)能在保持多數(shù)類性能基本不變情況下提高少數(shù)類的分類性能.
通過上面所有實驗結(jié)果可看出,在神經(jīng)網(wǎng)絡(luò)模型參數(shù)訓(xùn)練中引入了一種帶類別權(quán)重的誤差函數(shù)后,不僅提高了少數(shù)類的分類正確度,而且也提高了數(shù)據(jù)集整體的分類正確度.總之,本文提出的算法可以較好地解決不平衡數(shù)據(jù)上神經(jīng)網(wǎng)絡(luò)分類問題.這在實際的工作中比如詐騙檢測具有重要得價值,可以把海量數(shù)據(jù)中的少數(shù)類準(zhǔn)確檢測出來.
本文在神經(jīng)網(wǎng)絡(luò)模型參數(shù)訓(xùn)練中引入了一種帶類別權(quán)重的誤差函數(shù),以復(fù)旦文本分類數(shù)據(jù)集為例,探討了該方法對不平衡數(shù)據(jù)集分類的可行性.通過實驗驗證,卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練中引入類別權(quán)重與文獻(xiàn)[11]中的CNN相比在不平衡數(shù)據(jù)集上分類準(zhǔn)確度有了較大的提高.實驗證明,在神經(jīng)網(wǎng)絡(luò)模型參數(shù)訓(xùn)練中引入帶類別權(quán)重的誤差函數(shù)可以極大地提升系統(tǒng)性能,可以較好地解決不平衡數(shù)據(jù)集分類問題.