張凌慷
(上海電力大學(xué)電子與信息工程學(xué)院,上海 201306)
隨著互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)中的文本信息呈指數(shù)性增長(zhǎng)。文本分類技術(shù)可以從純文本的大量冗余信息中分類出所需的信息,分類后的文本可以應(yīng)用于自然語言處理的許多下游任務(wù)中,例如問答系統(tǒng)、主題分類、信息檢索和情感分析等領(lǐng)域。
文本分類主要可以分為特征提取、分類器選擇與訓(xùn)練、評(píng)估分類結(jié)果與反饋等3 大過程。其中特征提取和分類器的選擇與訓(xùn)練共同決定了文本分類任務(wù)的最終效果。在傳統(tǒng)的機(jī)器學(xué)習(xí)方法中,往往選擇提取詞頻和詞袋特征,再訓(xùn)練模型。經(jīng)典的機(jī)器學(xué)習(xí)方法有樸素貝葉斯、支持向量機(jī)等。使用傳統(tǒng)的機(jī)器學(xué)習(xí)方法會(huì)導(dǎo)致文本分類準(zhǔn)確率較低,存在特征提取時(shí)表征能力有限、數(shù)據(jù)稀疏和特征向量維度過高的問題。
隨著深度學(xué)習(xí)的流行,基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)也被應(yīng)用于文本分類任務(wù)中,并取得了相對(duì)較好的分類效果[1]。Kim 等[2]在卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的基礎(chǔ)上提出了TextCNN,直接對(duì)句子進(jìn)行文本分類。長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long-Short Term Memory,LSTM)[3]和基于序列的自動(dòng)編碼器[4]和在LSTM 詞嵌入層加入對(duì)抗擾動(dòng)[5],得益于該模型在文本表示和對(duì)復(fù)雜特征強(qiáng)大的表征能力,取得了較好的效果。文獻(xiàn)[6]提出使用門控循環(huán)單元GRU(Gated recurrent Unit)和注意力機(jī)制進(jìn)行文本分類。
Zhao 等[7]首先在文本分類任務(wù)中引入了膠囊網(wǎng)絡(luò)(Capsule Network),減少了CNN 在池化操作中特征丟失的問題。
本文在膠囊網(wǎng)絡(luò)的基礎(chǔ)上,提出一種融合GRU,注意力機(jī)制的膠囊網(wǎng)絡(luò)文本分類模型。先使用GRU 取代原有的卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行特征提取,結(jié)合注意力機(jī)制對(duì)GRU 提取的特征重新進(jìn)行權(quán)重分配,對(duì)文本內(nèi)容貢獻(xiàn)大的分配較大的權(quán)重,最后使用膠囊網(wǎng)絡(luò)進(jìn)行文本分類,從而解決CNN 在池化過程中的特征丟失問題。
CNN 在每次卷積之后,都會(huì)進(jìn)行池化操作對(duì)特征圖進(jìn)行下采樣來簡(jiǎn)化計(jì)算并改善局部特征。但池化操作從上一層傳遞到下一層的是標(biāo)量,導(dǎo)致無法考慮一些位置與姿態(tài)的信息。因此CNN 在識(shí)別具有空間關(guān)系的特征時(shí)存在很大的局限性。
為了解決CNN 中存在的問題,Hinton[8]于2011 年首次提出了“膠囊”的概念。其創(chuàng)新之處就是使用向量膠囊來取代CNN 中的標(biāo)量神經(jīng)元,使得膠囊可以保留輸入對(duì)象之間的空間信息?;诖?,Sabour 等[9]在2017 年進(jìn)一步提出了具有動(dòng)態(tài)路由算法的膠囊網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)包括一層卷積層來提取特征;初級(jí)膠囊層將標(biāo)量特征圖編碼為向量膠囊;高層膠囊層進(jìn)行分類。
Zhao 在句子中的不同位置用卷積操作提取局部特征,接著訓(xùn)練2 層膠囊層提取全局特征,最后在全連接層輸出每個(gè)文本類的概率送入Softmax 分類器進(jìn)行分類。Kim 等[10]將靜態(tài)路由代替動(dòng)態(tài)路由機(jī)制,忽略句子中部分空間信息,達(dá)到簡(jiǎn)化路由計(jì)算的目的。
本文提出一種融合了GRU 和注意力機(jī)制的膠囊網(wǎng)絡(luò)文本分類模型,主要由全局特征提取模塊和膠囊網(wǎng)絡(luò)文本分類模塊組成,結(jié)構(gòu)如圖1 所示。
圖1 模型結(jié)構(gòu)
2.1.1 GRU
GRU 是循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的一種,相比LSTM,使用GRU 能得到相當(dāng)?shù)男Ч⑶腋菀子?xùn)練,能夠很大程度上提高訓(xùn)練效率。GRU 由更新門Zt、重置門rt組成,ht為記憶單元。其結(jié)構(gòu)如圖2 所示。
圖2 GRU 結(jié)構(gòu)圖
首先,通過上一個(gè)傳輸下來的狀態(tài)ht-1和當(dāng)前節(jié)點(diǎn)的輸入xt來獲取重置門rt和更新門Zt的狀態(tài):
更新門Zt信號(hào)范圍為0~1。門控信號(hào)越接近1,代表記憶下的數(shù)據(jù)越多。GRU 的優(yōu)點(diǎn)在于使用同一個(gè)門控Zt同時(shí)進(jìn)行遺忘和選擇。
2.1.2 注意力機(jī)制
在文本分類任務(wù)中,一個(gè)句子中的不同單詞對(duì)于分類效果的影響是不同的,引入注意力機(jī)制可以將較重要的單詞分配較大的權(quán)重。將GRU 輸出的ht作為輸入:其中:Wa為權(quán)重矩陣,b0為偏置,ai為經(jīng)過softmax 函數(shù)后得到的每個(gè)詞的標(biāo)準(zhǔn)化權(quán)重,然后通過加權(quán)計(jì)算得到注意力機(jī)制的輸出向量vi作為膠囊網(wǎng)絡(luò)的輸入。
膠囊網(wǎng)絡(luò)的核心思想就是用向量膠囊來取代CNN中的標(biāo)量神經(jīng)元,通過動(dòng)態(tài)路由算法來不斷迭代低層膠囊和高層膠囊之間的權(quán)重,以確保每個(gè)輸出發(fā)射到高層膠囊中。
動(dòng)態(tài)路由中每個(gè)低層膠囊到高層膠囊的概率:
在公式(4)中,利用擠壓函數(shù)(Squash Function)進(jìn)行歸一化后得到高層膠囊Vj:
動(dòng)態(tài)路由多次迭代之后,不斷調(diào)整耦合系數(shù)Cij,得到修正后的高層膠囊Vj。
為了驗(yàn)證算法在文本分類任務(wù)上的效果,采用基于Tensorflow 的Keras 進(jìn)行開發(fā),編程語言為Python3.7。服務(wù)器配置如下:操作系統(tǒng)為Ubuntu16.04,內(nèi)存為16G,GPU 為Nvidia GeForce Titan X。
采用今日頭條中文新聞分類數(shù)據(jù)集TNEWS 進(jìn)行實(shí)驗(yàn),該數(shù)據(jù)集包含382 688 條新聞文本,可被標(biāo)出類別的共有15 類,去掉5 類樣本數(shù)不足的數(shù)據(jù),保留剩下10 類樣本作為分類文本分解。每類數(shù)據(jù)都選取2 000 條文本,隨機(jī)打亂數(shù)據(jù)集。訓(xùn)練集、驗(yàn)證集和測(cè)試集的劃分比例為8∶1∶1。實(shí)驗(yàn)的預(yù)處理部分先將下載好的文本轉(zhuǎn)碼,采用jieba 分詞工具對(duì)新聞文本數(shù)據(jù)進(jìn)行分詞處理,再加上對(duì)應(yīng)的標(biāo)簽。
為了準(zhǔn)確評(píng)價(jià)本文所提出的模型的性能,采用準(zhǔn)確率(Accuracy)作為評(píng)價(jià)指標(biāo),其定義:
其中:TP代表正確識(shí)別的正樣本數(shù)量;FP代表實(shí)際為正樣本,識(shí)別為負(fù)樣本的數(shù)量。
將預(yù)訓(xùn)練得到的word2vec 詞向量作為GRU 的輸入,文本長(zhǎng)度100,詞向量維度300。訓(xùn)練使用學(xué)習(xí)率0.001 的Adam 優(yōu)化器,在每個(gè)epoch 將學(xué)習(xí)率衰減為0.99。卷積層中將每個(gè)文本數(shù)據(jù)都處理成100×300 的矩陣形式。超過100 的文本截取前100 個(gè)詞,不足的文本加零補(bǔ)齊。GRU 單元設(shè)置為64 個(gè),底層膠囊個(gè)數(shù)設(shè)置為32個(gè)。動(dòng)態(tài)路由迭代次數(shù)為3 次,高層膠囊個(gè)數(shù)11 個(gè),對(duì)應(yīng)10 類新聞分類,其中標(biāo)簽0 不用,膠囊的模長(zhǎng)代表所屬分類的概率。采用TextCNN 和capsule-B 作為基線進(jìn)行對(duì)比分析。
TextCNN、Capsule-B 與本文方法在TNEWS 上的實(shí)驗(yàn)結(jié)果見表1。
表1 對(duì)比實(shí)驗(yàn)分類結(jié)果(準(zhǔn)確率)
3 種方法的epoch 都設(shè)置為40。由表1 可見,在TNEWS 數(shù)據(jù)集上,本文提出的模型分類效果比傳統(tǒng)的CNN 算法,以及原有的膠囊網(wǎng)絡(luò)算法的分類效果要好。本文模型在測(cè)試集上的分類準(zhǔn)確率達(dá)到了87.88%,比TextCNN 的分類結(jié)果高2.81%,比Capsule-B 的分類結(jié)果高3.24%。驗(yàn)證了本文提出的模型分類有效性。
本文融合GRU 和注意力機(jī)制的優(yōu)點(diǎn),提出了一種融合GRU 和注意力機(jī)制的膠囊網(wǎng)絡(luò)文本分類方法。該方法使用GRU 有效提取文本的全局特征,用注意力機(jī)制進(jìn)行權(quán)重分配,進(jìn)一步關(guān)注文本序列中的關(guān)鍵信息。替換掉了原有膠囊網(wǎng)絡(luò)特征提取時(shí)使用的CNN,去除了池化操作帶來的信息丟失問題。實(shí)驗(yàn)結(jié)果證明本文算法有效地提高了文本分類的準(zhǔn)確性。下一步工作將對(duì)模型進(jìn)一步優(yōu)化,提高分類的準(zhǔn)確率。