胡豐麟,朱立忠(通信作者)
(沈陽理工大學自動化與電氣工程學院 遼寧 沈陽 110159)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,新聞作為信息的重要載體呈現(xiàn)出爆發(fā)式的增長,深度神經(jīng)網(wǎng)絡(luò)也正在逐步取代傳統(tǒng)算法和機器學習。與英語和其他語種的文本分類相比,中文文本分類由于漢字的獨特性變得更加困難。最初的文本分類是通過建立專家規(guī)則進行分類,但由于在靈活性、可擴展性和分類效果等方面存在許多不足,并未取得過多的關(guān)注。支持向量機、K 鄰近、決策樹和最大熵等機器學習算法由于對文本處理的效果較好,成為常見主流算法。當數(shù)據(jù)量非常大時,這些算法在處理時成本較高。
近年來,由于深度學習模型能夠捕捉語義詞關(guān)系,在性能上優(yōu)于傳統(tǒng)的機器學習方法,因此在文本分類中使用深度學習模型引起了廣大學者極大的興趣。使用分布式表示方法來表示單詞和短語,不僅可以獲得單詞在語言前后的關(guān)系特征,而且避免了數(shù)據(jù)的高維和稀疏問題。Liu 等[1]提出了一種可以在中文文本中提取上下文信息的模型,這種模型主要是運用LSTM 來對文本的上下文特征提取。在2013年,谷歌公司發(fā)布的Word2vec 工具可以將文本進行向量化,從而得到文本的詞向量,挖掘出更加深層的聯(lián)系,而且Word2vec 輸出詞向量可以輸入到其他的深度學習網(wǎng)絡(luò)模型中進一步處理,極大地提升了文本分類的準確率。由于Word2vec 模塊的完善,人們已經(jīng)可以利用它對大量文字數(shù)據(jù)進行訓練,把文字表示成低維稠密的矢量空間,從而降低了大量文字數(shù)據(jù)存儲的困難度,并考慮到詞語之間的關(guān)聯(lián),從而更好地描述了大量文字數(shù)據(jù),這將極大地促進深度學習技術(shù)在文字分析上的發(fā)展和應(yīng)用[2]。閆秘[3]對fastText 算法進行改進,通過改進特征向量的權(quán)重,以及替換數(shù)據(jù)集中主題詞來提高模型的分類效率。肖琳等[4]都將注意力機制與CNN和RNN的結(jié)合應(yīng)用到了文本分類問題中。陶文靜[5]在新聞文本分類任務(wù)的研究中提出了一種改進的卷積神經(jīng)網(wǎng)絡(luò)模型,在多個數(shù)據(jù)集中取得了不錯的效果。殷亞博等[6]將卷積神經(jīng)網(wǎng)絡(luò)和K 鄰近算法相結(jié)合,通過卷積神經(jīng)網(wǎng)絡(luò)對文本特征進行提取,KNN 分類器進行分類。經(jīng)過測試,該模型在多個數(shù)據(jù)集都有著較好的分類效果。高云龍等[7]通過在全連接層增加稀疏編碼的方法來降低模型的復雜度。該模型經(jīng)過反復實驗,具有較好的文本分類效果。胡杰等[8]提出了一種新模型,將卷積神經(jīng)網(wǎng)絡(luò)和隨機森林算法結(jié)合,通過卷積神經(jīng)網(wǎng)絡(luò)提出文本特征,隨機森林對文本進行分類。陳可嘉等[9]將卷積神經(jīng)網(wǎng)絡(luò)和長短時記憶網(wǎng)絡(luò)相結(jié)合,通過將卷積神經(jīng)網(wǎng)絡(luò)進行動態(tài)池化來提出更多的文本特征。經(jīng)過實驗對比,該模型比其他模型擁有更高的精度。
傳統(tǒng)的CNN 網(wǎng)絡(luò)不能解決由于文本分類任務(wù)中上下文之間存在很強的依賴性和連續(xù)性,導致模型精度較低的問題。本文提出了一種卷積神經(jīng)網(wǎng)絡(luò)(CNN)和長短期記憶網(wǎng)絡(luò)(LSTM)的混合文本分類模型,通過實驗,該模型與其他傳統(tǒng)的深度學習模型相比具有更高的準確率。
CNN 和LSTM 的混合模型主要是保留了各自的優(yōu)點,通過Word2vec 預(yù)處理所獲得的詞向量輸入在CNN 的卷積層中,把CNN 的輸出視為LSTM 第一層的輸入,在每一層的輸出都做歸一化處理。該模型既解決了CNN 模型只能提取局部特征的問題,又能夠解決上下文的依賴關(guān)系,有效地提高了模型的準確率。
由于神經(jīng)網(wǎng)絡(luò)需要輸入的是向量,需要先對新聞文本進行預(yù)處理,將新聞文本映射成為向量,Word2vec 就是一個用來生成詞向量的工具。CBOW 和Skip-gram 是Word2vec 的兩個模型,CBOW 通過上下文預(yù)測目標詞訓練得到詞向量,并在小型語料庫上使用;Skip-gram 是用一個詞去預(yù)測它文本序列周圍的詞,適合在文本預(yù)料較多時使用。Skip-gram 模型中每個單詞在做中心詞前,都會經(jīng)過K 次的檢測和微調(diào),而這樣反復的微調(diào)就會導致單詞向量的變化比較精確。由于本文的新聞數(shù)據(jù)量較大,決定采用skip-gram 模型對文本進行預(yù)處理。
Skip-gram 模型,其訓練復雜度為:
式(1)中,C 為Word2vec 模型輸入層的窗口大小,D表示詞向量維度,V 表示訓練語料的詞典大小。
長短時記憶網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)在處理文本分類任務(wù)上都有各自的優(yōu)勢,CNN 雖然能夠保留文字的全局度量特性,并合理地挖掘文本中所有可能的語義關(guān)聯(lián)現(xiàn)象,但卻不能處理文本上下文的相互影響現(xiàn)象和上下文語義關(guān)聯(lián)現(xiàn)象。而由于LSTM 具備了對長期語境信息依賴的特點,可合理使用和記憶更大程度的長期上下文語義關(guān)聯(lián),從而有效地分析文本序列的含義。因此根據(jù)二者的結(jié)構(gòu)特征,在本文中建立了一個CNN-LSTM 架構(gòu),作為對信息的分析。CNN-LSTM 的網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示。
圖1 CNN-LSTM 網(wǎng)絡(luò)模型結(jié)構(gòu)
卷積層:文中利用三層一維卷積,每個輸入層包含一個向量序列,并使用固定大小的濾波器進行掃描,檢測文本的不同特征。在激活函數(shù)的選擇上,比較常用的是Sigmoid 函數(shù),但是這個函數(shù)的計算量比較大,在訓練深度網(wǎng)絡(luò)時容易出現(xiàn)梯度消失的問題,因此決定使用ReLU作為激活函數(shù)。這個函數(shù)更像一個線性函數(shù),當神經(jīng)網(wǎng)絡(luò)的行為是線性或接近線性時會更容易優(yōu)化,也是因為此特性,在使用這個激活函數(shù)進行訓練的網(wǎng)絡(luò)幾乎完全避免了梯度消失的問題,訓練的速度也會比前者更快。
Batch Normalization 層:和Dropout 的作用相似,都是起到了防止模型過擬合的作用,而且相比Dropout,Batch Normalization 的調(diào)參過程也相對簡便一些,能夠有效地提高模型的學習率,提高模型的訓練速度和收斂過程,作用在每層卷積層之后。
池化層:在BN 層之后,采用max-pooling。選用最大池化層是為了捕捉最重要的特征并減少高級層中的計算。應(yīng)用衰減技術(shù)來減少過擬合,衰減值為0.5,這樣做能夠保留全局的序列信息。
時序?qū)樱涸搶泳哂幸欢〝?shù)量的單元,每個單元的輸入都是卷積層的輸出。通過LSTM 來解決在長文本中,CNN 無法捕捉上下文中存在的依賴特性關(guān)系這一問題。
輸出層:采用Softmax 分類器,使用Softmax 函數(shù)對獲得的特征T 進行分類。由于T 是一個向量,因此不可能基于T 直接確定文檔的類別。因此,Softmax 函數(shù)用于執(zhí)行規(guī)范化方法,以獲得文檔屬于特定類別。公式如下:
文本預(yù)測的標簽公式如下:
該模型中使用的損失函數(shù)是交叉熵損失,并引入了L2正則化。公式定義如下:
t 是文本真實標簽的概率,p(y/s)是具有Softmax函數(shù)的每個類的概率,s 是目標分類數(shù),λ 表示模型的復雜損失占總損失的比例。經(jīng)過Softmax 函數(shù)得到每個類別的概率,完成文本分類的任務(wù)得到最終的分類結(jié)果。
本實驗所用的資料集為清華大學自然語言處理研究室提供的中文文本分析資料集。THUCNews 數(shù)據(jù)集包括了740 000 個新聞文本,十四種新聞類型。文本采用了其中的十種類型,并選取50 000 條新聞數(shù)據(jù)作為訓練集,10 000 條新聞數(shù)據(jù)作為測試集。為了滿足深度學習對于數(shù)據(jù)量的需求,將已經(jīng)標注好的網(wǎng)絡(luò)新聞文本中的詞語通過同義詞替換等方式來擴充數(shù)據(jù)。使用softsign 和Adam 作為Textcnn 和CNN-LSTM 的激活函數(shù)和優(yōu)化函數(shù),來測試兩種算法使用相同數(shù)據(jù)集的準確率和損失函數(shù),結(jié)果如圖2和圖3所示。
從圖2和圖3得出,CNN-LSTM 模型比Textcnn 模型擁有更加的準確率,且損失函數(shù)下降比較平穩(wěn),說明了此模型相對其他算法模型具有良好的穩(wěn)定性。
圖2 Textcnn 的accuracy 和loss 趨勢變化
圖3 CNN-LSTM 的accuracy 和loss 趨勢變化
接著將Textcnn、LSTM 和CNN-LSTM 的準確率進行對比,如表1所示。
表1 分類準確率對比
從表1可以看出,三個模型的準確率分別為0.910、0.864 和0.962。其中CNN-LSTM 的準確率達到了0.962,比Textcnn 的準確率高出了0.052,與LSTM 相比準確率更是高出了0.98,說明了CNN-LSTM 模型能夠進行更精確地分析,有著更高的準確率,能夠有效地提高文本分類的效果。
實驗數(shù)據(jù)表明,這個結(jié)構(gòu)的CNN-LSTM 模型與傳統(tǒng)的深度學習模型相比,具有較高的準確率,訓練效果比傳統(tǒng)的模型有較顯著的提升。該模型在保證每條數(shù)據(jù)結(jié)構(gòu)不變的情況下,挖掘出更深層的語義結(jié)構(gòu),更好地表達數(shù)據(jù)的原始特征,有助于提高文本分類的效果。
針對傳統(tǒng)的深度學習模型在文本分類任務(wù)上的準確率不高的問題,文中提出了一種將CNN 模型和LSTM 模型的優(yōu)勢相結(jié)合的混合模型,將CNN 的輸出作為LSTM 的輸入,并在原始的卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,采用計算速度和收斂速度更快的ReLU 函數(shù)作為模型的激活函數(shù),將BN 層加入到卷積神經(jīng)網(wǎng)絡(luò)中來加快網(wǎng)絡(luò)的收斂速度。通過實驗比較,在對海量的新聞信息進行分析時,混合模型的準確率達到了96.2%,說明混合模型比傳統(tǒng)的深度學習模型擁有更高的預(yù)測精度,具有更好的分類效果,因此能適用于網(wǎng)絡(luò)新聞的分類任務(wù)。