朱海景, 余 諒, 盛鐘松, 陳貴強, 王 爭
(四川大學計算機學院, 成都 610065)
文本分類是自然語言處理中至關重要的一步,其目的是利用非結構化的文本數據來歸納信息[1].早期的文本分類方法是通過人工設計特征,然后用機器學習方法進行分類.但隨著深度學習的深入研究,神經網絡等被大量用于文本分類,并且能夠自動獲取文本特征,分類效果更好.
膠囊網絡是一種新興的神經網絡結構,該結構的特點是能在小數據集中提升分類準確率.膠囊網絡模型是2017年由Sabour等[2]在NIPS上首次提出的神經網絡模型,類似于卷積神經網絡,在圖像領域獲得了很好的效果.Ding等[3]采用分組反饋膠囊網絡,利用分組膠囊獲取局部信息并共享權重矩陣以減少參數,用反饋方式的網絡模型預測膠囊來提高應對復雜數據環境的適應能力.Zhao等[4]將膠囊網絡引入到文本分類領域,也取得了不錯的性能.近年來,隨著對膠囊網絡研究的不斷深入,其改進方法也越來越多,但主要集中在兩個方面:(1) 是提升膠囊質量;(2) 是改進路由規則減少網絡參數[5].本文通過對膠囊進行分組,以提取更有價值的文本信息,減少冗余信息,達到提高膠囊質量的目的;同時,利用靜態路由機制[6],去除動態路由中的耦合系數[2];采用膠囊壓縮[7]操作,減少了網絡參數.為此我們提出了CapsNet-GSR文本分類模型.
本文的主要貢獻有三個方面:(1) 將分組膠囊網絡應用到文本分類中,驗證了該方法在文本分類領域的有效性;(2) 采用膠囊壓縮和靜態路由機制減少網絡模型的參數;(3) 通過對比實驗,突出本文方法在模型參數和訓練時間上具有明顯優勢.
文本分類是指用計算機對文本數據集(或其他實體)按照一定的分類標準或體系進行自動分類標記的過程[8-9].文本分類始于20世紀50年代,利用的是專家規則,但該方法需要對相關領域有深入研究才能寫出合適的規則,因此發展受限.80年代出現了專家系統,即利用專家掌握的知識構造分類系統[10],比如CONSTRUE系統[11].90年代有了支持向量機,便產生了基于機器學習的文本分類模型.2010年后隨著深度學習的廣泛運用,基于神經網絡的文本分類模型表現突出,并廣泛應用于學術界和工業界.
從文本分類的發展來看,文本分類模型可分為傳統的機器學習模型和深度學習模型.
傳統的機器學習模型有樸素貝葉斯(NB)[12]、k-最近鄰(KNN)[13]、決策樹(DT)[14]、支持向量機(SVM)[15]等.與早期基于規則的方法相比,此類模型在準確性和穩定性上更甚一籌,但此類模型仍需進行特征選擇與提取的過程,且容易丟失文本內的前后位置關系或語境,導致單詞語義理解不準確.
深度學習模型是基于神經網絡的模型,如卷積神經網絡(CNN)[16-17]、循環神經網絡(RNN)[18]、長短期記憶網絡(LSTM)[19]和膠囊網絡(CapsNet)[4,6-7,20-21]等.與傳統的機器學習模型相比,深度學習模型不需要人為選擇和提取特征,即可自動獲取有用的語義信息.由此可見,文本分類采用深度神經網絡更智能,而且利用深度神經網絡,可以挖掘出更多更深層次的文本數據信息,以提高算法的分類準確度、魯棒性和泛化能力.
膠囊網絡主要由卷積層、初級膠囊層、數字膠囊層、全連接層等組成.膠囊層又由許多膠囊組成,其中每個膠囊又包含多個神經元.每個神經元表示圖像中特定實例的屬性,如姿態、大小、位置、方向、紋理等.每個膠囊即為一個向量,向量的長度表示實體存在的概率,長度越長,則存在的概率越大.因此膠囊層的膠囊輸入是向量,輸出也是向量.
膠囊網絡中的膠囊包含豐富的空間位置等信息,相鄰節點之間具有強相關性,而且能夠保留原始數據中的底層細節信息,這些特性正好契合了文本數據中上下文之間存在的聯系性和自然順序性,能夠很好地提取單詞的語義信息,有利于文本的正確分類.另一方面,膠囊網絡的結構較淺,對小數據樣本集友好.但膠囊網絡自2017年被提出動態路由機制后才得到廣泛關注,因此將膠囊網絡運用在文本分類領域的研究并不多.
Zhao等[4]在動態路由膠囊網絡的基礎上,提出了一個用于文本分類的膠囊網絡.通過在膠囊層中增加共享矩陣和非共享矩陣,提高了膠囊內局部信息的多樣性;通過引入孤立類別、修正連接強度等方法減少噪聲.Zhao等[20]針對多標簽輸出數據集,通過引入自適應優化器、膠囊壓縮和部分路由來提高膠囊網絡的可靠性可拓展性,提出了可靠可擴展的膠囊網絡模型.Kim等[6]提出運用一種簡單的靜態路由方法來降低動態路由的計算復雜度.Ren等[21]利用組合編碼膠囊構造詞嵌入來減少詞嵌入參數,并采用K均值路由算法來提高網絡模型的穩定性和魯棒性.
本文模型框架如圖1所示.模型由卷積層、分組膠囊層、壓縮膠囊層、文本膠囊層等組成.其中壓縮膠囊層到文本膠囊層之間采用靜態路由方法進行傳遞.
首先,我們在嵌入文本上采用卷積過濾器進行卷積操作來提取特征.模型的輸入為X∈RL×V的文本句子.其中,L為句子的長度;V為詞嵌入大小(詞向量維度).Xi∈RV為一個輸入句子中第i個詞的詞向量.Wa∈Rk×V為卷積過濾器.其中,k為過濾器的寬度,本文采用3種過濾器Wa以提取不同的特征,其寬度分別為(3,4,5).然后將該過濾器與句子局部區域Xi:i+k-1∈Rk×V進行卷積以生成一個特征.
mi=f(Wa°Xi:i+k-1+b0)
(1)
其中,“°”表示為對應元素乘運算;b0為偏置項;f(·)為ReLU激活函數.利用過濾器以步長為1滑過整個句子文檔后得到所有的mi組成一個特征圖m(m1,…,mL-k+1).因此,當有A個過濾器Wa(a=1,…,A)就可以得到A個特征圖:
M=[m1,m2…,mA]∈R(L-k+1)×A
(2)

圖1 本文模型示意圖Fig.1 Schematic diagram of model
分組膠囊層采用Ding等[3]提出的膠囊分組方法.每個膠囊組包含若干個d維膠囊,而每個膠囊是由特征圖上不同通道相同位置的元素組成,同一通道的不同位置表示不同的膠囊.該膠囊示意圖如圖2所示.我們將膠囊均勻地分為若干個組,具體分組情況將在第4.2節中討論.

圖2 四維膠囊示意圖
膠囊只有與其相關的膠囊之間才有利用價值,因此可以利用余弦相似度來衡量一對膠囊之間的相似度.我們希望不同組膠囊間的相似度盡可能小,同一組的相似度盡可能大,并通過最小化分組損失[3]來達到分組的目的,具體實現方法如下.
設{Gt}t=1~T,t表示膠囊組,每組有M個膠囊{vj}j=1~M,各組膠囊Gt的平均值可定義為
(3)
一對膠囊的相似度定義如下.
(4)
其中,(v1-μt)·(v2-μt)表示向量(v1-μt)和向量(v2-μt)的內積,然后可以得到所有膠囊類內相似度為
(5)
所有膠囊類間相似度為
(6)
其中,μt1表示第t1個膠囊組的平均值,可用式(3)計算得出,μ表示所有膠囊的平均值.最后,分組損失可定義為
LGroup=Sb/Sω
(7)
通過最小化分組損失,確保膠囊能夠被正確地分成若干個組,即將同一組的膠囊拉近,將不同組的膠囊推開.

(8)
(9)

圖3 一個分組膠囊的轉化過程Fig.3 The transformation process of a grouped capsule
由于膠囊的數量與輸入文檔的大小成比例的增大,當輸入的文檔或句子較長時,對GPU內存有很大的要求.因此在轉化膠囊傳遞至壓縮膠囊層時,我們對轉化膠囊進行一個壓縮操作,以合并相似膠囊,去除噪聲膠囊.每個壓縮膠囊uq通過使用每組所有轉化膠囊vtj的加權求和來計算[7].
(10)
其中,參數bjq可通過監督學習得到,其利用均勻分布U(-0.01,0.01)采樣進行初始化;J為每組轉化膠囊數量;Q為壓縮膠囊數量;j、q分別為轉化膠囊、壓縮膠囊索引.
對于圖像分類領域,低層實體的空間位置等信息對分類結果有很大的影響,因此動態路由機制表現出很好的效果.然而在自然語言處理中,文本和情感的表達方式有很大的自由,句子中單詞的前后順序有時對分類結果影響較小.例如,“This movie is rubbish, I don't like it!”與“I don't like this movie , it is rubbish!”,雖然單詞的位置發生變化,但其表達的意思是一樣的.因此從這個角度來看,運用靜態路由機制對分類結果影響不大,而且能夠降低計算復雜度,其具體實現方法如式(11)和式(12)所示.
(11)
(12)
其中,sr為文本膠囊層膠囊r的所有輸入向量;Wqr=[R×Q]為由壓縮膠囊層到文本膠囊層的權重矩陣,可通過學習得到;R為文本膠囊的數量.vr為文本膠囊層中膠囊r的輸出向量,式(12)即采用非線性擠壓函數[2]得到膠囊r的輸出向量.由此可見,靜態路由取消了動態路由中的耦合系數,而是直接由壓縮膠囊經權重矩陣,利用非線性擠壓函數得到文本膠囊,此過程大幅縮短訓練時間,減少了計算開銷.

(13)
本文在5個文本分類數據集上進行了對比實驗,囊括了新聞分類、評論分類、問題分類、觀點分類等文本分類任務,其簡要介紹如表1所示.表中“Tr”為訓練集樣本數,“Ts”為測試集樣本數,“Cls”為數據集類別數,“Lavg”為句子平均長度.
本實驗均由PyTorch實現,在Ubuntu 16.04 LTS操作系統上,Python3.6環境下,使用NVIDIA GeForce RTX 2070顯卡,CPU為AMD Ryzen5 2600X處理器,運行內存16 G.采用預訓練好的300維Word2vec[22]詞向量初始化嵌入向量,批量大小除AG’s news為50外其他均為25. 為了能將膠囊平均地分成若干個組,且兼顧文本數據集的最大句子平均長度,我們將輸入文本長度L調整為387. 使用Adam優化器,初始學習率為0.001.過濾器Wa的寬度分別為3、4、5,步長為1,填充為0,各128個.過濾器Wb的寬度為3,步長、填充各為1,每個膠囊組有64個.

表1 文本數據集簡介
本文采用準確率作為評價指標,準確率越高,模型效果越好.對于模型參數和模型訓練時間,參數越少,訓練時間越少,模型越好越穩定.
本文將膠囊平均地分為若干組,每個組可以被視為具有相似語義信息的膠囊的集合.我們根據20 news文本數據集的分類準確率的高低來衡量膠囊組分組效果的好壞.如表2所示,我們將膠囊手動地分為D=1、2、4、8、16、32、64組時,對應的參數數量分別為0.69 M、0.76 M、0.91 M、1.20 M、1.79 M、2.97 M、5.33 M,準確率分別為79.01%、82.58%、84.66%、85.93%、86.85%、87.21%、85.07%,由此可知,隨著分組的增加,參數數量也隨之增加,這是因為有更多的權重在各組中進行共享.通過實驗,在分組D=32時,文本分類準確率達到最高的87.21%,可見膠囊的分組對準確率有很大貢獻.而當分組達到64時,由于參數的增加,網絡訓練較為困難,且過多的特征信息會導致網絡過擬合,降低分類準確率(由87.21%降低為85.07%),因此我們將分組數量選為32組進行訓練.

表2 在20 news文本數據集上的膠囊分組結果
本文與其他方法在模型參數數量,訓練時間和準確率上進行了對比實驗,實驗結果如表3和表4所示.

表3 參數數量、訓練時間對比結果
表3為本方法與其他方法在20 news數據集上的參數數量和訓練時間的對比結果.批量大小均設置為8,運行時間為訓練中每個epoch的運行時間.從表3中可以看出,我們的模型比其他膠囊網絡模型有著更少的參數數量,同時每個epoch所消耗的時間也是最少的,在20 news數據集的分類準確率更達到了最高的86.89%. Capsule-A[4]采用了動態路由策略,與文獻[2]的網絡結構類似,且采用共享權重矩陣與非共享權重矩陣相結合,增加了網絡的參數.CapsNet-GSR與Capsule-A相比,參數明顯減少了很多,因此訓練時間也大大縮短.而CapsNet-static-routing[6]雖然采用的是靜態路由,但與CapsNet-GSR采用“膠囊壓縮+靜態路由”的組合策略相比,模型參數仍然更多.文獻[21]中的模型通過組合編碼膠囊構造詞嵌入來減少詞嵌入的參數,并采用K均值路由算法代替動態路由算法,因此在參數數量和訓練時間上與本文模型相差不大,但在準確率上比本文模型要低2.95%.

表4 模型準確率對比結果
表4顯示了本方法與其他方法在5個文本數據集上的準確率實驗結果.從表4可知,本文方法在5個數據集中有3個獲得了最高的準確率.
CapsNet-GSR與傳統的CNN模型CNN-non-static[16]相比,在5個數據集上分別提高了0.33%、0.69%、1.37%、0.56%和0.61%.與傳統的LSTM模型BiLSTM[19]相比,在前3個數據集上分別提高了4.43%、2.89%和5.37%.容易發現,本文模型在TREC數據集上提高較明顯.究其原有以下兩點:(1) 膠囊網絡對小樣本數據集較為友好;(2) CapsNet-GSR利用膠囊建立起局部-整體對應關系,并在靜態路由過程中找到哪個局部屬于哪個整體對象,從而保留了文檔和類別的實例化參數,提高了文本的分類準確率.
與膠囊網絡模型Capsule-B相比,本文模型在AG’s news、TREC、MPQA 和20 news數據集上分別有0.03%、2.17%、1.68%、7.18%的提高.實驗表明,CapsNet-GSR利用分組,共享局部轉換矩陣,減少了參數,經過膠囊的整形轉化,局部特征被進一步得到提取與保留;通過膠囊壓縮合并了相似膠囊,剔除噪聲膠囊,提高了膠囊的質量;利用靜態路由,進一步降低參數數量,防止過擬合,降低計算復雜度,提高了分類準確率.
與膠囊網絡模型CapsNet-static-routing[6]相比,CapsNet-GSR在MR(2005)、TREC和20 news數據集上分別提高了1.21%、0.17%和0.47%.由此可見,采用膠囊分組與膠囊壓縮操作對提高分類性能有促進作用.通過利用CapsNet-static-routing和CapsNet-GSR與其他模型比較,可見靜態路由策略對提高文本分類準確率有較好效果,而且結合膠囊分組能使膠囊提取的特征更加利于預測分類.膠囊的壓縮可能會丟失部分細節信息,但壓縮的僅僅是相似膠囊或噪聲膠囊,對分類結果影響較小.
本文基于膠囊網絡提出了CapsNet-GSR文本分類模型.該模型采用膠囊分組策略提取文本局部信息,提高了膠囊相關性,減少了模型參數,利于膠囊的預測分類;再利用膠囊壓縮操作合并相似膠囊,去除噪聲膠囊;最后通過靜態路由機制降低參數數量,減少模型訓練時間.實驗證明,CapsNet-GSR在參數數量和訓練時間上均有大幅降低,在分類準確率上也有相應地提升.下一步研究中,我們將考慮在多標簽分類領域中使用該模型來檢驗其分類性能.