翟一鳴,王斌君,周枝凝,仝 鑫
中國人民公安大學(xué) 警務(wù)信息工程與網(wǎng)絡(luò)安全學(xué)院,北京100038
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,其上的海量文本信息與日俱增,如何快速有效地對互聯(lián)網(wǎng)上的文本信息進(jìn)行過濾、管理、挖掘一直是自然語言處理領(lǐng)域的研究熱點和主攻研究方向,而文本分類是其中的關(guān)鍵技術(shù)。
在早期,文本分類一般選用特征工程與傳統(tǒng)機(jī)器學(xué)習(xí)模型相結(jié)合的技術(shù)路線[1]。如Joachims[2]第一個提出使用支持向量機(jī)SVM進(jìn)行自動文本分類,在當(dāng)時與其他四種標(biāo)準(zhǔn)方法的比較中取得了最好的結(jié)果。傳統(tǒng)機(jī)器學(xué)習(xí)分類模型主要有SVM[3]、KNN[4]、樸素貝葉斯[5]等,其問題是對文本特征的表達(dá)能力有限,在學(xué)習(xí)的過程中需要很多人工設(shè)計的特征進(jìn)行輔助,很難提取到深層次的復(fù)雜文本特征,使得其分類的精度受到限制。
除了分類模型的不足外,傳統(tǒng)文本分類方法中的文本表示也有一定的問題,如應(yīng)用廣泛的詞袋模型(Bag of word,Bow)將文本表示為高維且稀疏的One-hot向量,這種做法沒有考慮到文本中的上下文或詞序信息,且無法表示出單詞的詞義信息。為優(yōu)化文本表示問題,Hinton[6]提出了詞的分布式表示概念,將詞表示為低維的、稠密的連續(xù)實數(shù)向量。Bengio等人[7]提出使用神經(jīng)網(wǎng)絡(luò)構(gòu)建語言模型,在過程中將詞的One-hot表示轉(zhuǎn)化為分布式表示。Mikolov等[8-9]提出了基于CBOW架構(gòu)和Skip-gram架構(gòu)的word2vec模型,以進(jìn)行詞向量計算。這些文本表示方法的研究為深度學(xué)習(xí)技術(shù)在文本分類領(lǐng)域的應(yīng)用奠定了堅實的基礎(chǔ)。
隨著研究的深入,深度學(xué)習(xí)的各類技術(shù)方法開始廣泛應(yīng)用。Kim[10]提出了經(jīng)典的TextCNN模型,使用一層卷積和一層最大池化的結(jié)構(gòu)對文本進(jìn)行特征提取,隨后進(jìn)行分類。康雁等人[11]提出了textSE-ResNeXt集成模型用于文本情感分類,在其中采用了動態(tài)卷積核策略,這樣卷積操作能更好地適應(yīng)輸入文本,更有效地提取文本數(shù)據(jù)特征。張曼等人[12]將全卷積的思想引入到字符級文本分類任務(wù)中,使用卷積層替換全連接層,且將LRN層添加至卷積池化層后,在加快模型收斂速度的同時也提高了模型分類的準(zhǔn)確性。以上各類方法都使用CNN對文本進(jìn)行特征提取,其問題是卷積操作受限于卷積窗口的大小,只能夠挖掘文本的局部特征信息,很難提取到文本中的長期依賴關(guān)系。為有效提取文本中的長期依賴關(guān)系,各類研究將循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)結(jié)構(gòu),特別是LSTM[13]、BiLSTM[14]、GRU[15]等加入到了文本特征提取中。Zhou等人[16]提出了基于注意力的BiLSTM模型,在BiLSTM的特征提取層與分類層之間加入了注意力層,通過注意力機(jī)制對BiLSTM每個時刻的輸出進(jìn)行特征提取,以得到最終的文本特征表示?;谧⒁饬Φ腂iLSTM模型能夠在不使用外部信息的情況下自動關(guān)注對文本分類貢獻(xiàn)大的詞語,進(jìn)而提取文本重要特征,但其本身結(jié)構(gòu)較為簡單,進(jìn)行文本分類的準(zhǔn)確率并不是很高。為減少對人為設(shè)計特征的依賴以及解決CNN的特征提取受限于卷積窗口的問題,Lai等人[17]提出了循環(huán)卷積神經(jīng)網(wǎng)絡(luò)(Recurrent Convolutional Neural Network,RCNN)模型用于文本分類,RCNN使用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)對文本特征進(jìn)行提取,再將提取到的上下文信息與原本詞向量結(jié)合,生成新的詞表示,以此代替CNN中的卷積結(jié)構(gòu),最后使用最大池化得到文本中最重要的潛在語義信息。RCNN解決了固定窗口的卷積操作使得每一個詞向量上下文受限的問題,新的詞表示盡可能多地包含了上下文信息。但RCNN在池化層使用了最大池化,即在所有新的詞表示中選取了特征值最突出的一個來代表整條文本。這種最大池化策略較為單一,不能在訓(xùn)練過程中根據(jù)任務(wù)情況動態(tài)優(yōu)化,只選取了最突出的特征,忽略了其他可能的對分類也有貢獻(xiàn)的特征。
為解決RCNN存在的問題,進(jìn)一步提高文本分類的效果,本文提出一種基于多頭注意力池化的循環(huán)卷積神經(jīng)網(wǎng)絡(luò)(Multi-Head Attention Pooling-based Recurrent Convolutional Neural Network,MHAP-RCNN)模型,主要內(nèi)容如下:
(1)在RCNN模型的基礎(chǔ)上,對池化層的策略進(jìn)行改進(jìn),不使用最大池化,而是結(jié)合注意力機(jī)制的思想,進(jìn)行注意力池化。在注意力池化的過程中,根據(jù)新的詞表示對分類的重要程度,為其分配不同的權(quán)重,重要程度越大,其權(quán)重系數(shù)就越高,再將權(quán)重與其對應(yīng)新詞表示的特征值加權(quán)求和,得到文本特征表示。使用注意力池化策略可以盡可能多地考慮對分類貢獻(xiàn)大的各個特征,且注意力權(quán)重的分布能在訓(xùn)練過程中進(jìn)行動態(tài)優(yōu)化。
(2)在注意力池化的基礎(chǔ)上,引入多頭機(jī)制,進(jìn)行多頭注意力池化。雖然注意力池化策略可以盡可能多地考慮對分類貢獻(xiàn)大的各個特征,但其也有一定的側(cè)重點,僅進(jìn)行一次注意力池化提取到的文本特征仍有局限性。因此,對新的詞表示進(jìn)行多次不同映射[18],在其多個特征表示子空間中分別進(jìn)行注意力池化,最后再將多頭結(jié)果進(jìn)行融合,可使模型更加充分地提取重要特征,提高模型的學(xué)習(xí)能力。
為進(jìn)一步提升文本分類的效果,針對上文中提到的經(jīng)典RCNN所存在的問題,本文提出MHAP-RCNN模型,其總體架構(gòu)如圖1所示。
在MHAP-RCNN模型中,使用word2vec模型預(yù)訓(xùn)練的詞嵌入向量對文本中的詞進(jìn)行表示。Word2vec模型可以通過對大規(guī)模文本數(shù)據(jù)的訓(xùn)練得到低維且稠密的詞向量,這些詞向量能夠表示詞的語義信息。Word2vec模型有CBOW和Skip-gram兩種結(jié)構(gòu),分別如圖2所示。
這兩種結(jié)構(gòu)的組成部分相同,即包括輸入層、映射層和輸出層,不同的是在訓(xùn)練過程中,CBOW結(jié)構(gòu)使用周圍的詞來預(yù)測中間詞,Skip-gram結(jié)構(gòu)則使用中間詞來預(yù)測周圍的詞。CBOW結(jié)構(gòu)訓(xùn)練詞嵌入的速度較快,但從表達(dá)語義信息的準(zhǔn)確性方面來看,Skip-gram模型的效果更好[9],因此本文選用Skip-gram結(jié)構(gòu)的word2vec模型。在訓(xùn)練過程中,通過最大化公式(1)中的對數(shù)似然函數(shù)來得到所有單詞的詞嵌入。其中,w t+j表示單詞w t的上下文內(nèi)容。
圖1 基于MHAP-RCNN模型的文本分類結(jié)構(gòu)
圖2 CBOW結(jié)構(gòu)和Skip-gram結(jié)構(gòu)
假定一條文本中有N個詞,該文本可以表示為[w1,w2,…,w N],在經(jīng)過詞嵌入層后,文本表示轉(zhuǎn)換為E=[e1,e2,…,e N],e i∈Rd,d為詞向量維度。
在詞表示學(xué)習(xí)部分中,采取與經(jīng)典RCNN相同的做法,使用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)獲取詞語的上下文信息,再將該上下文信息與詞向量結(jié)合生成新的詞表示。雙向循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是正向循環(huán)神經(jīng)網(wǎng)絡(luò)和反向循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)合,正向循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入為正常順序的文本,反向循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入則是逆序的文本,兩個網(wǎng)絡(luò)獨立進(jìn)行計算。由于循環(huán)神經(jīng)網(wǎng)絡(luò)能夠?qū)⒁逊治鰞?nèi)容的語義信息存儲下來,因此采用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)可以較為充分地提取文本中某個詞的上文信息和下文信息。對于文本中的某個詞來說,其上文信息就可用上一個詞輸入正向循環(huán)神經(jīng)網(wǎng)絡(luò)時該時刻的輸出來表示,而其下文信息就可用下一個單詞輸入反向循環(huán)神經(jīng)網(wǎng)絡(luò)時該時刻的輸出來表示。
e i表示第i個單詞w i的詞向量,設(shè)l i表示單詞w i的上文,r i表示單詞w i的下文,l i與r i均為維度為c的向量。單詞w i的上文l i和下文r i可分別通過公式(2)和公式(3)獲得。
其中,l i-1為上一個單詞w i-1的上文,r i+1為下一個單詞w i+1的下文;e i-1和e i+1分別為上一個單詞w i-1和下一個單詞w i+1的詞向量;W(r),W l∈Rc×c為隱藏層的轉(zhuǎn)換矩陣;W(sl),W(sr)∈Rc×d分別為用于當(dāng)前單詞w i與上一單詞w i-1和下一單詞w i+1進(jìn)行語義信息結(jié)合的矩陣;f為非線性激活函數(shù)。需要注意的是,對于輸入模型的任意文本,其第一個單詞w1的上文和最后一個單詞w N的下文分別使用相同的l1和r N,在本文中使用0填充。
隨后,使用公式(4)得到單詞w i的新的詞表示x i。新的詞表示能夠在一定程度上消除單詞歧義,同時包含原單詞信息及其上下文信息。
在經(jīng)典RCNN模型中,對詞表示學(xué)習(xí)部分的結(jié)果進(jìn)行一次tanh函數(shù)激活的非線性轉(zhuǎn)換,再進(jìn)行最大池化,將不同長度的文本轉(zhuǎn)換為一個固定長度的特征向量表示,這樣做是使用特征最突出的一個新詞表示來表示整條文本,但最終對分類有貢獻(xiàn)的文本重要特征可能存在于任意一個新詞表示中,而不是只存在于特征值最突出的新詞表示中,因此需要考慮每個新詞表示中的信息對分類的貢獻(xiàn)。針對以上問題,MHAP-RCNN模型不采取原本的最大池化策略,而是結(jié)合注意力的思想和多頭機(jī)制,進(jìn)行多頭注意力池化。
在經(jīng)過詞表示學(xué)習(xí)部分后,一條文本的表示變?yōu)閄=[x1,x2,…,x N],x i∈Rd+2c。假設(shè)多頭機(jī)制中的頭數(shù)為H,那么第i頭對于新文本表示X的映射輸出如公式(5)所示:
對于每一頭的映射輸出,進(jìn)行一次注意力池化。根據(jù)注意力機(jī)制的思想,注意力池化將會動態(tài)地為每一頭映射輸出中的每個表示分配一個權(quán)重,以體現(xiàn)其對分類結(jié)果的貢獻(xiàn),隨后將每個表示的特征值與其權(quán)重進(jìn)行加權(quán)求和,并使用tanh函數(shù)激活,得到每一頭的最終輸出。以第i頭為例,處理過程如公式(6)所示:
其中,u i∈Rk表示第i頭中隨機(jī)初始化的參數(shù)向量,并將會在整個學(xué)習(xí)的過程中進(jìn)行動態(tài)更新,每一頭將會學(xué)習(xí)一個不同的u。αi∈RN表示第i頭得到的注意力權(quán)重,表示第i頭根據(jù)注意力權(quán)重進(jìn)行加權(quán)求和的結(jié)果,表示第i頭進(jìn)行注意力池化的最終輸出。
由于頭數(shù)為H,將得到H個注意力池化的輸出對其進(jìn)行融合,處理過程如公式(7)所示:
其中,y(5)∈RHk表示對H個注意力池化輸出進(jìn)行拼接的結(jié)果,y(6)表示融合的結(jié)果,W(6)∈RHk×o,b(6)∈Ro,o為融合輸出維度。
根據(jù)多頭注意力池化部分得到的結(jié)果對文本進(jìn)行分類,處理過程如公式(8)所示:
其中,y(7)為輸入文本的預(yù)測概率分布,W(7)∈Ro×C,b(7)∈RC,C為分類類別個數(shù)。
同時,在詞表示學(xué)習(xí)部分的雙向循環(huán)神經(jīng)網(wǎng)絡(luò)中以及多頭注意力池化和分類層之間加入dropout,進(jìn)一步防止過擬合,提高模型的泛化能力。
為證明所提模型的有效性,本文選取譚松波酒店評論數(shù)據(jù)集、中文文本分類數(shù)據(jù)集THUCNews的子集和復(fù)旦大學(xué)文本分類語料庫進(jìn)行實驗,實驗所用具體數(shù)據(jù)集情況如表1所示。
表1 數(shù)據(jù)集劃分
譚松波酒店評論數(shù)據(jù)集由中科院計算所譚松波博士整理收集,原數(shù)據(jù)集包含10 000條數(shù)據(jù),劃分為兩個類別,其中正向7 000條,負(fù)向3 000條。在對原始數(shù)據(jù)集進(jìn)行去重和篩選后,本文在每個類別中選取2 700條數(shù)據(jù),共計5 400條數(shù)據(jù)進(jìn)行實驗。
中文文本分類數(shù)據(jù)集THUCNews是根據(jù)新浪新聞的歷史數(shù)據(jù)篩選過濾生成,包含74萬篇新聞文檔,共劃分為14個類別。本文選取其中的12個類別,每個類別選取8 000篇文檔,共計96 000篇文檔進(jìn)行實驗。
復(fù)旦大學(xué)文本分類語料庫由復(fù)旦大學(xué)李榮路老師整理并提供,共劃分為20個類別,數(shù)據(jù)集分為訓(xùn)練和測試兩個集合,其中訓(xùn)練集包含9 804篇文檔,測試集包含9 833篇文檔,共計19 637篇文檔。本文使用數(shù)據(jù)集全集,并采取與文獻(xiàn)[17]相同的做法,將訓(xùn)練集中的10%劃分到驗證集當(dāng)中。
針對三個分類數(shù)據(jù)集,均采用jieba分詞,實驗過程中沒有去除文本中的任何停用詞。
關(guān)于模型中的超參數(shù)設(shè)置。實驗中的詞向量由Skipgram結(jié)構(gòu)的word2vec訓(xùn)練得到,且使用word2vec的默認(rèn)參數(shù),詞向量維度d=50;雙向循環(huán)神經(jīng)網(wǎng)絡(luò)使用雙向LSTM,詞上文及詞下文向量的維度c=50,對新的詞表示做映射后的維度k=100,頭數(shù)H=10,融合輸出維度o=100;dropout保留率設(shè)置為0.5,隨機(jī)梯度下降的學(xué)習(xí)率設(shè)置為0.01,批處理大小batch_size=128。
為體現(xiàn)模型的有效性,除經(jīng)典RCNN模型外,本文還選取了多個在文本分類任務(wù)中應(yīng)用廣泛且效果較好的經(jīng)典模型進(jìn)行復(fù)現(xiàn)比較,包括TextCNN[10]、BiLSTM、ATT-BiLSTM[16]。其中,TextCNN選用3、4、5三個大小的卷積核,卷積核數(shù)目為150;BiLSTM和ATT-BiLSTM中隱層維度選用50,其他主要參數(shù)設(shè)置與2.1節(jié)中的實驗設(shè)置保持一致。同時設(shè)計了基于注意力池化的循環(huán)卷積神經(jīng)網(wǎng)絡(luò)(Attention Pooling-based Recurrent Convolutional Neural Network,AP-RCNN)模型,該模型中僅將RCNN中的最大池化改為注意力池化,沒有使用多頭注意力池化。通過AP-RCNN與RCNN、MHAP-RCNN之間的的對比,來體現(xiàn)進(jìn)行注意力池化和引入多頭機(jī)制對模型的影響。
本文還引用了在相同數(shù)據(jù)集上已有的工作成果進(jìn)行比較,包括:文獻(xiàn)[19]將文本使用句向量表示,并輸入到BGRU-CNN混合模型中,其模型也是經(jīng)典RCNN模型的一種變體,在THUCNews數(shù)據(jù)集上取得了較好的效果;文獻(xiàn)[20]使用自注意力機(jī)制對詞向量進(jìn)行處理,提出一種關(guān)鍵詞提取與CNN相結(jié)合的self-attention+cnn文本分類模型,其模型在復(fù)旦數(shù)據(jù)集上取得了較好的效果。
實驗選用測試集準(zhǔn)確率及Macro-F1值評估各個模型的效果,為使實驗結(jié)果更加真實有效,選取三次重復(fù)實驗結(jié)果的中值作為作為最終結(jié)果,具體對比結(jié)果如表2所示。
從表2中可以看出,無論是測試集準(zhǔn)確率還是Macro-F1值,本文模型MHAP-RCNN在三個數(shù)據(jù)集上都取得了最好的結(jié)果。重點對RCNN、AP-RCNN、MHAP-RCNN三個模型的實驗結(jié)果進(jìn)行分析。對比RCNN,AP-RCNN在將最大池化改變?yōu)樽⒁饬Τ鼗螅齻€數(shù)據(jù)集上的測試集準(zhǔn)確率和F1值都有所提升;對比AP-RCNN,MHAP-RCNN在引入多頭機(jī)制,進(jìn)行多頭注意力池化后,其性能又有顯著增強(qiáng)。這也驗證了前文所述,注意力池化相比最大池化,由于考慮了每個新的詞表示所包含的信息對分類的貢獻(xiàn),提取到了更多有助于分類的重要特征,但一次注意力池化仍有局限;多頭注意力池化在不同的特征表示子空間中進(jìn)行多次注意力池化,更加充分地提取了文本重要特征。
表2 各模型實驗結(jié)果 %
從數(shù)據(jù)集類型來看。酒店評論數(shù)據(jù)集為二分類數(shù)據(jù)集,THUCNews和復(fù)旦數(shù)據(jù)集為多分類數(shù)據(jù)集。與其他各模型相比,MHAP-RCNN模型在文本二分類和多分類任務(wù)中都表現(xiàn)更優(yōu)。同時不論是對各類別訓(xùn)練數(shù)據(jù)量少、整體數(shù)據(jù)規(guī)模較小的酒店評論和復(fù)旦數(shù)據(jù)集,還是對各類別訓(xùn)練數(shù)據(jù)量比較充足、整體數(shù)據(jù)規(guī)模較大的THUCNews數(shù)據(jù)集,MHAP-RCNN模型都表現(xiàn)更好。對于各種類型和規(guī)模的文本分類來說,模型分類結(jié)果優(yōu)劣的關(guān)鍵是模型對文本的特征提取能力,MHAP-RCNN中的多頭注意力池化機(jī)制能夠更加充分、準(zhǔn)確地提取文本重要特征,因此能夠取得更好的文本分類效果。
為更加形象地體現(xiàn)MHAP-RCNN模型的優(yōu)越性,本文對各模型的訓(xùn)練過程進(jìn)行了進(jìn)一步探究,結(jié)果如圖3所示。圖3繪制了在復(fù)旦數(shù)據(jù)集中,各個模型在訓(xùn)練過程中的驗證集準(zhǔn)確率(Valaccuracy)隨訓(xùn)練周期(Epoch)變化的曲線。
圖3 驗證集準(zhǔn)確率變化曲線
從圖3中可以直觀地看出,與其他各模型相比,MHAP-RCNN模型收斂速度快,訓(xùn)練過程穩(wěn)定,整個曲線相對平穩(wěn),且準(zhǔn)確率高。與AP-RCNN和RCNN相比,MHAP-RCNN在第一個Epoch就達(dá)到了較高的準(zhǔn)確率,且在隨后的訓(xùn)練過程中準(zhǔn)確率一直領(lǐng)先,體現(xiàn)了多頭注意力池化所帶來的優(yōu)勢。
在其他參數(shù)保持完全一致的情況下,本文還以不同的頭數(shù)做實驗例證以觀察模型預(yù)測準(zhǔn)確率的變化,結(jié)果如圖4所示。圖4中繪制了在復(fù)旦數(shù)據(jù)集中,MHAP-RCNN模型的測試集準(zhǔn)確率(Test accuracy)隨頭數(shù)(Number of heads)變化的曲線。
圖4 頭數(shù)對測試集準(zhǔn)確率的影響
從圖4中可以看出,當(dāng)頭數(shù)小于10時,測試集準(zhǔn)確率隨頭數(shù)的增多而逐漸上升;當(dāng)頭數(shù)等于10時,測試集準(zhǔn)確率達(dá)到最高;當(dāng)頭數(shù)大于10時,雖然有所波動,但測試集準(zhǔn)確率整體呈下降趨勢。這說明對于復(fù)旦數(shù)據(jù)集,頭數(shù)為10的MHAP-RCNN模型對文本的特征提取能力最佳,且頭數(shù)并不是越多越好,對于不同數(shù)據(jù)集,其最佳頭數(shù)可能不同,具體還需根據(jù)數(shù)據(jù)集情況確定。
通過改變池化層的策略,使用多頭注意力池化,本文提出了MHAP-RCNN模型。在酒店評論、THUCNnews和復(fù)旦三個文本分類數(shù)據(jù)集上的實驗驗證了MHAPRCNN模型的有效性和優(yōu)越性,實驗結(jié)果表明,本文提出的模型在一定程度上解決了經(jīng)典RCNN模型使用最大池化存在的問題,取得了更好的文本分類效果。從模型的實時性表現(xiàn)來看,MHAP-RCNN訓(xùn)練和測試的耗時比經(jīng)典RCNN略久一些,但差別較小,這是因為注意力池化需要利用隨機(jī)初始化的參數(shù)向量來得到注意力權(quán)重,同時還要將注意力權(quán)重和對應(yīng)新詞表示的特征值加權(quán)求和,與只選擇最突出特征值的最大池化相比計算量更大。但上述部分都可利用矩陣并行計算,且多個注意力頭之間也可以并行計算,實際耗費(fèi)時間較少。但MHAP-RCNN的實時性表現(xiàn)與TextCNN相比相差較大,這是因為詞表示學(xué)習(xí)部分中的BiLSTM結(jié)構(gòu)相比CNN更加復(fù)雜,且無法像CNN一樣進(jìn)行并行計算。下一步的研究將探索把自注意力機(jī)制融入到詞表示學(xué)習(xí)中,減少詞表示學(xué)習(xí)的時間,進(jìn)一步提升模型的文本分類性能。