劉江舟 段 立
(海軍工程大學(xué) 武漢 430000)
隨著《“十四五”規(guī)劃和2035年遠景目標(biāo)綱要》的發(fā)布,網(wǎng)絡(luò)安全被列為未來中國重點發(fā)展建設(shè)的工作之一,也標(biāo)志著我國的網(wǎng)絡(luò)安全產(chǎn)業(yè)也進入了新時期。在網(wǎng)絡(luò)安全日新月異的發(fā)展情況下,線上學(xué)習(xí)因為實時性和時效性,成為了多數(shù)網(wǎng)絡(luò)安全從業(yè)者的學(xué)習(xí)手段,特別地,文本資源以技術(shù)文章和短訊等形式,成為了用戶獲取網(wǎng)絡(luò)安全知識的重中之重。然而,互聯(lián)網(wǎng)在提供了海量文本資源的同時,也存在著部分問題,現(xiàn)階段以主題為標(biāo)準(zhǔn)的分類方式,雖然可以將文本資源進行了粗分類,但是分類的各個主題之間缺乏緊密聯(lián)系,導(dǎo)致相關(guān)文本資源分布分散,缺乏傳統(tǒng)課程學(xué)習(xí)的系統(tǒng)性和連續(xù)性,不利于用戶快速準(zhǔn)確獲取目標(biāo)文本包含的知識信息。
因此,本文提出基于Albert-TextCNN的網(wǎng)絡(luò)安全領(lǐng)域文本分類模型,目的是在網(wǎng)絡(luò)安全知識體系下,快速準(zhǔn)確地提取文本中的知識點,從而實現(xiàn)按照知識點對網(wǎng)絡(luò)安全文本進行分類,確保用戶可以根據(jù)自己感興趣的知識點來進行學(xué)習(xí),達到用戶按圖索驥的目的。
文本分類作為自然語言處理領(lǐng)域的重要課題[1],已經(jīng)有了很多年的發(fā)展。多標(biāo)簽分類總體可以分為兩種:一是傳統(tǒng)的機器學(xué)習(xí)的方法;二是深度學(xué)習(xí)的方法。其中,機器學(xué)習(xí)方法又可以分為問題轉(zhuǎn)化方法和算法自適應(yīng)方法。問題轉(zhuǎn)化方法是指把多標(biāo)簽分類問題轉(zhuǎn)換為一個或者多個單標(biāo)簽分類問題,從而可以用現(xiàn)存的單標(biāo)簽分類算法來實現(xiàn)多標(biāo)簽分類的目的;算法自適應(yīng)的方法是指直接根據(jù)問題本身,將修改現(xiàn)存的單標(biāo)簽分類算法進行調(diào)整,用來直接處理多標(biāo)簽學(xué)習(xí)問題。隨著深度學(xué)習(xí)在計算機視覺和語音識別等領(lǐng)域取得的巨大進步,神經(jīng)網(wǎng)絡(luò)模型也逐漸被運用到了多標(biāo)簽文本分類問題上。Zhang等[2]和 Nam等[3]使用全連接神經(jīng)網(wǎng)絡(luò)來解決多標(biāo)簽文本分類問題,該方法雖然可以適用于大規(guī)模的文本分類問題,但卻未充分考慮標(biāo)簽之間的關(guān)聯(lián)關(guān)系,易導(dǎo)致反義標(biāo)簽共現(xiàn)的問題。文獻[4]提出的TextCNN模型,首次將CNN結(jié)構(gòu)引入到文本分類領(lǐng)域,用于句子級別的文本分類,取得了一定的效果。針對TextCNN忽略句子上下文的問題,文獻[5]同時結(jié)合了RNN與CNN的優(yōu)點,提出了TextRCNN模型。隨著transformer和Bert的廣泛應(yīng)用,Sun[6]等將Bert用于解決文本分類問題,并介紹了Bert的微調(diào)方法,進一步讓Bert適用于具體的多標(biāo)簽分類問題。
在自然語言處理領(lǐng)域,由于計算機無法識別文本語言,因此,需要將文本語言轉(zhuǎn)換為計算機語言,即解決文本表示問題[7]。其中,常見的有布爾表示和分布式表示。
布爾表示是根據(jù)囊括所有詞的字典索引號,向量的維度是整個字典的長度,并且整個向量中只有一個維度取值為1,其余維度都是0,其中,取值為1的代表出現(xiàn)該詞。布爾表示雖然擁有易于理解,便于生成的特點,但是仍然存在幾個較為明顯的缺點:一是向量維度爆炸。例如:當(dāng)字典規(guī)模較大時,相應(yīng)地向量維度也會十分龐大,但是有效數(shù)據(jù)卻十分稀疏,不利于對向量的存儲。二是無法體現(xiàn)詞之間的關(guān)聯(lián)。因為每個詞向量之間都是正交關(guān)系,因此無法從數(shù)學(xué)角度體現(xiàn)詞向量之間的關(guān)聯(lián)關(guān)系,不符合實際工程需求。
分布式表示由Hinton于1986年提出,即后來廣泛應(yīng)用的詞向量。分布式表示是通過訓(xùn)練將文本中的每個詞用一個固定維度的向量表示,從而全部詞向量共同組成一個向量空間,其中各個詞向量相當(dāng)于向量空間中的一個點,從而,使得詞向量之間包含了詞之間的語義關(guān)系。因此,我們可以用歐式距離,余弦相似度來計算詞向量之間的語義相似度。
Bert模 型[8](Bidirectional Encoder Representa?tions from Transformer),由谷歌公司于2018年提出,因其在自然語言處理的各個領(lǐng)域均取得了不俗的成績而被業(yè)界所熟知。根據(jù)Bert英文全稱可以了解到該模型大量疊加使用transformer的編碼模塊,代替之前多數(shù)模型較為常用的Bi-LSTM[9],因此具有執(zhí)行并行運算的能力,同時,transformer的編碼器可以通過多頭注意力機制及其前饋網(wǎng)絡(luò)實現(xiàn)文本前后信息的交互,因此在處理文本信息方面具有極強的表征能力。其模型結(jié)構(gòu)如圖1所示,初始字向量E1,E2,…EN通過由多個 transformer組成的編碼器,最后輸出包含豐富語義信息的字向量T1,T2,…TN。

圖1 Bert結(jié)構(gòu)示意圖
Bert最初的目標(biāo)是利用大規(guī)模無標(biāo)注語料訓(xùn)練,進而豐富語義信息的文本表示,即文本的語義表示。但是,由于Bert在大規(guī)模語料上訓(xùn)練所需的配置高,時間長,因此,Google公司提供了預(yù)訓(xùn)練模型,方便大眾對Bert微調(diào)[10],進而完成相應(yīng)的下游任務(wù)。
TextCNN的基本思想是利用CNN的結(jié)構(gòu)進行分類,該模型將詞向量組成的句子利用不同大小的窗口來捕捉句子的局部信息,提取相關(guān)特征,整體上比較適用于短文本任務(wù)。
從結(jié)構(gòu)上講,TextCNN分為輸入層、卷積層和池化層,如圖2。

圖2 TextCNN結(jié)構(gòu)
TextCNN的輸入層為一個文本的字向量組成的矩陣,由橫向為每個字向量,同時為了保持字向量長度,還對原文本進行了補0操作。通常,TextCNN的輸入向量來源于上游任務(wù)。
在卷積層中,不同于計算機視覺中的CNN正方形卷積核可以在圖片矩陣上進行縱向和橫向兩個方向的移動;TextCNN的卷積核與詞向量的寬度相同,僅需要在縱向進行移動。由于卷積核需要詞向量的寬度一致,作為滑動窗口的卷積核,不同的卷積核大小,會使窗口內(nèi)包含的語義信息也會不同,根據(jù)實際工程需求可以選擇不同卷積核。
TextCNN的池化層采用了最大池化,即從滑動窗口中產(chǎn)生的特征向量中篩選出最大特征,進一步將特征向量進行拼接,從而得到一個固定長度的向量表示。
常見的網(wǎng)絡(luò)安全領(lǐng)域文本的分類是按照其主題進行分類,但是此類標(biāo)準(zhǔn)的分類主題之間缺乏彼此的聯(lián)系,不利于用戶選擇適合自己興趣的文本。在網(wǎng)絡(luò)安全領(lǐng)域,一個文本資源通常會包含多個網(wǎng)絡(luò)安全知識點,因此,本文提出以知識點為標(biāo)準(zhǔn),將文本資源按照知識點進行分類。同時,通過整理所得的知識體系,幫助用戶了解知識點之間的包含與被包含關(guān)系,通過知識點關(guān)聯(lián)文本資源,從而有利于用戶根據(jù)自身知識水平進行網(wǎng)絡(luò)安全領(lǐng)域文本資源的選擇。
圖3 為模型結(jié)構(gòu),本文采用 Albert[11]預(yù)訓(xùn)練模型對文本進行向量提取,從而作為多標(biāo)簽文本分類的輸入。

圖3 Albert-TextCNN的多標(biāo)簽分類模型
基于模型更加輕量化,效果更好,訓(xùn)練更快的目的,Albert(a lite bert,精簡版Bert)預(yù)訓(xùn)練模型,在Bert的基礎(chǔ)上,Albert有以下三個改進點:
一是對嵌入?yún)?shù)進行因式分解。將詞嵌入層映射到低維空間進行降維,再映射到隱藏層;
二是采用跨層參數(shù)共享的策略,避免參數(shù)量隨著網(wǎng)絡(luò)深度的增加而增多;
三是解決了Bert下句預(yù)測(Next Sentence Pre?dict,NSP)損失抵消的問題,改用語序預(yù)測(Sen?tence-Order Prediction,SOP)來代替NSP作為訓(xùn)練任務(wù)。
綜合以上三個特點,Albert模型參數(shù)量僅為Bert的1/18,訓(xùn)練速度卻為Bert的17倍,在顯著減少了參數(shù)量的同時仍保持了較高的模型效果。因此,比較適合小規(guī)模的文本分類任務(wù)。本文采用的Albert_small_zh預(yù)訓(xùn)練模型在包括多個百科、新聞、互動社區(qū)多種語境的約30G中文語料上進行訓(xùn)練,累計學(xué)習(xí)訓(xùn)練超過100億漢字,同時,語料中包含部分中文語料中的常用英文。因此,結(jié)合Albert模型本身的三個特點,該模型適用于任務(wù)規(guī)模相對較小,同時實時性要求高的包含少量英文的分類任務(wù)。因此,本文采用的Albert_small_zh包含4個隱藏層,12頭注意力機制,總計4M的參數(shù)量。
假設(shè)經(jīng)Albert_small_zh預(yù)訓(xùn)練模型處理后的第i個文本中共有n個詞,則在TextCNN輸入層中的初始輸入E可以表示為

在卷積層中,利用卷積核進行卷積操作,進而提取窗口內(nèi)文本的局部信息:

其中,W 為權(quán)值矩陣,b為偏置項,f(?)為激活函數(shù)。
在最大池化層中可以得到,全局特征向量:

最后,進入全連接層進行分類。

實驗硬件:CPU為i5-8400,顯卡為RTX2060,顯存8G;實驗軟件:操作系統(tǒng)為Windows10 64位,Python版本為3.8,TensorFlow版本為1.15。
本實驗使用的數(shù)據(jù)集共6771條,每條包含文本資源的標(biāo)題及關(guān)鍵詞,文本資源從安全客、Free?buf等網(wǎng)絡(luò)安全網(wǎng)站爬取得到。按照8:2的比例分為訓(xùn)練集和驗證集。同時,根據(jù)看雪論壇等多個網(wǎng)絡(luò)安全權(quán)威網(wǎng)站整理得到網(wǎng)絡(luò)安全領(lǐng)域相關(guān)知識共216個,即以上文本資源覆蓋216個知識點標(biāo)簽,如圖4為部分知識點。

圖4 網(wǎng)絡(luò)安全知識點標(biāo)簽(部分)
對于常規(guī)的文本分類任務(wù),該數(shù)據(jù)集屬于小型語料庫,同時由于樣本本身存在類別較多,類別不平衡等現(xiàn)象,會對模型的分類效果產(chǎn)生較大影響。因此按照文獻[12]提出的EDA方法通過同義詞替換法(Synonyms Replace,SR)、隨機插入法(Ran?domly Insert,RI)、隨機交換法(Randomly Swap,RS)和隨機刪除法(Randomly Delete,RD)對文本數(shù)據(jù)進行增強,減小類別不平衡對模型效果的影響。
本實驗?zāi)P团c對比模型通過以下5個實驗指標(biāo)進行評估:準(zhǔn)確率(Accuracy)、精確率(Preci?sion)、召回率(Recall)、F1值和Hamming Loss對分類結(jié)果進行分析。
精確率(Precision,P)表示在預(yù)測為正的樣本中,被正確預(yù)測所占樣本比例,該指標(biāo)體現(xiàn)了模型的查準(zhǔn)率。召回率(Recall,R)表示在預(yù)測正確的樣本中,正樣本所占樣本比例,該指標(biāo)可以體現(xiàn)模型的查全率。F1值則是由精確率和召回率的加權(quán)調(diào)和平均計算得來,是對精確率和召回率的綜合考察。準(zhǔn)確率(Accuracy,A)表示在分類正確的標(biāo)簽數(shù)量占標(biāo)簽總量的比例。在多標(biāo)簽分類任務(wù)中,由于標(biāo)簽眾多不能關(guān)注每一個標(biāo)簽的指標(biāo),因此,使用Macro-precision、Macro-recall和 Macro-F1來進行度量,同理,其值越大,代表模型的性能越好。


其中,TP表示將正樣本預(yù)測為正,F(xiàn)P表示將負樣本預(yù)測為正,F(xiàn)P表示將正樣本預(yù)測為負,TN表示將負樣本預(yù)測為負。
Hamming Loss(HL)表示標(biāo)簽被誤分類的個數(shù),該值越小表示模型的性能越好。

其中,N表示樣本的數(shù)量,L是標(biāo)簽的總數(shù),Yi,j表示第i個樣本真實標(biāo)簽集中的第j個標(biāo)簽,Pi,j表示第i個樣本預(yù)測標(biāo)簽集中的第j個標(biāo)簽,XOR表示異或運算。
本采用以下兩個模型進行對比實驗:
1)Albert文本分類模型:模型以Albert模型作為詞向量模型,把詞向量直接接入全連接層進行分類。
2)Albert+Dense文本分類模型:模型以Albert模型作為詞向量模型,但是把多標(biāo)簽分類問題當(dāng)作多個判斷是否屬于該類標(biāo)簽的二分類問題。
為防止實驗中偶然因素的干擾,實驗結(jié)果均運行10次求均值,從而得到表1中的結(jié)果。

表1 實驗結(jié)果對比
由表中結(jié)果可知,本文采用的在網(wǎng)絡(luò)安全知識體系下的Albert+TextCNN可以有效提升模型效果,在準(zhǔn)確率、精確率、召回率和F1值上均可取得最大值,與表現(xiàn)最好的對比模型Albert+Dense相比分別在Precision、reccall、F1和accuracy指標(biāo)上高出0.21、0.36、0.32和0.20,且Hamming Loss最小。
同時,由圖5和圖6可知,在網(wǎng)絡(luò)安全數(shù)據(jù)集上,Albert+TextCNN模型與其他兩個模型對比,ac?curacy曲線最早達到穩(wěn)定,在10K step附近達到穩(wěn)定,并且曲線明顯高于其他兩個模型。同時,Al?bert+TextCNN模型loss曲線下潛深度更深,loss更小,而且曲線整體穩(wěn)步收斂。

圖5 模型accuracy曲線對比

圖6 模型loss曲線對比
綜合以上兩點,實驗驗證了Albert+TextCNN模型的有效性,本文提出的模型能夠很好地利用Al?bert對文本強大的表示學(xué)習(xí)能力,再通過TextCNN的卷積核進一步提取文本的語義信息,同時輔助以網(wǎng)絡(luò)安全知識體系下標(biāo)簽之間的先驗知識,增強了模型在文本多標(biāo)簽分類任務(wù)中的識別能力在與對比實驗?zāi)P偷谋容^中具有一定的優(yōu)勢。
本文提出了在網(wǎng)絡(luò)安全知識體系下,基于Al?bert-TextCNN的網(wǎng)絡(luò)安全領(lǐng)域文本分類模型。經(jīng)過實驗對比,該模型優(yōu)于同類型的多標(biāo)簽分類模型,可以有效地抽取文本知識點,實現(xiàn)對文本按照知識點標(biāo)簽的快速分類。
下一步,本文將進一步將模型結(jié)合推薦算法,從知識點角度出發(fā),為精準(zhǔn)有效地推薦相關(guān)的文本資源,實現(xiàn)智能導(dǎo)學(xué)的目標(biāo)。