劉向宇,燕 瑋,孟星妤,侯開茂
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
發(fā)現(xiàn)社交媒體中的網(wǎng)絡(luò)安全用戶可以有效追蹤網(wǎng)絡(luò)安全動態(tài),對網(wǎng)絡(luò)安全防護(hù)具有重要意義。實(shí)際上,識別社交網(wǎng)絡(luò)中的網(wǎng)絡(luò)安全用戶也是對社交網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行分類發(fā)現(xiàn)。
現(xiàn)實(shí)生活中,人們傾向于與類似的人發(fā)展社會關(guān)系,所以社交用戶的好友會分享更多的屬性,如種族、民族、宗教和職業(yè)——這就是所謂的“同質(zhì)性原則”[1]。這導(dǎo)致了在Twitter上相互關(guān)注的人通常有共同的話題興趣,可以通過相互關(guān)注關(guān)系來推斷社交媒體用戶的屬性。另外,社交用戶還具備其他可以獲取的數(shù)據(jù),如社交文本和用戶資料,這些資料構(gòu)成新的用戶屬性,也有助于推斷用戶的興趣或者職業(yè),與用戶的社交關(guān)系形成互補(bǔ)。
當(dāng)前已經(jīng)有大量的用戶分類工作都是基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行節(jié)點(diǎn)的分類。比如,網(wǎng)絡(luò)表示學(xué)習(xí)方法直接對網(wǎng)絡(luò)結(jié)構(gòu)特征進(jìn)行學(xué)習(xí)提取,將得到的特征用于分類可以取得不錯的效果。然而,現(xiàn)有的網(wǎng)絡(luò)表示學(xué)習(xí)方法缺乏對社交文本和社交基本資料特征的學(xué)習(xí),極大地限制了其分類效果。相對于單純利用社交網(wǎng)絡(luò)結(jié)構(gòu)對用戶進(jìn)行分類,當(dāng)前主流的圖神經(jīng)網(wǎng)絡(luò)算法創(chuàng)新性地融入了網(wǎng)絡(luò)節(jié)點(diǎn)的其他屬性特征,獲得了更高的分類準(zhǔn)確率。本文針對網(wǎng)絡(luò)表示學(xué)習(xí)方法缺乏社交文本特征的問題,通過改進(jìn)Node2vec[2]方法,使其融合多種網(wǎng)絡(luò)屬性特征而更加有利于分類,從而識別出社交媒體中的網(wǎng)絡(luò)安全用戶。
本文的創(chuàng)新性工作包括:
(1)利用網(wǎng)絡(luò)表示學(xué)習(xí)模型Node2vec來進(jìn)行網(wǎng)絡(luò)節(jié)點(diǎn)的特征表示,將結(jié)構(gòu)特征向量和相應(yīng)用戶節(jié)點(diǎn)的文本特征向量進(jìn)行拼接,形成社交用戶節(jié)點(diǎn)的向量表示。
(2)標(biāo)注了部分網(wǎng)絡(luò)安全用戶,初步形成網(wǎng)絡(luò)安全用戶資料庫。對于每個(gè)用戶節(jié)點(diǎn),生成其網(wǎng)絡(luò)安全文本特征。
(3)利用自監(jiān)督學(xué)習(xí)方法進(jìn)行分類模型的訓(xùn)練樣本擴(kuò)充,提升了分類效果。
結(jié)果表明,在已經(jīng)收集的Twitter數(shù)據(jù)集上,所提方法的平均識別準(zhǔn)確率為96.37%,比現(xiàn)有常用的算法平均高出0.48%~3.67%。
本文通過對社交媒體用戶進(jìn)行分類來發(fā)現(xiàn)網(wǎng)絡(luò)安全用戶。首先,基于好友的特點(diǎn)進(jìn)行分類,隨著自然語言處理的興起,出現(xiàn)了基于社交文本的分類方法[3-4]。而近年來,結(jié)合社交網(wǎng)絡(luò)拓?fù)浜蜕缃挥脩魧傩缘姆椒ㄖ饾u引起關(guān)注,比如[5-6]等。
2014年Bryan Perozzi等人根據(jù)Word2vec對詞的嵌入方法,提出Deepwalk[7]模型。此模型將節(jié)點(diǎn)看作是自然語言處理中的單詞,利用隨機(jī)游走采集節(jié)點(diǎn)的方式,將得到的序列看作是語句,采集到節(jié)點(diǎn)語句后用自然語言處理中的Skip gram模型進(jìn)行向量的學(xué)習(xí),得到每一個(gè)節(jié)點(diǎn)的向量表示。2016年斯坦福大學(xué)的Grover和Leskovec提出Node2vec,對Deepwalk模型進(jìn)行了改進(jìn),可以支持有向圖的表示學(xué)習(xí),并且提出了新的游走方法。通過調(diào)節(jié)游走的參數(shù),取得比較好的節(jié)點(diǎn)表示效果。同樣在2016年,Kip提出了GCN[8]模型,將卷積神經(jīng)網(wǎng)路的理論應(yīng)用到圖結(jié)構(gòu)上。2019年P(guān)an[9]等人將GCN理論應(yīng)用到社交用戶職業(yè)分類上,分類效果好于眾多的網(wǎng)絡(luò)表示學(xué)習(xí)的方法。隨著圖神經(jīng)網(wǎng)絡(luò)的興起,2017年Graph-Sage[10]和GAT[11]模型被提出。GraphSage通過聚合鄰居節(jié)點(diǎn)特征的方式來生成目標(biāo)節(jié)點(diǎn)的特征,相對于GCN,這種方法可以顯著提升特征生成靈活性。同時(shí),利用batch-training的方法,提升了訓(xùn)練效率。GAT模型的創(chuàng)新之處是加入attention機(jī)制,給節(jié)點(diǎn)之間的邊不同的權(quán)重,幫助模型學(xué)習(xí)網(wǎng)絡(luò)的結(jié)構(gòu)信息。Cao等人于2018年提出基于自編碼器的社區(qū)發(fā)現(xiàn)算法,分別對網(wǎng)絡(luò)拓?fù)浜凸?jié)點(diǎn)屬性進(jìn)行向量表示然后拼接進(jìn)行分類。2019年提出的NOCD[12]模型基于GCN和伯努利泊松分布,學(xué)得節(jié)點(diǎn)和類別的隸屬關(guān)系矩陣,矩陣中的每個(gè)元素表示節(jié)點(diǎn)屬于某個(gè)類別的概率,當(dāng)概率值大于0.5即判定其屬于此類別。此方法是一個(gè)多標(biāo)簽分類方法,最終每個(gè)節(jié)點(diǎn)屬于多個(gè)不同的類別,在重疊社區(qū)發(fā)現(xiàn)方面取得不錯的效果。
除社交關(guān)系和文本信息外,2014年Huang[13]等人將社交網(wǎng)絡(luò)其他信息(如簡介信息和轉(zhuǎn)發(fā)信息等)加入進(jìn)行分類。2017年Liao[14]等人將結(jié)構(gòu)信息和其他屬性信息同時(shí)輸入深度神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)非線性特征抽象,相對于傳統(tǒng)的圖神經(jīng)網(wǎng)絡(luò)模型,有較大性能提升。具體的向量表示方式如表1所示。
表1 社交網(wǎng)絡(luò)用戶向量表示
以上工作并沒有針對某一特定領(lǐng)域進(jìn)行分類,且學(xué)到的社交節(jié)點(diǎn)的向量表示沒有結(jié)合用戶文本和基本信息等多種特征。
為了解決現(xiàn)有用戶分類方法在語義特征提取的不足,本文提出了新的社交用戶分類方法,包括三個(gè)階段:首先進(jìn)行網(wǎng)絡(luò)表示學(xué)習(xí)學(xué)得社交網(wǎng)絡(luò)節(jié)點(diǎn)的結(jié)構(gòu)特征;然后將結(jié)構(gòu)特征與人工提取的語義特征進(jìn)行拼接得到社交節(jié)點(diǎn)的特征向量;最后用邏輯回歸模型(Logistic Regression,LR)[15]進(jìn)行分類預(yù)測網(wǎng)絡(luò)安全用戶。具體各階段介紹如下。
網(wǎng)絡(luò)表示學(xué)習(xí)也稱為圖嵌入是將圖網(wǎng)絡(luò)結(jié)構(gòu)中的節(jié)點(diǎn)、邊或者整體表示為一個(gè)低維度的向量,此向量被稱為嵌入向量。Node2vec的節(jié)點(diǎn)采樣方法比較靈活,結(jié)合了兩種節(jié)點(diǎn)采樣方式,如圖1所示。
圖1 兩種節(jié)點(diǎn)采樣方式
虛線箭頭表示廣度優(yōu)先游走BFS,實(shí)線箭頭表示深度優(yōu)先游走DFS,是兩種極端的節(jié)點(diǎn)采樣方法,分別適用于提取結(jié)構(gòu)等價(jià)性和同質(zhì)性的網(wǎng)絡(luò)節(jié)點(diǎn)特征。廣度優(yōu)先游走算法能夠表達(dá)網(wǎng)絡(luò)節(jié)點(diǎn)的同質(zhì)性,深度優(yōu)先游走可以表達(dá)網(wǎng)絡(luò)節(jié)點(diǎn)的結(jié)構(gòu)對等性[2]。然而,現(xiàn)實(shí)中的網(wǎng)絡(luò)根據(jù)結(jié)構(gòu)的不同,需要結(jié)合兩種游走方法,才可以比較好地提取到特征。
對于Node2vec的游走采樣方法如圖2所示,上一步在節(jié)點(diǎn)u,當(dāng)前游走在節(jié)點(diǎn)v。通過控制游走的參數(shù)來控制廣度優(yōu)先和深度優(yōu)先的比例,根據(jù)式(1)計(jì)算出下一步游走到節(jié)點(diǎn)x1,x2,x3或者回到節(jié)點(diǎn)u的概率。
圖2 Node2vec游走采樣圖
式中,p被稱為返回參數(shù)(return parameter),q被稱為進(jìn)出參數(shù)(in-out parameter)。當(dāng)算法隨機(jī)游走到節(jié)點(diǎn)v時(shí),p越小,下一步走到u的可能性越大,即游走到相鄰節(jié)點(diǎn)的可能性越大;q越小,Node2vec中深度優(yōu)先游走成分會更多,則隨機(jī)游走到遠(yuǎn)處節(jié)點(diǎn)的可能性越大,更能表達(dá)網(wǎng)絡(luò)節(jié)點(diǎn)的結(jié)構(gòu)對等性。所以針對不同的網(wǎng)絡(luò)特性,控制p,q的值可以保留更多網(wǎng)絡(luò)的特征。
2.2.1 邏輯回歸
邏輯回歸是機(jī)器學(xué)習(xí)中的經(jīng)典分類方法,二項(xiàng)邏輯回歸模型是一種二分類模型,模型具體形式如下:
其中,P(yi=1|xi)是第i個(gè)樣本xi條件下,事件yi=1發(fā)生的概率,記作Pi(0<Pi<1)。同理,P(yi=0|xi)也可以求得。LR比較二者的大小,將實(shí)例xi判斷到概率值較大的那一類。本文使用了Sklearn庫中的二項(xiàng)邏輯回歸算法進(jìn)行分類。
2.2.2 支持向量機(jī)
支持向量機(jī)(Supported Vector Machine,SVM)[16]也是經(jīng)典的二分類算法。當(dāng)訓(xùn)練集線性可分時(shí),SVM的目標(biāo)是構(gòu)造線性最優(yōu)解分類超平面w·x+b=0,這個(gè)超平面可以將兩類數(shù)據(jù)完全分類,并使分類間隔最大,即使得此平面到兩類數(shù)據(jù)的距離最大。所以,可以表示為一個(gè)凸二次規(guī)劃問題,如式(4)所示。
求得最優(yōu)化問題的解是w*,b*,分離超平面是w·xi+b=0,決策函數(shù)是:
現(xiàn)實(shí)中訓(xùn)練數(shù)據(jù)線性可分的情況較少,但是近似線性可分的情況較多,當(dāng)訓(xùn)練集線性不可分時(shí),一般使用線性支持向量機(jī)或者軟間隔支持向量機(jī)。對于非線性分類問題,可以通過非線性變換將它轉(zhuǎn)化為某個(gè)高維特征空間中的線性分類問題。在高維線性特征空間中學(xué)習(xí)線性支持向量機(jī)[17]。
本文收集到的社交媒體數(shù)據(jù)中包括關(guān)系數(shù)據(jù)、文本數(shù)據(jù)和基本信息數(shù)據(jù)。將所有用戶的文本和基本信息數(shù)據(jù)進(jìn)行整理,提取并挑選了256個(gè)網(wǎng)絡(luò)安全詞匯,組成一個(gè)網(wǎng)絡(luò)安全詞匯向量:
根據(jù)向量V對節(jié)點(diǎn)進(jìn)行one-hot編碼,組成一個(gè)256維的0/1向量。如果一個(gè)用戶節(jié)點(diǎn)的社交文本和基本信息有相應(yīng)的網(wǎng)絡(luò)安全單詞,則在對應(yīng)維度上標(biāo)注為1,沒有則為0。此向量即用戶節(jié)點(diǎn)的網(wǎng)絡(luò)安全特征向量。將每個(gè)用戶節(jié)點(diǎn)的特征向量和利用Node2vec生成的特征向量拼接,得到用戶節(jié)點(diǎn)最終的表示向量。利用此節(jié)點(diǎn)表示向量進(jìn)行下游任務(wù)完成網(wǎng)絡(luò)安全用戶的分類識別。
算法的時(shí)間復(fù)雜度與網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)量n有關(guān)。Node2vec算法自身引入了別名采樣提高采樣效率,每次采樣的時(shí)間復(fù)雜度為O(1),采樣模塊的復(fù)雜度為O(rln),r為采樣迭代次數(shù),l是隨機(jī)游走的長度。Skipgram模塊特征生成時(shí)間為O(nlogn),Node2vec的算法復(fù)雜度為O(nlogn)。因?yàn)橄蛄科唇雍瓦壿嫽貧w分類的時(shí)間復(fù)雜度也是線性的,所以算法的時(shí)間復(fù)雜度為線性時(shí)間復(fù)雜度O(nlogn)。
實(shí)驗(yàn)環(huán)境采用的服務(wù)器配置為CPU:Intel?Xeon?CPU E5-2640 v3@2.60 GHz(8核16線程),采用的操作系統(tǒng)為Ubuntu 16.04 LTS,算法實(shí)現(xiàn)的語言及版本為Python 3.9以及PyTorch 2.0。
本文將收集的用戶關(guān)系數(shù)據(jù)、文本數(shù)據(jù)和基本信息數(shù)據(jù)應(yīng)用于不同的圖神經(jīng)網(wǎng)絡(luò)算法(如GCN、GAT、Graphsage)和表示學(xué)習(xí)算法(如Deepwalk等),來發(fā)現(xiàn)網(wǎng)絡(luò)安全用戶。由于網(wǎng)絡(luò)安全用戶在社交媒體上分布較為稀疏,本文根據(jù)100個(gè)網(wǎng)絡(luò)安全關(guān)鍵詞,選擇一部分含有網(wǎng)絡(luò)安全用戶較多的社交媒體,總共收集了30 000個(gè)社交媒體用戶和相關(guān)的用戶基本信息。將大型的社交網(wǎng)絡(luò)分割為3個(gè)不同大小級別的社交網(wǎng)絡(luò)以驗(yàn)證Node2vec和LR結(jié)合分類準(zhǔn)確率。三種網(wǎng)絡(luò)的節(jié)點(diǎn)規(guī)模分別是275,2 005,15 000。不同規(guī)模的社交網(wǎng)絡(luò)如圖3所示。
圖3 不同規(guī)模Twitter網(wǎng)絡(luò)
將用戶的屬性特征和網(wǎng)絡(luò)拓?fù)涮卣髯鳛閳D神經(jīng)網(wǎng)絡(luò)的輸入,每個(gè)圖神經(jīng)網(wǎng)絡(luò)都經(jīng)過至少100個(gè)epoch訓(xùn)練。Deepwalk和Node2vec的嵌入維度設(shè)置為256,游走節(jié)點(diǎn)的序列長度為15,Node2vec的p值設(shè)置為0.25,q值設(shè)置為4。最終,本文所提的算法(Node2vec+LR)與現(xiàn)有常用圖模型(GCN、GAT、Deepwalk+LR)的預(yù)測準(zhǔn)確率對比如表2所示。
表2 不同模型分類準(zhǔn)確率 (%)
由表2可知,Node2vec與LR的組合可獲得最高的平均分類準(zhǔn)確率96.37%。且在網(wǎng)絡(luò)節(jié)點(diǎn)規(guī)模為275時(shí),準(zhǔn)確率最高。比現(xiàn)有常用的其他網(wǎng)絡(luò)表示學(xué)習(xí)算法和圖神經(jīng)網(wǎng)絡(luò)算法平均高出0.48%~3.67%??梢园l(fā)現(xiàn),表示學(xué)習(xí)加二分類的方法適合用于網(wǎng)絡(luò)安全用戶發(fā)現(xiàn)。本文也將SVM用于分類,其結(jié)果和LR相近但是耗時(shí)較長不適合用于規(guī)模較大的網(wǎng)絡(luò)。
因?yàn)橛脵C(jī)器學(xué)習(xí)分類算法進(jìn)行分類需要標(biāo)注一部分網(wǎng)絡(luò)安全數(shù)據(jù),本文人工標(biāo)注了1 000條Twitter數(shù)據(jù)。找到其中的1 000條用戶數(shù)據(jù)。對于規(guī)模相對較大的社交網(wǎng)絡(luò),訓(xùn)練量仍然太少,因此本文采取了自訓(xùn)練的方法來進(jìn)行擴(kuò)充數(shù)據(jù)集。先用分類算法在包含標(biāo)注數(shù)據(jù)的網(wǎng)絡(luò)上進(jìn)行預(yù)測。取1 000條數(shù)據(jù)進(jìn)行訓(xùn)練,300條數(shù)據(jù)用于驗(yàn)證,逐漸將訓(xùn)練集擴(kuò)充到8 000,用2 000條數(shù)據(jù)進(jìn)行測試。最后,將結(jié)果與不進(jìn)行訓(xùn)練集擴(kuò)充的對照組進(jìn)行精確率和F1-Score的對比。
F1-Score也是分類問題的一個(gè)衡量指標(biāo),它是精確率和召回率的調(diào)和平均數(shù),最大為1,最小為0。定義如式(6)所示:
如圖5所示,自訓(xùn)練組精確率最高可以達(dá)到90.40%,平均高于對照組3.38%。圖6中,自訓(xùn)練組F1-Score明顯高于對照組,在所有的實(shí)驗(yàn)數(shù)據(jù)集上F1-Score均高于88%,最高可達(dá)89.43%,平均高于對照組4.16%。這充分說明模型的訓(xùn)練集規(guī)模的增加有助于提高精確率和F1-Score。在一定的數(shù)量下,隨著訓(xùn)練節(jié)點(diǎn)數(shù)量的增多,訓(xùn)練得到的模型更加精確。值得說明的是,在嵌入維度的選擇上本文選擇256,當(dāng)嵌入維度減小時(shí)精確率會有明顯的下降,當(dāng)超過300后提升效果不明顯。
圖5 F1-Score對比(單位:%)
圖4 精確率對比(單位:%)
本文通過人工添加網(wǎng)絡(luò)安全語義特征,并與網(wǎng)絡(luò)表示學(xué)習(xí)結(jié)合的方式來生成社交網(wǎng)絡(luò)節(jié)點(diǎn)的特征表示,使得表示向量包含了節(jié)點(diǎn)的語義特征和結(jié)構(gòu)特征。利用經(jīng)典的機(jī)器學(xué)習(xí)二分類方法進(jìn)行網(wǎng)絡(luò)安全用戶的預(yù)測。預(yù)測效果優(yōu)于常用的圖神經(jīng)網(wǎng)絡(luò)算法,并且驗(yàn)證了通過自訓(xùn)練的方法對于預(yù)測效果有積極的影響。未來可以繼續(xù)擴(kuò)充語料庫,改進(jìn)語義和網(wǎng)絡(luò)拓?fù)鋬深愄卣鞯钠唇臃绞?,用更加精確的表示學(xué)習(xí)或者圖神經(jīng)網(wǎng)絡(luò)方法進(jìn)行更多特征的融合,來發(fā)現(xiàn)特定領(lǐng)域的社交用戶。