謝博,申國(guó)偉,郭春,周燕,于淼
(1.貴州大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025;2.貴州省公共大數(shù)據(jù)重點(diǎn)實(shí)驗(yàn)室,貴州 貴陽(yáng) 550025;3.中國(guó)科學(xué)院信息工程研究所,北京 100093)
在網(wǎng)絡(luò)空間安全態(tài)勢(shì)日趨復(fù)雜的形勢(shì)下,威脅情報(bào)驅(qū)動(dòng)的網(wǎng)絡(luò)安全防御成為業(yè)界關(guān)注的重點(diǎn)[1]。從海量碎片化的網(wǎng)絡(luò)數(shù)據(jù)中挖掘威脅情報(bào),采用知識(shí)圖譜模型進(jìn)行組織,支撐攻擊路徑預(yù)測(cè)、攻擊溯源等,可實(shí)現(xiàn)海量數(shù)據(jù)驅(qū)動(dòng)的威脅情報(bào)智能分析。
網(wǎng)絡(luò)安全實(shí)體識(shí)別是威脅情報(bào)知識(shí)圖譜構(gòu)建任務(wù)中非常重要的一個(gè)基礎(chǔ)任務(wù)[2],其目標(biāo)是從網(wǎng)絡(luò)安全領(lǐng)域的文本數(shù)據(jù)中提取出安全實(shí)體的語(yǔ)義類,如攻擊組織、企業(yè)、漏洞、軟件等。
網(wǎng)絡(luò)安全實(shí)體識(shí)別屬于一種特定領(lǐng)域的命名實(shí)體識(shí)別。命名實(shí)體識(shí)別是自然語(yǔ)言處理中的一項(xiàng)重要研究?jī)?nèi)容,主要有基于規(guī)則的命名實(shí)體識(shí)別方法、基于機(jī)器學(xué)習(xí)的命名實(shí)體識(shí)別方法和基于深度學(xué)習(xí)的命名實(shí)體識(shí)別方法[3]。由于深度學(xué)習(xí)方法能夠自適應(yīng)地提取文本的特征信息,不依賴大量的特征工程和額外的語(yǔ)言學(xué)知識(shí),因此,深度學(xué)習(xí)被廣泛地應(yīng)用在命名實(shí)體識(shí)別任務(wù)中[4]。
Georgescu等[5]通過基于命名實(shí)體識(shí)別的解決方案來增強(qiáng)和檢測(cè)物聯(lián)網(wǎng)系統(tǒng)中可能存在的漏洞。王通等[2]使用深度置信網(wǎng)絡(luò)對(duì)威脅情報(bào)知識(shí)圖譜實(shí)體識(shí)別子任務(wù)中的安全實(shí)體進(jìn)行有效識(shí)別。2003年,Hammerton[6]利用長(zhǎng)短記憶模型(LSTM)抽取句子的序列信息,并通過條件隨機(jī)場(chǎng)(CRF,conditional random fields)對(duì)命名實(shí)體的標(biāo)簽進(jìn)行分類。之后,很多命名實(shí)體識(shí)別方法是在LSTM-CRF網(wǎng)絡(luò)架構(gòu)下融入各種句子隱含的特征信息。Collobert等[7]在2011年使用窗口化方法的神經(jīng)網(wǎng)絡(luò)和基于句子的卷積神經(jīng)網(wǎng)絡(luò)方法對(duì)命名實(shí)體識(shí)別進(jìn)行了深入探索,在命名實(shí)體識(shí)別任務(wù)中取得了不錯(cuò)的效果。隨后,Santos等[8]使用字符級(jí)的特征向量作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,來增強(qiáng)CNN-CRF模型。Chiu等[9]在Hammerton和Collobert等的工作基礎(chǔ)上使用雙向LSTM并融合卷積神經(jīng)網(wǎng)絡(luò)來獲取詞的字符特征,與Collobert的模型相比,利用雙向LSTM模型打破固定窗口大小的限制。由于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)在提取大的上下文特征信息時(shí)會(huì)丟掉一些信息,2017年,Strubell等[10]提出利用空洞卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行命名實(shí)體識(shí)別,實(shí)驗(yàn)表明該網(wǎng)絡(luò)能夠彌補(bǔ)傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的不足且進(jìn)一步提高網(wǎng)絡(luò)的訓(xùn)練速度。
He[11]、Liu[12]、Li[13]等通過實(shí)驗(yàn)表明了基于字符的命名實(shí)體識(shí)別方法一般比基于詞的命名實(shí)體識(shí)別方法好。因此,秦婭等[14]針對(duì)傳統(tǒng)的命名實(shí)體識(shí)別方法難以識(shí)別網(wǎng)絡(luò)安全實(shí)體,提出一種基于特征模板的字符級(jí)CNN-BiLSTM-CRF網(wǎng)絡(luò)安全實(shí)體識(shí)別模型。除了基于字的命名實(shí)體識(shí)別,還有基于詞、融合字和詞特征信息的命名實(shí)體識(shí)別方法。Xu等[15]將字和詞的特征信息聯(lián)合訓(xùn)練進(jìn)行融合,其中,Zhang等[16]提出的Lattice LSTM中文命名實(shí)體識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)取得了較好的實(shí)體識(shí)別效果,該方法將傳統(tǒng)的LSTM單元改為網(wǎng)格LSTM,在字模型的基礎(chǔ)之上利用詞典,從而得到詞與詞序的特征信息,降低了分詞帶來的錯(cuò)誤傳播問題。
注意力機(jī)制(attention mechanism)[17]被廣泛應(yīng)用于自然語(yǔ)言處理任務(wù)。Bahdanau等[18]將注意力機(jī)制和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN,recurrent neural network)結(jié)合起來解決機(jī)器翻譯任務(wù),使注意力機(jī)制成功融入自然語(yǔ)言處理領(lǐng)域。Yin等[19]提出一種基于注意力機(jī)制的卷積神經(jīng)網(wǎng)絡(luò),并成功地應(yīng)用于句子對(duì)建模任務(wù)。Wang等[20]在關(guān)系抽取任務(wù)中證明了注意力機(jī)制和卷積神經(jīng)網(wǎng)絡(luò)結(jié)合的有效性。
與傳統(tǒng)領(lǐng)域的實(shí)體識(shí)別相比,網(wǎng)絡(luò)安全領(lǐng)域的實(shí)體識(shí)別發(fā)展比較緩慢,且仍存在以下幾方面的挑戰(zhàn)。
1)深度學(xué)習(xí)依賴大規(guī)模的標(biāo)簽數(shù)據(jù),然而網(wǎng)絡(luò)安全領(lǐng)域中缺乏大規(guī)模高質(zhì)量的網(wǎng)絡(luò)安全實(shí)體標(biāo)注數(shù)據(jù)。
2)網(wǎng)絡(luò)安全實(shí)體識(shí)別比較復(fù)雜,包含大量的多種混合安全實(shí)體,如“SQL注入”“80端口”。
3)全文非一致問題。即在一篇文章、段落或者長(zhǎng)句子中相同的實(shí)體被賦予不同的類別標(biāo)簽。此外,存在實(shí)體縮寫情況,即第一次提到實(shí)體時(shí)給出全稱,在其后提到該實(shí)體時(shí),僅僅給出該實(shí)體的縮寫。
針對(duì)上述挑戰(zhàn),本文提出一種殘差空洞卷積神經(jīng)網(wǎng)絡(luò)的安全實(shí)體識(shí)別方法。本文的主要貢獻(xiàn)如下。
1)構(gòu)建并開放了一個(gè)網(wǎng)絡(luò)安全實(shí)體識(shí)別語(yǔ)料庫(kù),標(biāo)注了6類典型的網(wǎng)絡(luò)安全實(shí)體。
2)提出一種基于BERT[21]語(yǔ)言模型的殘差空洞卷積神經(jīng)網(wǎng)絡(luò)命名實(shí)體識(shí)別方法,與基于注意力機(jī)制的BiLSTM-CRF網(wǎng)絡(luò)結(jié)構(gòu)相比,本文的模型可以接收句子的平行化輸入,降低了模型的訓(xùn)練時(shí)間。
3)將殘差連接與空洞卷積神經(jīng)網(wǎng)絡(luò)模型相結(jié)合,構(gòu)建網(wǎng)絡(luò)安全實(shí)體識(shí)別模型,無須使用諸如詞性、依存句法等額外的特征信息。此外,以字符級(jí)特征向量作為模型的輸入,降低了分詞錯(cuò)誤導(dǎo)致的誤識(shí)別率。實(shí)驗(yàn)表明,本文提出的模型取得了比BiLSTM-CRF等模型好的安全實(shí)體識(shí)別效果。
網(wǎng)絡(luò)安全實(shí)體識(shí)別任務(wù)可以看作特定領(lǐng)域中的命名實(shí)體識(shí)別,其相當(dāng)于自然語(yǔ)言處理中的序列標(biāo)注問題。由于網(wǎng)絡(luò)安全文本數(shù)據(jù)中的詞條存在歧義和安全實(shí)體構(gòu)成比較復(fù)雜,為了防止分詞帶來的錯(cuò)誤傳播問題,在字符層面進(jìn)行序列標(biāo)注是解決網(wǎng)絡(luò)安全實(shí)體識(shí)別的關(guān)鍵問題。
本文以網(wǎng)絡(luò)安全文本中的句子為基本單元,針對(duì)其中的任意一個(gè)句子,xN],xi是句子s中的第i個(gè)字符。在BIO標(biāo)注方法[14]的指導(dǎo)下,識(shí)別句子s中的安全實(shí)體相當(dāng)于給出標(biāo)注序列。例如,句子s為“騰訊安全防御威脅情報(bào)中心檢測(cè)到一款通過驅(qū)動(dòng)人生系列軟件升級(jí)通道傳播的木馬突然爆發(fā)”,其對(duì)應(yīng)的序列標(biāo)注sL是“B-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG O O O O O O O B-SW I-SW I-SW I-SW O O O O O O O O O O O B-RT I-RT O O O O”。
針對(duì)網(wǎng)絡(luò)安全實(shí)體識(shí)別任務(wù),本文在BERT預(yù)訓(xùn)練模型的基礎(chǔ)上,提出基于殘差空洞卷積神經(jīng)網(wǎng)絡(luò)和CRF相結(jié)合的網(wǎng)絡(luò)安全實(shí)體識(shí)別模型BERT-RDCNN-CRF,如圖1所示。
圖1 基于BERT-RDCNN-CRF的網(wǎng)絡(luò)安全實(shí)體識(shí)別模型Figure 1 Network security entity recognition model based on BERT-RDCNN-CRF
該模型在BERT預(yù)訓(xùn)練模型的基礎(chǔ)上,采用RDCNN提取文本中的特征,為實(shí)體識(shí)別奠定基礎(chǔ),最后通過CRF層處理給出標(biāo)注序列。
BERT模型能從大量的無標(biāo)簽數(shù)據(jù)中學(xué)習(xí)詞條或者字的前向和后向這種雙向表示,并且在學(xué)習(xí)詞條或者字的上下文表示過程中通過微調(diào)來解決詞或字的歧義問題。BERT模型的框架如圖2所示,其主要由輸入層、雙向的Transformer編碼層和輸出層組成。輸入層接收輸入句子的字嵌入(token embedding)、段嵌入(segment embedding)和位置嵌入(position embedding)拼接而成的一個(gè)特征矩陣。Transformer編碼層主要提取輸入層特征矩陣中重要的特征信息。輸出層通過一個(gè)前饋神經(jīng)網(wǎng)絡(luò)輸出每一個(gè)字的嵌入表示。
圖2 微調(diào)BERT模型在單句標(biāo)注任務(wù)圖示Figure 2 Illustrations of fine-tuning BERT on single sentence tagging tasks
本文以字為單位并將其作為BERT模型的輸入,對(duì)于長(zhǎng)度為n的句子s,其字嵌入表示為
其中,⊕為拼接操作符。
由于本文的輸入為文本句子,所以對(duì)于長(zhǎng)度為n的句子s,引入段嵌入作為句子對(duì)的區(qū)分界限。段嵌入全部初始化為0,如式(2)所示。
在網(wǎng)絡(luò)安全實(shí)體識(shí)別任務(wù)中,字的位置特征是識(shí)別的關(guān)鍵特征。因此,BERT模型加入了位置嵌入,如式(3)~式(5)所示。
其中,pos為位置,i為維度,dmodel為模型的輸出維度,為拼接操作符。
最后,將字嵌入、段嵌入和位置嵌入拼接起來作為BERT模型的輸入,如式(6)所示。
雙向Transformer編碼層通過“多頭”注意力機(jī)制(multi-head attention mechanism)擴(kuò)展了模型專注于不同位置的能力,增大注意力單元的“表示子空間”?!岸囝^”注意力機(jī)制的基礎(chǔ)是自注意力機(jī)制,自注意力機(jī)制主要計(jì)算句子中的每個(gè)字對(duì)于這個(gè)句子中所有字的相互關(guān)系,即將與該字相關(guān)聯(lián)的其他字的特征信息編碼進(jìn)該字的嵌入表示中。自注意力機(jī)制的計(jì)算如式(7)所示。
其中,Q、K、V分別是自注意力機(jī)制中的查詢向量(query vector)、鍵向量(key vector)和值向量(value vector),計(jì)算方法如下。
其中,WQ、WK、WV為權(quán)重矩陣,在模型開始訓(xùn)練時(shí)隨機(jī)初始化。
由此,實(shí)現(xiàn)“多頭”注意力機(jī)制的計(jì)算如式(11)所示。
其中,⊕為拼接操作符,Wo為形狀變換矩陣,是一個(gè)需要學(xué)習(xí)的參數(shù),headi=Attention,。
最后,通過一個(gè)全連接層,輸出每個(gè)字的嵌入表示,其計(jì)算如式(12)所示。
其中,W1、W2為權(quán)重矩陣,b1、b2為偏置,F(xiàn)FN為BERT模型的輸出結(jié)果。
本節(jié)在BERT模型的基礎(chǔ)上,提出網(wǎng)絡(luò)安全實(shí)體識(shí)別模型RDCNN-CRF,如圖3所示。RDCNN-CRF主要由輸入層、空洞卷積層和CRF層組成。輸入層接收輸入句子的特征矩陣;空洞卷積層利用卷積核對(duì)輸入的基本單位進(jìn)行卷積操作提取特征。RDCNN的輸入層將BERT模型的輸出構(gòu)建為一個(gè)特征矩陣傳入模型中;CRF層通過提取到的特征信息輸出字的命名實(shí)體標(biāo)簽分類結(jié)果。
圖3 RDCNN-CRF模型框架Figure 3 Illustrations of RDCNN-CRF model framework
在空洞卷積神經(jīng)網(wǎng)絡(luò)的卷積層中,給定長(zhǎng)度為h的卷積核,可以把句子分為,然后對(duì)每一個(gè)分量進(jìn)行卷積操作,通過式(13)得到卷積特征圖。
其中,W為卷積核權(quán)重,b為偏置,δ>1為空洞卷積神經(jīng)網(wǎng)絡(luò)的膨脹系數(shù)。若δ=1,此時(shí)的空洞卷積神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)等價(jià)。
由于對(duì)空洞卷積神經(jīng)網(wǎng)絡(luò)的卷積層進(jìn)行簡(jiǎn)單的線性堆疊會(huì)使網(wǎng)絡(luò)在訓(xùn)練過程中產(chǎn)生過擬合和退化問題,本文引用文獻(xiàn)[22]提出的殘差連接來防止退化問題,使用批正則化(BN,batch normalization)防止過擬合問題。殘差連接的殘差塊計(jì)算如式(15)所示。
其中,x為輸入,F(xiàn)()表示殘差函數(shù)。
最后,通過CRF層得到字的實(shí)體標(biāo)簽分類結(jié)果。CRF能夠考慮相鄰字的實(shí)體標(biāo)簽之間的關(guān)系,這符合字的實(shí)體標(biāo)簽關(guān)系之間并不獨(dú)立的特點(diǎn),且充分利用了字實(shí)體標(biāo)簽的上下文信息。而通過直接對(duì)殘差空洞卷積神經(jīng)網(wǎng)絡(luò)的輸出獲取其對(duì)應(yīng)字的實(shí)體標(biāo)簽的結(jié)果取決于數(shù)據(jù)的性質(zhì)和質(zhì)量。CRF層的具體算法如下。
首先,定義一個(gè)狀態(tài)轉(zhuǎn)移矩陣A,這里的Ai,j表示標(biāo)簽i轉(zhuǎn)移到標(biāo)簽j的得分,該得分會(huì)隨著模型的訓(xùn)練而更新。另外,定義分值矩陣為空洞卷積層的輸出分值,其中,[fθ]i,t是第t個(gè)字、第i個(gè)標(biāo)簽的RDCNN的輸出分值,θ是RDCNN的參數(shù)。針對(duì)句子,N為句子的長(zhǎng)度。定義為整個(gè)RDCNN-CRF模型需要學(xué)習(xí)的參數(shù)。這樣,一個(gè)句子在給定標(biāo)簽序列的總得分計(jì)算為
模型訓(xùn)練結(jié)束后,本文采用維特比算法來找到最佳標(biāo)簽序列。
本文基于Tensorflow深度學(xué)習(xí)框架實(shí)現(xiàn)所提出的網(wǎng)絡(luò)安全實(shí)體識(shí)別方法,具體訓(xùn)練過程如下。
本文提出的安全實(shí)體模型在訓(xùn)練的過程中先對(duì)BERT、RDCNN和CRF模型進(jìn)行初始化,然后BERT對(duì)字進(jìn)行編碼,隨后RDCNN進(jìn)行解碼提取出句子局部特征信息,接著CRF模型計(jì)算出字的安全實(shí)體標(biāo)簽;最后將錯(cuò)誤向前傳播更新各個(gè)模型的參數(shù)。
算法1BERT-RDCNN-CRF
輸入
訓(xùn)練數(shù)據(jù)集T=(X,Y),其中,X,Y∈?V×n,|V|是數(shù)據(jù)集的大小,n是句子最大長(zhǎng)度;
輸出
實(shí)體標(biāo)簽序列;
1)初始化BERT,RDCNN和CRF;
2)fori=0,1,2,do
3)for batch do
4)BERT和RDCNN模型前向傳播;
5)CRF前向傳播和后向傳播,計(jì)算出序列的全局似然概率;
6)對(duì)RDCNN和BERT模型進(jìn)行后向傳播;
7)更新BERT,RDCNN,CRF模型的參數(shù);
8)end for
9)end for
本節(jié)將所提出的方法在構(gòu)建的數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)。在本文的實(shí)驗(yàn)中,字向量均采用Google預(yù)訓(xùn)練好的BERT中文字向量。BERT模型采用Fine-tuning策略,即模型參數(shù)采用Google預(yù)訓(xùn)練好的參數(shù)進(jìn)行初始化,并可以在網(wǎng)絡(luò)訓(xùn)練過程中自適應(yīng)地調(diào)整BERT模型的參數(shù)。
實(shí)驗(yàn)數(shù)據(jù)主要來自烏云漏洞數(shù)據(jù)庫(kù)、Freebuf網(wǎng)站、國(guó)家漏洞庫(kù)等主流網(wǎng)絡(luò)安全平臺(tái)的公開數(shù)據(jù)。網(wǎng)絡(luò)安全實(shí)體主要有6種類型,分別是人名(PER,person)、地名(LOC,location)、組織名(ORG,organization)、軟件名(SW,software)、網(wǎng)絡(luò)安全相關(guān)術(shù)語(yǔ)(RT,relevant term)和漏洞編號(hào)(VUL_ID,vulnerability ID)。網(wǎng)絡(luò)安全實(shí)體數(shù)據(jù)均采用BIO命名實(shí)體標(biāo)注策略。數(shù)據(jù)集的具體統(tǒng)計(jì)信息如表1所示。實(shí)驗(yàn)中將標(biāo)注好的數(shù)據(jù)集劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,分別占總數(shù)據(jù)集規(guī)模的70%、10%和20%。詳見Github官網(wǎng)。
表1 數(shù)據(jù)集的統(tǒng)計(jì)信息Table 1 Statistic of datasets
本文采用精確率(P,Precision)、召回率(R,Recall)、F1值(F1-measure)和準(zhǔn)確率(Accuracy)作為評(píng)價(jià)標(biāo)準(zhǔn)。
為了驗(yàn)證本文提出的網(wǎng)絡(luò)安全實(shí)體識(shí)別方法BERT-RDCNN-CRF的有效性,對(duì)12種模型進(jìn)行對(duì)比實(shí)驗(yàn)。其中,前6組實(shí)驗(yàn)的詞向量和字符向量是基于word2vec語(yǔ)言模型訓(xùn)練的,后 6組基于BERT預(yù)訓(xùn)練語(yǔ)言模型。實(shí)驗(yàn)代碼可到Github官網(wǎng)下載。
1)CRF:文獻(xiàn)[23]提出使用CRF對(duì)序列數(shù)據(jù)進(jìn)行標(biāo)注。
2)LSTM:文獻(xiàn)[24]提出使用LSTM進(jìn)行命名實(shí)體識(shí)別的模型。
3)LSTM-CRF:文獻(xiàn)[25]提出結(jié)合CRF的LSTM命名實(shí)體識(shí)別模型。
4)BiLSTM-CRF:文獻(xiàn)[26]提出考慮詞上下文的雙向LSTM結(jié)合CRF進(jìn)行命名實(shí)體識(shí)別模型。
5)CNN-BiLSTM-CRF:文獻(xiàn)[27]提出使用CNN學(xué)習(xí)詞條的字符級(jí)特征信息,并將其和詞拼接在一起作為BiLSTM的輸入進(jìn)行命名實(shí)體識(shí)別的模型。
6)FT-CNN-BiLSTM-CRF:文獻(xiàn)[14]提出結(jié)合特征模板的網(wǎng)絡(luò)安全實(shí)體識(shí)別模型。
7)BERT-CRF:在文獻(xiàn)[21]中模型的基礎(chǔ)上結(jié)合CRF進(jìn)行命名實(shí)體識(shí)別的模型。
8)BERT-LSTM-CRF:在文獻(xiàn)[25]的基礎(chǔ)上將語(yǔ)言模型使用BERT代替。
9)BERT-BiLSTM-CRF:在文獻(xiàn)[26]的基礎(chǔ)上將語(yǔ)言模型使用BERT代替。
10)BERT-GRU-CRF:在BERT的基礎(chǔ)上,使用普通GRU與CRF結(jié)合的命名實(shí)體識(shí)別模型。
11)BERT-BiGRU-CRF:在BERT的基礎(chǔ)上,使用普通雙向GRU與CRF結(jié)合的命名實(shí)體識(shí)別模型。
12)BERT-RDCNN-CRF:本文提出的識(shí)別方法彌補(bǔ)了CNN提取特征信息有限,并使用殘差連接防止模型在訓(xùn)練的過程中出現(xiàn)過擬合的情況。
在實(shí)驗(yàn)中,使用多種窗口卷積核對(duì)BERT的輸出矩陣進(jìn)行卷積操作。卷積核函數(shù)為rectified linear units,激活函數(shù)為L(zhǎng)eaky ReLU。模型訓(xùn)練過程中采用Zeiler[28]提出的Adadelta更新規(guī)則,其他參數(shù)見表2。
表2 實(shí)驗(yàn)參數(shù)設(shè)置Table 2 Hyper parameters of experiment
本文將12組實(shí)驗(yàn)在網(wǎng)絡(luò)安全實(shí)體識(shí)別數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),分析網(wǎng)絡(luò)安全實(shí)體識(shí)別。表3給出了12組實(shí)驗(yàn)在網(wǎng)絡(luò)安全實(shí)體識(shí)別數(shù)據(jù)集上總體的實(shí)體識(shí)別準(zhǔn)確率、精確率、召回率和F1值。
從表3結(jié)果可以看出,整體上本文提出的方法在網(wǎng)絡(luò)安全實(shí)體數(shù)據(jù)集上取得了不錯(cuò)的實(shí)體標(biāo)簽分類效果。其中,BERT-CRF、BERT-LSTMCRF、BERT-BiLSTM-CRF、BERT-GRU和BERTBiGRU-CRF模型在網(wǎng)絡(luò)安全實(shí)體數(shù)據(jù)集中的命名實(shí)體識(shí)別準(zhǔn)確率比傳統(tǒng)基于特征的CRF命名實(shí)體識(shí)別模型、LSTM模型、BiLSTM模型、CNN-BiLSTM模型和基于特征模板的FT-CNNBiLSTM模型好。
對(duì)比文獻(xiàn)[26]提出的CNN-BiLSTM-CRF模型和文獻(xiàn)[13]提出的FT-CNN-BiLSTM-CRF模型可以看出,考慮了字特征信息的BERT-RDCNNCRF模型在網(wǎng)絡(luò)安全實(shí)體數(shù)據(jù)集上的實(shí)體識(shí)別準(zhǔn)確率相比考慮了詞特征信息和字特征信息的模型的準(zhǔn)確率高。這是因?yàn)榫W(wǎng)絡(luò)安全的實(shí)體是由字母、數(shù)字和中文構(gòu)成的,在分詞的過程中會(huì)產(chǎn)生大量的分詞錯(cuò)誤,這種錯(cuò)誤會(huì)隨著模型的訓(xùn)練往后傳播,影響模型最后對(duì)實(shí)體標(biāo)簽的分類效果。
從表3的結(jié)果還可以看出,模型BERTCRF的F1值相比不使用BERT模型的實(shí)體識(shí)別模型沒有提高,但是加了能夠提取文本的句法和表層特征的序列模型后,其F1值有較大的提高。說明安全實(shí)體識(shí)別模型在含有豐富的語(yǔ)義特征基礎(chǔ)上利用文本的句法和表層特征能提高實(shí)體識(shí)別性能。
表3 不同模型的網(wǎng)絡(luò)安全實(shí)體識(shí)別對(duì)比結(jié)果Table 3 Comparison of cyber security entity recognition results of different models
為了進(jìn)一步說明基于BERT預(yù)訓(xùn)練模型的LSTM、BiLSTM、GRU和BiGRU模型與本文提出的方法在網(wǎng)絡(luò)安全實(shí)體識(shí)別任務(wù)中的實(shí)體識(shí)別效果,本文進(jìn)一步做了對(duì)比實(shí)驗(yàn)。從表3的結(jié)果可以看出,在準(zhǔn)確率和精確率方面,本文提出的方法比其他基于BERT模型的網(wǎng)絡(luò)安全實(shí)體識(shí)別模型好,說明本文提出的方法在網(wǎng)絡(luò)安全實(shí)體識(shí)別任務(wù)中的有效性,并且在使用BERT模型的前提下,單向的LSTM模型和GRU模型比雙向的LSTM模型和GRU模型在網(wǎng)絡(luò)安全實(shí)體識(shí)別任務(wù)中效果更好。然而,從召回率和F1值的結(jié)果來看,BERT- LSTM-CRF均取得了最好的結(jié)果,分別是91.96%和90.10%。與本文提出的方法在召回率(91.07%)和F1值(89.88%)上相比,分別提升了0.89%和0.22%,說明本文提出的方法在這兩個(gè)評(píng)價(jià)指標(biāo)上與能夠提取字的序列特征的模型相比差距不大。
為了進(jìn)一步比較基于BERT模型的安全實(shí)體識(shí)別模型在不同安全實(shí)體上的識(shí)別效果,本文計(jì)算出這6種安全實(shí)體的精確率、召回率和F1值,其中精確率如圖4所示。
從圖4可以看出,BERT-CRF模型在SW和VUL_ID兩類安全實(shí)體上的實(shí)體識(shí)別效果非常差。所有實(shí)體識(shí)別模型在安全實(shí)體SW上的精確度比較低,最高的精確率才50.26%,其中BERT-LSTM-CRF模型、BERT-GRU-CRF模型和BERT-RDCNN-CRF模型的精確度相近,說明這些模型不擅長(zhǎng)識(shí)別安全實(shí)體SW,這是因?yàn)橐环矫嬖搶?shí)體在安全實(shí)體數(shù)據(jù)集中的數(shù)量較少,另一方面這類實(shí)體通常由數(shù)字、字母和漢字組成,構(gòu)成非常復(fù)雜,特征不好提取。
6種安全實(shí)體識(shí)別模型在安全實(shí)體LOC、ORG和PER上的實(shí)體識(shí)別效果相差無幾且精確率較高,說明6種模型能夠?qū)OC、ORG和PER這種簡(jiǎn)單的實(shí)體特征信息進(jìn)行充分提取。對(duì)于安全實(shí)體RT,BERT-CRF模型的精確率最低,本文提出的方法比BERT-LSTM模型的精確率高0.52%,說明無論是使用改進(jìn)的卷積網(wǎng)絡(luò)還是使用能夠存儲(chǔ)句子序列信息的LSTM,在安全實(shí)體RT上都能取得較好的精確率。在安全實(shí)體VUL_ID的結(jié)果中,BERT-GRU-CRF模型取得了最高的精確率,比BERT-LSTM-CRF模型提升了0.28%,比本文提出的方法提升了4.13%,說明能夠存儲(chǔ)句子序列信息的LSTM模型和GRU模型在安全實(shí)體VUL_ID的精確率上更有優(yōu)勢(shì)。
從圖4中還可以看出,使用雙向BiLSTM模型和雙向BiGRU模型的精確率比使用單向的LSTM模型和GRU模型的精確率低,這是因?yàn)槟P偷膹?fù)雜度增加會(huì)產(chǎn)生過擬合問題,損失函數(shù)的損失值在模型訓(xùn)練過程中很難下降。為了更進(jìn)一步比較6種模型的安全實(shí)體識(shí)別性能,對(duì)不同模型在不同安全實(shí)體上的召回率進(jìn)行對(duì)比,如圖5所示。
從圖5的結(jié)果可以看出,6種模型在6類安全實(shí)體上的召回率和圖4的結(jié)果差不多。值得注意的是,BERT-LSTM-CRF模型和BERT-GRUCRF模型比其他模型取得了更好的召回率,這說明在召回率這一評(píng)價(jià)指標(biāo)上,這兩種模型能夠召回更多的安全實(shí)體。
圖4 不同模型在不同安全實(shí)體上的精確率對(duì)比Figure 4 Comparison of accuracy of different models on different security entities
圖5 不同模型在不同安全實(shí)體上的召回率對(duì)比Figure 5 Comparison of recall of different models on different security entities
為了平衡精確率和召回率,不同模型的F1值如圖6所示。從圖6中可以看出,BERT-CRF模型、BERT-BiLSTM-CRF模型和BERT-BiGRUCRF模型對(duì)于復(fù)雜的安全實(shí)體RT、SW和VUL_ID的識(shí)別效果不是很好。對(duì)于安全實(shí)體PER的識(shí)別效果這6種模型相差無幾,說明這6種模型都適合用來識(shí)別PER這樣的安全實(shí)體。對(duì)于安全實(shí)體LOC的識(shí)別效果,BERT-RDCNN- CRF模型、BERT-LSTM-CRF模型、BERT-GRU- CRF模型和BERT-BiGRU-CRF模型的F1值比BERT-CRF模型和BERT- BiLSTM-CRF的F1值有不同程度的提升。對(duì)于安全實(shí)體ORG,BERT-RDCNN-CRF模型和BERT-LSTM-CRF模型的F1值比其他模型的F1值有不同程度的提升。以上結(jié)果表明,本文提出的方法在各種安全實(shí)體識(shí)別任務(wù)中的魯棒性和有效性。
圖6 不同模型在不同安全實(shí)體上的F1值對(duì)比Figure 6 Comparison of F1-measure of different models on different security entities
本文提出的安全實(shí)體識(shí)別方法和其他傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)方法一樣,通過最小化損失函數(shù)來進(jìn)一步更新模型的參數(shù)。而損失值在模型訓(xùn)練過程中的變化情況表示該模型在訓(xùn)練過程中是否學(xué)習(xí)和是否穩(wěn)定等。進(jìn)一步分析模型在訓(xùn)練過程中損失值的變化情況如圖7所示。
從圖7可以看出,模型在整個(gè)訓(xùn)練過程中損失值是下降的,說明模型能夠?qū)W習(xí)網(wǎng)絡(luò)安全實(shí)體的相關(guān)特征信息。此外,由于本文提出的方法參數(shù)太多并且損失值整體上下降,進(jìn)一步表明本文模型在訓(xùn)練過程中具有魯棒性。從圖7中還可以看出,損失值的下降曲線并不是平滑的,這主要與最小化損失函數(shù)的優(yōu)化算法和學(xué)習(xí)率的設(shè)置有關(guān),從整體上看依然能夠說明本文所提方法的魯棒性。
圖7 損失值曲線Figure 7 Loss value curves during training on network security entity datasets
為了進(jìn)一步分析本文提出方法的實(shí)用性,從網(wǎng)絡(luò)安全實(shí)體識(shí)別數(shù)據(jù)集中抽取一些典型句子的實(shí)體標(biāo)簽分類結(jié)果進(jìn)行分析。經(jīng)典句型分析如表4所示。
從表4中可以看出,對(duì)于句子1這種結(jié)構(gòu)簡(jiǎn)單的實(shí)體識(shí)別,本文提出的方法能正確識(shí)別出實(shí)體的標(biāo)簽。在句子2中,本文提出的方法除了準(zhǔn)確識(shí)別出安全實(shí)體PER和RT,還識(shí)別出了安全數(shù)據(jù)測(cè)試集中沒有標(biāo)注的ORG實(shí)體類型。另外,在句子3和句子7中,本文提出的方法均能準(zhǔn)確識(shí)別出安全數(shù)據(jù)測(cè)試集中沒有標(biāo)注的ORG和SW實(shí)體類型,說明本文提出的方法具有識(shí)別與訓(xùn)練集中相似實(shí)體的新實(shí)體的能力。對(duì)于句子8和句子9這種VUL_ID類型的英文字母和數(shù)字構(gòu)成的實(shí)體,不管該實(shí)體是單獨(dú)出現(xiàn)在句子中還是成對(duì)出現(xiàn)在句子中,本文提出的方法均能準(zhǔn)確識(shí)別出該類型的實(shí)體。此外,諸如“暗云Ⅲ”這種漢字加羅馬字符的安全實(shí)體,本文提出的方法均能準(zhǔn)確將其識(shí)別出來?!癐P地址”這類英文字母加漢字構(gòu)成的實(shí)體也能被準(zhǔn)確識(shí)別出來,如句子5所示。
表4 經(jīng)典句型例子分析Table 4 Analysis of typical sentences
然而,在句子3中,前一個(gè)實(shí)體“芯片”被準(zhǔn)確識(shí)別出,而后一個(gè)實(shí)體“芯片”卻沒有被準(zhǔn)確識(shí)別出來,Android卻被誤識(shí)別為ORG實(shí)體類型,這可能是因?yàn)锳ndroid前面有兩個(gè)ORG實(shí)體類型,算法在提取上下文信息的時(shí)候誤認(rèn)為android也是ORG類型的實(shí)體。
除了表4展示的這些典型例子,在實(shí)驗(yàn)過程中,對(duì)于較長(zhǎng)的ORG這種實(shí)體類型算法,往往不能準(zhǔn)確將其識(shí)別。換句話說,對(duì)于名稱較長(zhǎng)的實(shí)體,不管是構(gòu)成簡(jiǎn)單的還是構(gòu)成復(fù)雜的模型往往不能將其準(zhǔn)確識(shí)別出來。所以,本文提出的方法更加適用于安全實(shí)體中名稱不是很長(zhǎng)和實(shí)體構(gòu)成相對(duì)規(guī)律的安全實(shí)體。
針對(duì)開放網(wǎng)絡(luò)文本數(shù)據(jù)中的安全實(shí)體構(gòu)成非常復(fù)雜的問題,本文提出了一種基于殘差空洞卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)安全實(shí)體識(shí)別方法。使用BERT模型對(duì)字進(jìn)行向量化表示,進(jìn)一步結(jié)合空洞卷積神經(jīng)網(wǎng)絡(luò)和CRF準(zhǔn)確地識(shí)別網(wǎng)絡(luò)安全實(shí)體。在網(wǎng)絡(luò)安全實(shí)體識(shí)別數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,本文提出的基于殘差空洞卷積神經(jīng)網(wǎng)絡(luò)的方法在準(zhǔn)確率和精確率方面優(yōu)于許多已有的實(shí)體識(shí)別方法。
通過分析經(jīng)典句型可以看出,本文提出的方法在某些安全實(shí)體類型的識(shí)別上是存在不足的,仍然不能準(zhǔn)確識(shí)別出一些安全實(shí)體。在下一步的工作中,考慮從網(wǎng)上爬取大量的網(wǎng)絡(luò)安全數(shù)據(jù),使用表示能力較強(qiáng)的語(yǔ)言模型訓(xùn)練出網(wǎng)絡(luò)安全領(lǐng)域的字嵌入。并且,針對(duì)網(wǎng)絡(luò)安全數(shù)據(jù)集中安全實(shí)體的數(shù)量不平衡問題,對(duì)相應(yīng)的安全實(shí)體數(shù)量進(jìn)行補(bǔ)充或者在模型訓(xùn)練的過程中采用解決數(shù)據(jù)不平衡的訓(xùn)練技巧。此外,進(jìn)一步提高較長(zhǎng)的安全實(shí)體的識(shí)別準(zhǔn)確率。