陳天龍,喻國平+,姚磊岳
(1.南昌大學 信息工程學院,江西 南昌 330031;2.江西科技學院 協(xié)同創(chuàng)新中心,江西 南昌 330098)
文本分類技術是信息組織、文本挖掘的重要基礎,可以在較大程度上解決信息紊亂的問題,幫助用戶準確地定位自身所需的信息,被認為是處理海量信息的有力手段。文本分類技術在現(xiàn)如今大數(shù)據(jù)時代具有廣泛的應用,如主題標簽[1],情感分類[2],垃圾郵件檢測[3]等等。
受益于神經(jīng)語言模型[4]的突破、硬件承載力的加強、大數(shù)據(jù)技術以及神經(jīng)網(wǎng)絡的發(fā)展,深度學習技術逐漸取代了傳統(tǒng)的機器學習方法,成為文本分類領域的主流技術[5]。如卷積神經(jīng)網(wǎng)絡(CNN)[6]、循環(huán)神經(jīng)網(wǎng)絡(RNN)[7]等。CNN能夠通過卷積層提取n-gram信息,但是其語義信息受限于濾波器大小,而RNN可以彌補這一缺點?;谠~粒度的循環(huán)神經(jīng)網(wǎng)絡模型[8]無法充分學習文本語義信息,詞必須結合上下文才具備明確語義,所以通過學習短語的權重來合成的文本語義表示要比通過學習詞的權重來合成的更準確。循環(huán)神經(jīng)網(wǎng)絡可以很好地文本序列信息,但是其中主流結構長短時記憶(LSTM)、門控神經(jīng)單元(GRU)、雙向長短時記憶 (BLSTM)可并行化計算能力十分有限。
結合上述分析,針對詞無法充分體現(xiàn)語義信息和主流循環(huán)單元結構計算速度受限問題,本文提出了一種基于卷積和簡單循環(huán)單元的深度網(wǎng)絡模型Conv-BSA,模型先采用卷積層對文本矩陣(詞向量序列)提取短語表示,再使用雙向簡單循環(huán)單元提取上下文信息,然后使用注意力機制學習得到最終文本表示。模型采用簡單循環(huán)單元(SRU)[7]是因為SRU能夠在保證優(yōu)異的結果同時能夠提高計算速度,降低時間損耗。單向的循環(huán)神經(jīng)網(wǎng)絡并不能很好地提取語義信息,所以模型采用了雙向循環(huán)神經(jīng)網(wǎng)絡以克服這一缺點。為了能夠自適應學習短語權重比例,模型加入了注意力機制[9]。
傳統(tǒng)的機器學習分類方法利用詞袋特征表示文本,這直接導致得到的是稀疏、高維的文本表示,所以詞袋得到的文本表示無法很好地對語義建模。然而,神經(jīng)語言模型訓練得到的詞向量[10-12]能夠很好地解決以上癥結,并且可以顯著提高分類精度。
其中Word2vec最初是由Mikolov[10]提出的,是一種能夠簡單、高效地獲取詞語向量化特征模型。Word2vec模型吸收了NNLM(neural network language model)模型和 logLinear 模型的優(yōu)點,使用分布式表示(distributed representation)作為詞向量的表達方式。當文本用作訓練樣本時,Word2vec可以根據(jù)詞語的上下文有效地提取詞語語義,并以詞向量的形式表達。它包含兩個訓練模型,CBOW(連續(xù)詞袋)和Skip-gram。前者通過前后詞預測當前詞,后者則相反。具體結構如圖1所示。
圖1 Skip-gram和CBOW模型結構
循環(huán)神經(jīng)網(wǎng)絡(RNN)對于處理序列數(shù)據(jù)具有得天獨厚的優(yōu)勢,這是因為神經(jīng)元在某時刻的輸出可以作為輸入再次輸入到神經(jīng)元中。也正是因為這一特點,導致循環(huán)神經(jīng)網(wǎng)絡無法擁有與卷積神經(jīng)網(wǎng)絡(CNN)那般的計算速度。針對這一問題,Lei等[7]在RNN及其變體的基礎上提出了SRU結構。SRU避免了GRU中狀態(tài)計算和門控機制的復雜程度,消除門狀態(tài)對前一時刻狀態(tài)的依賴性,使得門計算單元可以并行計算,從而加快訓練速度。
為了更直觀地闡述簡單循環(huán)單元(SRU)結構,本文選取了GRU(gated recurrent unit)[13]作為比較對象,并且繪制了相應的內部結構圖。圖2,圖3分別是GRU和SRU的內部結構圖。
圖2 門控循環(huán)單元(GRU)結構
圖3 簡單循環(huán)單元(SRU)結構
相比較于LSTM,GRU將遺忘門和輸入門合成了一個單一的更新門,同樣還混合了細胞狀態(tài)和隱藏狀態(tài)。更新門的作用是決定有多少過去信息和現(xiàn)在信息可以被傳遞到未來。除了更新門,GRU的另一個門是重置門,其作用是遺忘多少歷史信息不能被繼續(xù)傳遞到下一時刻。下列公式描述了GRU具體的計算過程
zt=σ(Wz·[ht-1,xt])
(1)
rt=σ(Wr·[ht-1,xt])
(2)
(3)
(4)
對比GRU,SRU削弱了對前一時刻信息的依賴性,提升了計算的并行性和獨立性,從而可以實驗并行化計算來加速計算。SRU的計算過程如下所示
(5)
ft=σ(Wfxt+bf)
(6)
rt=σ(Wrxt+br)
(7)
(8)
ht=rt⊙g(ct)+(1-rt)⊙xt
(9)
其中,⊙表示逐元素相乘。g(·)表示非線性函數(shù)。為了能夠訓練深層次的SRU網(wǎng)絡,高速網(wǎng)絡(highway connection)被應用于生成最終的輸出狀態(tài),如式(9)所示。從SRU的計算過程中可以得到式(5)~式(7)都具有獨立性,不依賴于前一時刻ct-1信息,所以可以對其進行并行化計算處理,具體處理如式(10)所示
(10)
其中,n表示序列長度, U∈Rn×3d,d表示隱狀態(tài)尺寸。
基于卷積和雙向簡單循環(huán)單元的神經(jīng)網(wǎng)絡模型(conv-BSA model)由嵌入層、卷積層、特征處理層、Bi-SRU層、注意力機制(Attention mechanism)、全連接(Dense)層和softmax層組成。詳細模型結構如圖4所示。
圖4 基于卷積和雙向簡單循環(huán)單元的神經(jīng)網(wǎng)絡模型
經(jīng)過嵌入層的作用,文本轉換為詞向量序列(文本矩陣)X∈Rseq×d, 其中d表示詞向量維度,seq表示序列長度。
接下來,卷積層使用大小為r×d的卷積核F對文本矩陣X執(zhí)行能夠容納r個詞的卷積操作,提取X的r-gram短語特征
cji=f(F·Xi∶i-r+1+b)
(11)
其中,符號·表示元素相乘,F(xiàn)表示r×d的卷積核,b表示偏置量,f表示非線性激活函數(shù),本文選擇的是ReLU函數(shù),Xi∶i-r+1表示在詞向量序列X中選擇的第i行到i-r+1行子序列,i的取值范圍為 {1,2,…,seq-r+1},j表示第j個卷積核,其取值范圍是 {1,2,…,m}。 卷積核會根據(jù)步長對序列從上往下進行滑動,可得到r-gram短語特征集合C
C=(cji)(seq-r+1)×m= (c1,…,cj,…cm)∈R(seq-r+1)×m
(12)
其中,cj表示第j個卷積核所得到的卷積特征序列,其尺寸大小為seq-r+1維列向量,于是C的尺寸是(seq-r+1)×m。
卷積操作通過對滑動窗口內的詞做非線性組合(composition)得到其表示。理想情況下,卷積窗口內詞的組合如果是語言學上的短語,則表明卷積得到的表示較為理想,即組合向量的各個元素的值較大,反之,向量元素的值較小。為保留完整的詞序信息,文本使用局部最大池化思想,對短語序列矩陣C做特征篩選操作。因為卷積的采用的是重疊的窗口,所以相鄰的短語向量相似性最大,故池化窗口大小設置為2,其步長也設置為2經(jīng)過局部池化操作可以得到大小原先一半的短語序列
(13)
為了直觀闡述模型特征處理的過程,本文繪制了特征處理如圖5所示。圖中采取的文本例子是“The dog is sitting on the mat”,經(jīng)過池化操作最后得到的短語序列是“The dog”,“sitting on”,“the mat”。處理后的新序列較處理前維度減少了一半,但仍然保持著近似完整的語義信息。
圖5 短語特征處理
在單向的循環(huán)神經(jīng)網(wǎng)絡及其變體中,循環(huán)結構內部狀態(tài)總是從前往后、從過去到未來。這導致了模型提取到的序列特征并非足夠有效。如以下例子,現(xiàn)有一句話需要對其填詞“我會講普通話和____,因為父母分別來自中國和法國”。根據(jù)后半句的信息,可以得到空白處填“法語”更為合理。上述的例子雖然簡單,但是說明單向網(wǎng)絡并不能很好地處理需要依賴未來信息的任務。因此,通過雙向循環(huán)網(wǎng)絡便可以同時捕捉過去和未來信息,可以提取更深層次的文本特征。本文所使用雙向簡單循環(huán)單元(Bi-SRU)結構如圖6所示。
圖6 Bi-SRU結構
(14)
(15)
注意力機制在語音識別、機器翻譯、圖像標注等一些任務中具有顯著的表現(xiàn)。注意力機制通過對數(shù)據(jù)進行自動加權變換,突出重點信息。在本文分類模型中,注意力機制可以學習到各個短語的權重,通過對各個短語加權求和得到向量s完整的計算過程如下所示
(16)
其中,αi表示hi所占的權重大小,即hi對文本語義表示貢獻權重值。公式中的score(·)是針對hi在整個文本表示的重要程度進行打分。us是注意力機制的參數(shù)。score(·)函數(shù)并非一成不變,可以選擇其它打分函數(shù)。
Softmax 在機器學習和深度學習中有著非常廣泛的應用,尤其被用于處理多類別分類的任務。Softmax具體計算如公式
(17)
Vi表示Softmax層的輸入,即前一層的輸出結果。K表示類別數(shù)目。Si表示屬于第i個類別的可能性。
交叉熵函數(shù)能夠體現(xiàn)模型輸出的概率分布和真實樣本的概率分布的相似度,所以在分類問題中,交叉熵函數(shù)往往被選擇作為損失函數(shù),因此本文將平均交叉熵函數(shù)作為模型的損失函數(shù),如式(18)所示
(18)
其中,yi代表樣本所屬的標簽值,pi代表Softmax函數(shù)求出的值,θ為權重參數(shù)。
實驗所使用的數(shù)據(jù)來自于清華大學開源的中文文本分類數(shù)據(jù)集THUCNews。因為此數(shù)據(jù)集過于龐大,于是選取6.5萬篇新聞文檔數(shù)據(jù)作為本文的實驗數(shù)據(jù)。實驗數(shù)據(jù)分別選自于10個類別,并且按照50000∶5000∶10000比例被劃分為訓練集、驗證集、測試集。文中所有實驗都是在此數(shù)據(jù)基礎上完成的。實驗數(shù)據(jù)集的相關信息見表1。
表1 實驗使用的數(shù)據(jù)集
嵌入層所使用的詞向量是事先通過Word2Vec工具在大規(guī)模語料上訓練得到的,由此構成的嵌入層可以提升模型的泛化能力。詞向量維度為60,遠小于Google預訓練詞向量的維度300,是因為詞向量維度大于50對于本文任務的影響甚微[14],并且考慮到節(jié)約資源,提升模型性能。對于不在訓練中的詞,使用在區(qū)間[-0.25,0.25]上的均勻分布方法來初始化。
卷積層卷積核數(shù)目都是256,其卷積窗口取3。Bi-SRU層包含128個簡單循環(huán)單元(SRU)。L2正則項被使用于交叉熵函數(shù),懲罰系數(shù)λ設置為1e-5。Dense層輸出使用了Dropout,其比率為0.5。
本文使用了Mini-batch梯度下降方法來訓練樣本數(shù)據(jù),每次訓練128個樣本,初始學習速率設置為1e-3。因為 Adam 通過計算梯度的一階矩估計和二階矩估計而為不同的參數(shù)設計獨立的自適應性學習率,不斷迭代更新網(wǎng)絡參數(shù),加快模型收斂,所以采用Adam[15]規(guī)則更新優(yōu)化參數(shù)。文中的實驗都是基于Tensorflow框架完成的,所有超參都是通過實驗微調所得。
為了驗證模型的性能,選取10種模型與Conv-BSA模型進行比較,參與比較的模型結構情況如下:
(1)本文選取了SVM[16]作為Conv-BSRU模型的比較對象,并且使用了LibSVM[17]工具;
(2)CNN_non_static[6]使用了3種不同濾波器的卷積結構,將經(jīng)過最大池化后的特征進行融合;
(3)Conv-BLSTM[18]被Li等提出用于電影推薦中的情感分析。卷積層提取到的特征被當作是BLSTM的輸入;
(4)Conv-LSTM模型[19]由3個并行卷積層、LSTM層、全連接層、Softmax層構成。同時將Conv-SRU模型納入對比實驗;
(5)BGRU-Attention[20]被王偉等應用于情感分析,并且取得了滿意的效果。
(6)BGRU[21]模型由一層雙向GRU和Softmax層構成,與模型BGRU-Attention形成對比;
(7)SRU-Attention模型由SRU層、注意力層和Softmax層構成,模型參數(shù)設置與Conv-BSA模型參數(shù)相同;
(8)除卻上述模型之外,將Conv-BSA模型中的簡單循環(huán)單元(SRU)替換成其它循環(huán)單元(如LSTM或GRU)進行同組實驗。
實驗考慮到模型在訓練中是否提升,所以以驗證集的結果為依據(jù)提前停止模型訓練,防止過度擬合。
模型對每個類別的預測結果見表2,從此表中可以觀察到模型類別預測的偏向性。就精確率(precision)而言,娛樂類別的精確率最小,體育以及房產(chǎn)類別的最高,極差為0.09。通過觀察召回率(recall)可以得到家具類別的召回率最小,娛樂類的高達0.98,其精確率高達0.98。結合精確率與召回率的信息,可以得到以下結論:模型容易將預測錯誤的樣本歸類到娛樂類別中。模型并不能很好地預測家居類以及教育類的樣本。
表2 Conv-BSA模型的分類結果
本文將Conv-BSA的SRU替換成其它循環(huán)網(wǎng)絡單元得到Conv-BGA與Conv-BLA模型,對此3種模型進行對比實驗。在同組實驗結果分析中,除了使用常用的分類性能指標:F1-score、recall、precision之外,還將驗證集準確率率、驗證集損失率、迭代時間作為性能評價指標。
表3列出了模型的F1-score、recall,precision和accuracy結果,反映了Conv-BSA模型在各方面都具有突出的表現(xiàn)。
表3 3種模型的分類結果
從圖7中可以看出雖然Conv-BGA模型從訓練數(shù)據(jù)中學習的速度最快,但是Conv-BSA和Conv-BLA模型的學習速度同樣很快,三者的差距并不大。另外,相比Conv-BSA模型穩(wěn)定地學習,Conv-BGA與Conv-BLA模型更容易振蕩。從圖中還可以得到結論:Conv-BSA模型的擬合能力優(yōu)于其余兩個模型。
圖7 準確率變化曲線
圖8反映了模型訓練損失隨迭代批次次數(shù)的變化而變化。從圖中可以得到以下結論:Conv-BGA損失下降速度最快,Conv-BLA下降速度最慢,并且其損失明顯高于其余兩個模型的損失值,同時也驗證了Conv-BGA的學習速度最快,Conv-BLA的學習速度最慢。其次,Conv-BSA模型的損失值最小并且穩(wěn)定減小,振蕩現(xiàn)象并無其余兩個模型那么顯著,這印證了Conv-BSA模型擬合能力最強。
圖8 損失變化曲線
圖9反映的是模型訓練耗時變化。從圖中可以看出Conv-BSA模型的訓練耗時明顯小于Conv-BGA和Conv-BLA模型。在實驗中還發(fā)現(xiàn)一個有趣的現(xiàn)象:GRU簡化了LSTM的內部結構,提升了計算速度,因此計算耗時應該少于LSTM,但是實驗結果卻相反。
圖9 時間損耗曲線
根據(jù)上述分析,可以的得出如下結論:Conv-BSA模型性能優(yōu)于Conv-BGA,優(yōu)于Conv-BLA。SRU不僅能夠提升模型擬合能力和擬合速度,還能明顯降低訓練耗時。
本文不僅設置了同組實驗,還引入其它模型作為對比實驗對象。模型對比結果參照表4。深度網(wǎng)絡模型的分類結果明顯高于基于機器學習的方法,但是各種深度網(wǎng)絡模型準確率之間的差別并不大。Conv-BLSTM的分類結果優(yōu)于Conv-LSTM,這表明雙向的循環(huán)網(wǎng)絡優(yōu)于單向的循環(huán)網(wǎng)絡,因為雙向循環(huán)網(wǎng)絡提取到的語義特征表示更充分。BGRU模型比BGRU-Attention模型低1.11%,這印證了注意力機制能夠讓模型的性能顯著的提高。BGRU-Attention比SRU-Attention模型分類效果更優(yōu),這說明BGRU提取到的上下文特征優(yōu)于SRU提取的特征,這從側面也說明雙向循環(huán)神經(jīng)網(wǎng)絡能夠提取更有效的語義特征。
表4 模型結果對比
為了能夠充分學習文本表示,本文利用卷積層的特性得到短語特征。但是不同長度的短語特征會影響模型的性能。于是本文針對卷積核的窗口大小r×d選取問題設計了一組實驗,r的取值范圍設置為{2, 3, 4, 5, 6, 7},并且在模型Conv-BSA上進行了驗證,根據(jù)結果繪制了表5。
表5 各尺寸對應的模型準確率
從表5中可以觀察到當卷積核尺寸組合為3時,模型取得最佳結果。各種尺寸得到的結果也是足夠可觀,波動范圍在一個百分點當中。
基于詞粒度的雙向長短時記憶網(wǎng)絡雖然可以結合上下文信息學習到深層次的語義特征,但是并不充分,針對上述問題,同時考慮到短語會比詞更能準確地表達文本語義,本文提出了一種基于卷積和雙向簡單循環(huán)單元的文本分類網(wǎng)絡模型(Conv-BSA),模型先利用卷積層和局部池化操作提取并提煉短語特征,其次將短語序列送入雙向簡單循環(huán)單元中提取上下文語義特征,然后通過注意力層得到最終的文本表示,最后經(jīng)過Softmax層得到分類結果。除了利用卷積層提取短語特征外,還嘗試對3種循環(huán)神經(jīng)單元進行了對比分析。實驗結果表明,簡單循環(huán)單元(SRU)比其余兩種結構具有更顯著的表現(xiàn),不僅能夠更加有效地分類,還能在保持分類效果的同時減少計算耗時。在實驗中還發(fā)現(xiàn):理論上GRU的速度應該快于LSTM,但是實驗結果卻相反。實驗所用的數(shù)據(jù)集來自于新聞數(shù)據(jù)集,屬于長序列文本,實驗并未添加短序列數(shù)據(jù)集加以驗證其性能。除此之外,可以尋找一種能夠比簡單循環(huán)單元性能更優(yōu)的循環(huán)結構。