張凌慷,仝明磊
(上海電力大學 電子與信息工程學院,上海 201306)
隨著互聯網中海量文本數據的不斷涌現,文本分類已經成為自然語言處理領域(Natural Language Processing,NLP)中的一個重要研究方向。如何在海量數據中高效而精確地理解文本語義,亟需學術界進一步探索。
隨著深度學習的流行,基于深度學習的神經網絡也被應用于文本分類任務,并取得了相對較好的分類效果[1]。Kim[2]在卷積神經網絡(Convolutional Neural Network,CNN)的基礎上提出了TextCNN網絡,直接對句子進行文本分類。
Zhao等[3]首先在文本分類任務中引入了膠囊網絡(Capsule Network),在句子中的不同位置用卷積操作提取局部特征,接著訓練兩層膠囊層提取全局特征,最后在全連接層輸出每個文本類的概率送入Softmax分類器進行分類。Kim等[4]將靜態路由代替動態路由機制,忽略句子中部分空間信息,達到簡化路由計算的目的。
由于動態路由依賴聚類的密集計算,這導致了訓練效率低下,阻礙了膠囊網絡在實際任務中的應用。本文采取譜聚類(Spectral clustering)算法來取代原有膠囊網絡中的動態路由算法,提出SC-Caps膠囊網絡模型,將低層膠囊輸出的特征向量進行降維,減少計算復雜度,提高網絡性能。在搜狗新聞數據集SogouCA上進行實驗,以模型的預測準確率和F1值作為評價標準,得到了較好的分類準確率。
CNN在計算機視覺、自然語言處理領域都取得了成功。CNN在每次卷積之后,都會進行池化操作對特征圖進行下采樣來簡化計算并改善局部特征。但池化操作從上一層傳遞到下一層的是標量,導致無法考慮一些位置與姿態的信息。因此CNN在識別具有空間關系的特征時存在很大的局限性。
為了解決CNN中存在的問題,Hinton等[5]于2011年首次提出了“膠囊”的概念。其創新之處就是使用向量膠囊來取代CNN中的標量神經元,使得膠囊可以保留輸入對象之間的空間信息。基于此,Sabour等[6]在2017年進一步提出了具有動態路由算法的膠囊網絡結構,該網絡包括一層卷積層來提取特征;初級膠囊層將標量特征圖編碼為向量膠囊;高層膠囊層進行分類。但初級膠囊層與高層膠囊層之間動態路由算法繁瑣,有待進一步完善。為了解決此問題,Hinton等[7]于2018年對動態路由算法和膠囊網絡結構進行改進,提出基于最大期望算法(Expectation-Maximization,EM)來實現動態路由的矩陣膠囊網絡。該網絡魯棒性強,但仍存在計算量大,復雜度高的問題。
由于動態路由需要多次迭代通過softmax來獲取相似度,不斷地計算調整新的高層膠囊,最后將點劃分到各個高層膠囊中。因此當數據量大時,動態路由的計算開銷是非常大的。而譜聚類是由圖論衍生出的聚類算法[8],它將輸入的高維向量降維達到簡化計算的目的。其主要思想就是將所有輸入數據視為空間中的點,再將所有點連起來構成無向帶權圖。距離近的兩點連成的邊權重值高,而距離遠的點連成的邊權重值低,來構建相似度矩陣,之后由K近鄰法構建鄰接矩陣。
首先將低層膠囊轉換后的預測向量X={x1,x2,x3,…,xn},利用下列方法來構建對稱的鄰接矩陣W={Wij}n×t:

再根據鄰接矩陣構建度矩陣Dn×n,度矩陣D為對角矩陣,其中即為鄰接矩陣的對應行元素之和。
計算拉普拉斯矩陣L:L=D-W。利用Ncut切法,求出拉普拉斯矩陣L的k個最小特征值構建特征矩陣F:
首先構建標準化拉普拉斯矩陣LS:

接著計算LS的特征值,選取前k個最小的特征值(k為聚類數),并求出對應的的特征向量f1,f2,f3,…,fk;最后將上述k個特征向量作為列向量構成的矩陣按行標準化,形成維度為的向量空間;

令hi∈Rk為特征矩陣F的第i行作為新的中間數據樣本點,其中i=1,2,3,…,n。利用k-means算法將聚類成簇。
將求得的簇送入擠壓函數得到高層膠囊:

膠囊網絡最早應用于圖像分類任務中,Zhao等[3]將膠囊網絡引入到文本分類任務當中,效果明顯優于CNN、LSTM。
該模型如圖1所示分為4層:第1層是卷積層,用于提取低層特征;第2層是初級膠囊層,將標量特征轉換為矢量特征,保留句子中的詞序和語義信息;第3層是卷積膠囊層,根據譜聚類結果得到高層膠囊;第4層是全連接膠囊層,經過譜聚類生成最終膠囊概率送入softmax分類器進行分類。

圖1 基于譜聚類膠囊網絡的文本分類模型
1.3.1 卷積層
卷積層利用卷積操作在句子不同位置提取特征。輸入為n×k的矩陣,使用一個卷積核w與一個滑動窗口xi:i+h-1,產生一個特征mi。

其中,h為窗口中的單詞數;b0為偏置參數;f(·)為非線性函數。每一次卷積操作都相當于一次對特征的提取。對于相同大小的B個卷積核,可以產生B個特征,這些特征可以重新排列為:

1.3.2 初級膠囊層
此膠囊層為第一個膠囊層,用矢量輸出膠囊替換CNN中的標量輸出。膠囊大小為d,使用一個大小為Mi窗口在標量特征上滑動,Wb表示不同的滑動窗口之間的共享濾波器,生成膠囊的實例化參數pi。其表達式如下。

其中:g(·)表示非線性壓縮函數;b1為偏置項。膠囊的特征向量p可以表示:

1.3.3卷積膠囊層
在卷積膠囊層中,每個膠囊僅連接到局部區域中的膠囊。該區域中的膠囊乘上轉換矩陣來學習低層膠囊跟高層膠囊之間的關系,然后根據譜聚類路由來更新高層膠囊的權重。
令變換矩陣WC屬于RK×C×D×d×d,其中K×C為低層膠囊區域中的膠囊數,d為低層膠囊發送到高層膠囊的膠囊數。預測向量由式(9)得出:

1.3.4 全連接膠囊層
卷積膠囊層生成的膠囊在譜聚類路由后,被擠壓成一個膠囊,并被送入全連接膠囊層中。
全連接膠囊層從譜聚類路由中學習到全局特征。

其中:x為輸入;hw,b(x)為輸出;T為W的轉置。
最后將全連接膠囊層的輸出送入softmax分類器,完成文本分類任務。
為了驗證算法在文本分類任務上的效果,采用基于Tensorflow的Keras進行開發,編程語言為Python3.6。服務器配置如下:操作系統為Ubuntu16.04,CPU為Inter Xeon E5-1620,主頻為3.6 GHz,內存為16 G,GPU為Nvidia GeForce Titan X。
采用搜狗實驗室SougouCA數據集進行實驗。SougoCA數據集包含429 819條文本,可被標出類別的共有14類,去掉4類樣本數不足的數據,保留剩下10類樣本作為分類文本分解。每類數據都選取2 000條文本,隨機打亂數據集。訓練集、驗證集和測試集的劃分比例為8∶1∶1。
實驗的預處理部分先將下載好的文本轉碼,采用jieba分詞工具對新聞文本數據進行分詞處理,再加上對應的標簽。
本文實驗的性能評價指標主要包括:準確率、精確率、召回率、F1值。設TP為將正確類預測為正確類的個數;TN為將錯誤類預測為正確類的個數;FP為將錯誤類預測為正確類的個數;FN為將正確類預測為錯誤類的個數。評價指標的計算公式如下:

本文進行的實驗基于keras框架實現,使用Adam優化器,使用訓練后的word2vec詞向量作為第一個通道的詞向量。在SogouCA數據集上的實驗模型參數設置見表1。

表1 實驗參數設置
其中高層膠囊個數11個,對應10類新聞分類,其中標簽0不用,膠囊的模長代表所屬分類的概率。
為了驗證本文提出方法的有效性,本文進行了3個實驗。實驗(1)與深度學習領域主流實驗模型進行對比實驗,實驗(2)與其他膠囊網絡論文所提出方法進行對比實驗;實驗(3)改變譜聚類k值進行實驗。
實驗(1)選取深度學習領域主流的模型在SogouCA數據集上進行比較實驗,包括:LSTM、BiLSTM[9]、C-LSTM[10]、SC-Caps。使用上述模型進行實驗3次,取平均值。實驗結果見表2。

表2 實驗(1)數據結果
從表2可以看出,與傳統的CNN、LSTM網絡相比,本文提出的膠囊網絡模型在文本分類任務中表現更好。相較于傳統的LSTM模型,F1值提高了5.76個百分點。而CNN和LSTM結合的網絡中進行的池化操作會導致特征信息丟失,使用膠囊網絡將標量信息轉化為矢量信息,通過譜聚類路由將低層膠囊的特征信息傳遞到高層膠囊中,從而更好地捕捉文本中的特征信息。
實驗(2)中將本文提出方法與其他不同路由方式的膠囊網絡方法進行比較,對比結果見表3。

表3 實驗(2)數據結果
通過比較可以發現,本文提出的方法相較于文獻[3]提出的模型準確率提高了0.34個百分點、F1值提高了2.02個百分點,該模型使用了32個高層膠囊,模型較為復雜,訓練所需時間較長。相較于文獻[4]使用的靜態路由膠囊網絡準確率提升了1.75個百分點,F1值提升了0.22個百分點。由此說明本文提出的SC-Caps文本分類模型實驗(3)中改變SC-Caps中第一次譜聚類的k值,在數據集SogouCA上做對比實驗,第二次譜聚類的k值對應類別數固定為11,實驗結果如圖2所示。

圖2 不同k值的分類結果對比(準確率)
基于上述實驗結果,譜聚類中選定的k值對SCCaps網絡有一定影響,在k=15時達到SC-Caps的最佳效果;但繼續增加k值后,分類效果反而下降。這是由于當聚類數k值較大時,會使得聚類不均勻,影響算法的精確性,導致準確率下降。因此在本文的其他實驗中設置SC-Caps的譜聚類k值為15,以獲得更好的表現。
本文結合譜聚類和CapsNet的優點,提出了一種基于譜聚類膠囊網絡的文本分類模型。該模型用譜聚類路由取代了原有膠囊網絡的動態路由機制,將初級膠囊層送入的高維特征轉化為低維的子特征再送入高層膠囊中,進而提高膠囊網絡的運算效率和精度。此外,本文還在搜狗語料庫SogouCA上進行了文本分類實驗,與其他算法的對比表明本文提出的SC-Caps文本分類算法表現較好,有效提高了文本分類的準確率。
本文在路由方式上進行了改進,在一定程度上實現分類算法的改善,但膠囊網絡的卷積層特征提取能力和網絡整體結構有待進一步優化。下一步研究工作將加強對特征提取算法和膠囊網絡模型結構的研究。