伍逸凡,朱龍嬌,石俊萍
(吉首大學(xué)信息科學(xué)與工程學(xué)院,湖南 吉首 416000)
對于網(wǎng)絡(luò)不良信息的過濾,實(shí)質(zhì)上是一個文本分類問題.即通過設(shè)計(jì)分類算法,提取文本特征并實(shí)現(xiàn)分類.經(jīng)典的分類算法有樸素貝葉斯、支持向量機(jī)和K-近鄰等.這些算法大多基于詞頻、逆文本頻率等傳統(tǒng)統(tǒng)計(jì)學(xué)特征而實(shí)現(xiàn)分類.近些年,隨著深度學(xué)習(xí)技術(shù)的興起,人工神經(jīng)網(wǎng)絡(luò)在文本分類任務(wù)中取得了相當(dāng)不錯的效果.筆者擬結(jié)合FastText,TextCNN和TextRNN的優(yōu)勢,來實(shí)現(xiàn)網(wǎng)絡(luò)不良信息的歸類.
神經(jīng)網(wǎng)絡(luò)又稱多層感知機(jī),它模擬人腦的結(jié)構(gòu),由眾多權(quán)重可調(diào)的神經(jīng)運(yùn)算單元組成[1].每層神經(jīng)元之間利用激活函數(shù)進(jìn)行非線性變換,使得網(wǎng)絡(luò)具備非線性映射的能力.通過目標(biāo)函數(shù)的梯度下降和誤差反向傳播,學(xué)習(xí)數(shù)據(jù)集上由輸入到輸出的復(fù)雜函數(shù)關(guān)系.神經(jīng)網(wǎng)絡(luò)的一般結(jié)構(gòu)如圖1所示.
圖1 神經(jīng)網(wǎng)絡(luò)的一般結(jié)構(gòu)Fig. 1 Overall Structure of Neural Network
在分類問題中,選用交叉熵作為代價(jià)函數(shù),其表達(dá)式為
圖2 FastText模型的結(jié)構(gòu)Fig. 2 FastText Model Structure
FastText是Facebook的AI團(tuán)隊(duì)[2]提出的一種文本分類算法,它極其簡單,是將訓(xùn)練好的詞向量經(jīng)過均值池化之后直接送入softmax函數(shù)進(jìn)行分類.FastText模型的結(jié)構(gòu)如圖2所示.
TextCNN是Yoon Kim[3]提出的一種文本分類算法,它借助卷積神經(jīng)網(wǎng)絡(luò)對訓(xùn)練好的詞向量進(jìn)行特征提取,經(jīng)過最大值池化之后送入softmax函數(shù)進(jìn)行分類.TextCNN模型的結(jié)構(gòu)如圖3所示.
圖3 TextCNN模型的結(jié)構(gòu)Fig. 3 TextCNN Model Structure
卷積層被設(shè)置為nk個lc×lv的卷積核,其中l(wèi)c為上下文長度,lv為詞向量長度.該卷積運(yùn)算相當(dāng)于對序列中每lc個相鄰的詞向量進(jìn)行壓縮并提取特征.
TextRNN是直接利用循環(huán)神經(jīng)網(wǎng)絡(luò)處理文本的詞向量序列,并通過softmax函數(shù)進(jìn)行分類[4].TextRNN模型的結(jié)構(gòu)如圖4所示.
圖4 TextRNN模型的結(jié)構(gòu)Fig. 4 TextRNN Model Structure
在FastText,TextRNN和TextCNN模型結(jié)構(gòu)的基礎(chǔ)上,筆者設(shè)計(jì)出RNN與CNN相結(jié)合的文本分類模型Text CNN+RNN,結(jié)構(gòu)如圖5所示.
圖5 Text CNN+RNN模型的結(jié)構(gòu)Fig. 5 Text CNN+RNN Model Structure
對待分類文本進(jìn)行停用詞過濾和分詞之后得到單詞序列.停用詞過濾即過濾掉出現(xiàn)頻率高但攜帶信息量少的詞,如“啊”“嗎”“呢”等;分詞使用jieba分詞器,通過前綴詞典和動態(tài)規(guī)劃實(shí)現(xiàn)分詞.假設(shè)處理后的某段文本的單詞序列SW=(w1,w2,…,wn)T,其中wi為SW的第i個單詞,n為SW總詞數(shù).
由于不同文本處理后得到的詞數(shù)n不一樣,因此定義nM表示單詞數(shù)量的最大值.為了處理方便,對SW進(jìn)行長度對齊(即在末尾填充空格符使得其詞語總數(shù)補(bǔ)全為nM),得到
借鑒TextCNN的結(jié)構(gòu),選用卷積運(yùn)算實(shí)現(xiàn)特征提取.設(shè)置3個卷積層進(jìn)行多尺度卷積,其分別包含大小為1×128,2×128,4×128的卷積核各100個.該多尺度卷積運(yùn)算即對單詞序列進(jìn)行上下文長度為1,2,4的卷積,且卷積核的寬與詞向量的長度一致,這樣就保證了詞向量的整體結(jié)構(gòu)完整.公式表示為:
(1)
(2)
(3)
圖6 邏輯推理層Fig. 6 Logical Reasoning Layer
借鑒TextRNN的結(jié)構(gòu),選用循環(huán)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)序列在前后邏輯上的特點(diǎn).對于(1)—(3)式所得的3個卷積結(jié)果,若直接進(jìn)行softmax分類,則很可能會丟失數(shù)據(jù)在時序上的特征,因此將它們分別送入3個不同的LSTM網(wǎng)絡(luò).但與TextRNN不同的是,將保留LSTM網(wǎng)絡(luò)在所有時間步下得到的隱層狀態(tài)輸出,以充分利用所有時間步下的歷史信息特征,如圖6所示.LSTM網(wǎng)絡(luò)的隱層特征大小設(shè)置為128.
數(shù)據(jù)來自“SMS Spam Collection v.1”(表1),它是一組已收集的SMS標(biāo)簽短消息,一般用于垃圾郵件識別研究.“SMS Spam Collection v.1”共包含5 574條短消息,其中正常短消息4 827條(占86.6%),垃圾短消息747條(占13.4%).
表1 SMS Spam Collection v.1Table 1 SMS Spam Collection v.1
數(shù)據(jù)集預(yù)處理完成后,將數(shù)據(jù)集按7∶3切分為訓(xùn)練集和測試集(訓(xùn)練集用以訓(xùn)練模型,測試集用以評測模型),然后將訓(xùn)練集數(shù)據(jù)送入神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練.實(shí)驗(yàn)程序由Python實(shí)現(xiàn),環(huán)境為Tensorflow.
初始學(xué)習(xí)率設(shè)置為0.02,,按指數(shù)衰減,每10次衰減為之前的96%,共訓(xùn)練100輪,批大小設(shè)置為1 024.實(shí)驗(yàn)機(jī)器搭載GTX1070的顯卡,8核CPU,16 G內(nèi)存.迭代過程中,在訓(xùn)練集和測試集上的交叉熵?fù)p失曲線如圖7所示.
圖7 迭代過程中的交叉熵?fù)p失曲線Fig. 7 Cross Entropy Loss Curve in Iterative Process
選用Precision,Recall,F(xiàn)-measure和Accuracy作為評價(jià)指標(biāo),同時與FastText,TextCNN和TextRNN模型進(jìn)行對比,實(shí)驗(yàn)結(jié)果見表2.
表2 訓(xùn)練后的各模型的各項(xiàng)指標(biāo)值Table 2 Evaluation Index Values of the Trained Models
從表2可知,在訓(xùn)練集和測試集上,Text CNN+RNN的各項(xiàng)指標(biāo)值均超過其他3個模型.4個模型在測試集上的ROC曲線如圖8所示.
圖8 各模型的ROC曲線Fig. 8 ROC Curve of Each Model
由圖8可得FastText,TextCNN,TextRNN和Text CNN+RNN模型ROC曲線下的面積(AUC)分別為0.941,0.993,0.991,0.993.很明顯,TextCNN和Text CNN+RNN模型的AUC最高.
綜上所述,Text CNN+RNN模型有良好的魯棒性,效果優(yōu)于FastText,TextCNN和TextRNN模型.較遺憾的是,在訓(xùn)練成本上Text CNN+RNN模型是最高的,但這并不會影響其在實(shí)際中的應(yīng)用.
從實(shí)驗(yàn)結(jié)果來看,Text CNN+RNN通過結(jié)合CNN和RNN,取得了最優(yōu)效果.這都?xì)w功于卷積神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)的多尺度特征卷積和循環(huán)神經(jīng)網(wǎng)絡(luò)對單詞間上下文關(guān)系的學(xué)習(xí),也從側(cè)面反映了TextCNN對于文本信息在多尺度特征提取上的有效性.但是,TextCNN在卷積之后,直接將不同尺度得到的特征拼接后送入全連接層,這會損失部分上下文關(guān)系的特征;而TextRNN在沒有借助卷積層提取特征的情況下,直接將單詞序列送入循環(huán)神經(jīng)網(wǎng)絡(luò),使得神經(jīng)網(wǎng)絡(luò)的性能受詞向量質(zhì)量的局限,當(dāng)然,這一點(diǎn)在FastText上更加突出.
4個模型在測試集上普遍為Recall偏低,說明都存在部分垃圾郵件未被正確識別的情況.但在實(shí)際問題中,對于垃圾文本的識別,一方面要盡可能多且準(zhǔn)確地識別出垃圾文本,另一方面更重要的是,不能將有用的文本錯誤地識別成垃圾文本,即要保證Precision足夠高,否則就不具備實(shí)際用途.在這點(diǎn)上,Text CNN+RNN和TextCNN模型都達(dá)到了很不錯的效果.
此外,4個模型在參數(shù)調(diào)優(yōu)上都存在一定的提升空間.不難發(fā)現(xiàn),除了FastText模型,其他3個模型在測試集上的結(jié)果普遍比在訓(xùn)練集上的要低,即模型存在一定程度的過擬合,這也是深度網(wǎng)絡(luò)普遍存在的問題.
在神經(jīng)網(wǎng)絡(luò)方面,卷積神經(jīng)網(wǎng)絡(luò)在圖像處理領(lǐng)域取得了巨大成功,其優(yōu)秀的特征提取能力和并行運(yùn)算性能使得圖像處理技術(shù)愈發(fā)先進(jìn).自TextCNN出現(xiàn)后,卷積神經(jīng)網(wǎng)絡(luò)不僅在圖像領(lǐng)域有優(yōu)勢,而且在自然語言的特征提取上也取得了優(yōu)異的效果.其實(shí),眾多的高維數(shù)據(jù)都可以看作是抽象的圖像,因此可以認(rèn)為,卷積運(yùn)算不僅對圖像數(shù)據(jù)有效,而且對所有高維特征數(shù)據(jù)都有不錯的特征提取效果,人們可以將卷積神經(jīng)網(wǎng)絡(luò)運(yùn)用于各項(xiàng)研究任務(wù)中.而循環(huán)神經(jīng)網(wǎng)絡(luò)則對序列數(shù)據(jù)表現(xiàn)出優(yōu)秀的處理能力,它通過將神經(jīng)運(yùn)算單元在時序上堆疊,來實(shí)現(xiàn)上下文關(guān)系的學(xué)習(xí).卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)合,預(yù)期能構(gòu)建更好的模型,但如何將二者合理且穩(wěn)定地結(jié)合是一個難題.
在信息識別與過濾方面,深度學(xué)習(xí)的出現(xiàn)可謂如虎添翼.盡管網(wǎng)絡(luò)信息量巨大且繁雜,大多時候傳統(tǒng)方法可能起不了很好的作用,但是深度學(xué)習(xí)憑借極強(qiáng)的學(xué)習(xí)能力,能夠從容應(yīng)對.與此同時,雖然如今的深度學(xué)習(xí)技術(shù)在文本識別或分類任務(wù)上已取得優(yōu)秀的成績,但是很多時候,人們不僅希望不良信息被過濾,更希望某些信息被潤化,即以更優(yōu)雅或委婉的方式呈現(xiàn),于是會涉及到諸如機(jī)器翻譯、語言風(fēng)格轉(zhuǎn)換等的研究.這將是深度學(xué)習(xí)技術(shù)所面對的巨大挑戰(zhàn).