王俊,賴會(huì)霞,2*,萬玥,張仕,3**
(1.福建師范大學(xué)計(jì)算機(jī)與網(wǎng)絡(luò)空間安全學(xué)院,福建 福州 350117;2.福建省網(wǎng)絡(luò)安全與密碼技術(shù)重點(diǎn)實(shí)驗(yàn)室,福建 福州 350117;3.福建師范大學(xué)數(shù)字福建環(huán)境監(jiān)測(cè)物聯(lián)網(wǎng)實(shí)驗(yàn)室,福建 福州 350117)
異常檢測(cè)通常用于識(shí)別偏離正常行為的數(shù)據(jù)、事件和觀察結(jié)果,其在許多領(lǐng)域都有重要應(yīng)用,如欺詐攻擊[1-2]、網(wǎng)絡(luò)安全[3-4]、醫(yī)療數(shù)據(jù)分析[5-6]等。各類傳感器在工業(yè)、醫(yī)療等領(lǐng)域的廣泛應(yīng)用帶來了更高維度的數(shù)據(jù),但是,高維數(shù)據(jù)的“維度災(zāi)難”問題給現(xiàn)有異常檢測(cè)方法帶來新的挑戰(zhàn),主要表現(xiàn)為現(xiàn)有異常檢測(cè)方法在面對(duì)高維數(shù)據(jù)時(shí)存在不同程度的檢測(cè)精度下降問題。所謂的“維度災(zāi)難”是指隨著數(shù)據(jù)維度的提升,從樣本點(diǎn)到質(zhì)心的最大和最小歐氏距離的差值與其最小歐氏距離的比值趨于0,即隨著特征空間維度的增加,數(shù)據(jù)之間距離的相對(duì)差距幾乎消失[7],這也就導(dǎo)致基于距離的異常評(píng)估變得更困難。
目前,已有學(xué)者提出多種無監(jiān)督異常檢測(cè)方法,其中基于距離的異常檢測(cè)算法(如KNN[8])和基于密度的異常檢測(cè)算法(如LOF[9]、DBScan[10])依賴于數(shù)據(jù)節(jié)點(diǎn)之間的距離來求異常值,由于距離會(huì)隨著維度升高而變得難以區(qū)分,從而導(dǎo)致這類算法在高維情況下失效。此外,多數(shù)基于距離和密度的異常檢測(cè)算法需考慮局部范圍內(nèi)的近鄰數(shù)據(jù),因此,它們的異常檢測(cè)精度還受近鄰點(diǎn)數(shù)量的影響。為了減少節(jié)點(diǎn)間的距離計(jì)算,研究人員提出基于樹結(jié)構(gòu)的異常檢測(cè)算法(如IFOREST[11]),但是該類算法同樣無法適用于高維數(shù)據(jù)的情況。此外,高維“噪聲”也會(huì)導(dǎo)致基于樹和基于分類器的異常檢測(cè)算法精度下降[12]。
隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,研究人員提出了一系列基于深度學(xué)習(xí)的異常檢測(cè)方法,如自動(dòng)編碼 器(AE)[13]、變分自 動(dòng)編碼 器(VAE)[14]、DSVDD[15]、對(duì)抗神經(jīng)網(wǎng)絡(luò)(GAN)[16]、LUNAR[17]等,但是這些方法仍未能很好地解決高維數(shù)據(jù)異常檢測(cè)問題。其中,在利用神經(jīng)網(wǎng)絡(luò)進(jìn)行降維的異常檢測(cè)方法中,判定過程和學(xué)習(xí)過程割裂,從而導(dǎo)致模型提取的特征不能表征出異常;利用神經(jīng)網(wǎng)絡(luò)重構(gòu)誤差以進(jìn)行異常檢測(cè)的方法則在超參數(shù)的調(diào)節(jié)上敏感,且抗干擾能力較差;深度學(xué)習(xí)和傳統(tǒng)異常檢測(cè)算法相結(jié)合則仍存在傳統(tǒng)方法中的固有問題;直接使用神經(jīng)網(wǎng)絡(luò)進(jìn)行端對(duì)端異常打分的深度學(xué)習(xí)模型未能解決高維空間中復(fù)雜的數(shù)據(jù)分布問題[18]。
針對(duì)“維度災(zāi)難”問題,文獻(xiàn)[19]利用角度和節(jié)點(diǎn)間距離共同計(jì)算節(jié)點(diǎn)的異常指標(biāo),但其時(shí)間復(fù)雜度太高。雖然該文獻(xiàn)之后提出的fastABOD 把時(shí)間復(fù)雜度降到O(n2+kn),但又引入了k的設(shè)置問題,同時(shí)還導(dǎo)致fastABOD 在中低維度異常檢測(cè)中精度下降。
針對(duì)目前異常檢測(cè)算法無法適應(yīng)高維數(shù)據(jù)集以及基于角度的異常檢測(cè)方法存在的近鄰參數(shù)設(shè)置和中低維度適應(yīng)性問題,本文提出一種基于角度的圖神經(jīng)網(wǎng)絡(luò)異常檢測(cè)(A-GNN)方法。該方法以k近鄰點(diǎn)間的角度方差作為節(jié)點(diǎn)的初始異常因子,以圖神經(jīng)網(wǎng)絡(luò)(GNN)節(jié)點(diǎn)信息交互方式訓(xùn)練模型[20],以克服“維度災(zāi)難”和k參數(shù)設(shè)置問題,增強(qiáng)方法的適應(yīng)性。利用均勻采樣和數(shù)據(jù)擾動(dòng)的負(fù)采樣方法,解決缺少異常數(shù)據(jù)而無法訓(xùn)練網(wǎng)絡(luò)的問題。
異常檢測(cè)可以分為無監(jiān)督、半監(jiān)督和有監(jiān)督的異常檢測(cè)。由于現(xiàn)實(shí)世界中多數(shù)數(shù)據(jù)未經(jīng)標(biāo)記,且異常數(shù)據(jù)通常較難獲取,因此無監(jiān)督異常檢測(cè)得到廣泛關(guān)注。
傳統(tǒng)的無監(jiān)督異常檢測(cè)算法可以分為基于統(tǒng)計(jì)的異常檢測(cè)算法[21-22]、基于距離的異常檢測(cè)算法[8]、基于密度的異常檢測(cè)算法[9-10,23]、基于樹的異常檢測(cè)算法[11,24]、基于分類器的異常檢測(cè)算法[12,25]等。
文獻(xiàn)[21]基于數(shù)據(jù)維度間的無關(guān)假設(shè)提出一種線性復(fù)雜度的異常檢測(cè)算法HBOS。文獻(xiàn)[22]提出COPOD 方法,該方法基于所有維度之間的聯(lián)合分布估算每個(gè)點(diǎn)的尾端概率,實(shí)現(xiàn)異常情況評(píng)估?;诮y(tǒng)計(jì)的異常檢測(cè)算法的優(yōu)點(diǎn)在于具有很強(qiáng)的理論支撐,缺點(diǎn)在于需要準(zhǔn)確定義不同應(yīng)用場(chǎng)景下的異常并找到一個(gè)合適的模型。此外,基于統(tǒng)計(jì)的異常檢測(cè)算法可拓展性較差,很難實(shí)現(xiàn)模型的拓展使用。
在基于距離的異常檢測(cè)算法中,KNN[8]算法的主要思想是通過尋找近鄰點(diǎn)并利用近鄰節(jié)點(diǎn)之間的距離來發(fā)現(xiàn)異常數(shù)據(jù)。該類算法的異常評(píng)判是基于距離的k最近鄰,在面對(duì)高維數(shù)據(jù)時(shí)容易受到“維度災(zāi)難”的影響導(dǎo)致算法精度下降。此外,選擇正確的k值也難以形成統(tǒng)一的標(biāo)準(zhǔn)。
為了能夠找到局部異常點(diǎn),以局部離群因子(LOF)[9]、基于連接的異常因子(COF)[23]和DBScan[10]為代表的基于密度的異常檢測(cè)算法被提出。這些算法通過計(jì)算節(jié)點(diǎn)之間的密度關(guān)系來尋找局部異常點(diǎn),以克服基于距離的方法的弊端,但是它們?nèi)匀浑x不開距離計(jì)算,需要利用近鄰點(diǎn)來計(jì)算密度。在高維度數(shù)據(jù)集中,數(shù)據(jù)維度越高,樣本點(diǎn)分布越稀疏,導(dǎo)致高維數(shù)據(jù)的正常樣本和異常樣本的密度沒有明顯差別,容易造成基于密度的異常檢測(cè)算法在高維數(shù)據(jù)中檢測(cè)精度下降。
異常點(diǎn)通常具有“少而不同”的特點(diǎn),比較容易從整體數(shù)據(jù)集中分離出來,基于此,有學(xué)者提出具有隨機(jī)分割思想的基于樹的隔離森林IFOREST[11]異常檢測(cè)方法、INNE 方法[24]。IFOREST 的主要思想是通過分割形成隔離樹后,再利用節(jié)點(diǎn)在樹中的深度以及每個(gè)分割區(qū)域所包含的節(jié)點(diǎn)數(shù)計(jì)算異常分?jǐn)?shù),從而確定異常數(shù)據(jù)。INNE 在IFOREST 的基礎(chǔ)上結(jié)合近鄰距離計(jì)算方式,利用近鄰因素提高尋找局部異常的能力?;跇涞漠惓z測(cè)方法能夠有效避免異常檢測(cè)中的距離計(jì)算,但是由于樹形結(jié)構(gòu)是隨機(jī)分割的,容易受到噪聲維度的影響。在高維數(shù)據(jù)的異常檢測(cè)中,基于樹的方法可能會(huì)隨機(jī)選中帶有噪聲的特征作為分割點(diǎn),從而極大影響異常點(diǎn)的判斷,并且數(shù)據(jù)集的維度越高,噪聲的影響越明顯。
基于分類器的異常檢測(cè)算法源自于機(jī)器學(xué)習(xí)中的各種分類算法,其中的典型代表是單分類支持向量機(jī)(OC-SVM)[12],其核心思想是將節(jié)點(diǎn)通過核函數(shù)映射到一個(gè)超平面上,遠(yuǎn)離超平面上的點(diǎn)為異常點(diǎn)。OC-SVM 主要針對(duì)樣本不均衡情況下的數(shù)據(jù)分類,更加適用于異常數(shù)據(jù)和正常數(shù)據(jù)樣本比例極不均衡的情形。但是,過高的維度會(huì)導(dǎo)致分類器模型復(fù)雜化,在面對(duì)異常檢測(cè)判別時(shí)加入太多無關(guān)維度的考慮,影響模型進(jìn)行正確判斷。為此,一些研究人員采用先降維再處理的方法,如利用局部敏感哈希降維后進(jìn)行數(shù)據(jù)檢索[26]。為提高OC-SVM 在面對(duì)高維數(shù)據(jù)時(shí)的表現(xiàn)能力,文獻(xiàn)[25]通過利用主成分分析進(jìn)行降維提出基于主成分分類器的異常檢測(cè)方法PCC,但是降維方法本質(zhì)上并未有效提高基于分類器的異常檢測(cè)算法在高維數(shù)據(jù)上的檢測(cè)精度。
從上述分析可以看出,“維度災(zāi)難”問題使得高維空間中的正常數(shù)據(jù)也具有稀疏分布、距離模糊等特點(diǎn),導(dǎo)致傳統(tǒng)的異常數(shù)據(jù)檢測(cè)方法很難應(yīng)用于高維數(shù)據(jù)中。
傳統(tǒng)算法受高維數(shù)據(jù)“維度災(zāi)難”影響導(dǎo)致異常檢測(cè)精度較低,為此,文獻(xiàn)[19]提出基于角度的異常檢測(cè)方法ABOD,其使用角度替換距離作為基本的異常評(píng)測(cè)指標(biāo),實(shí)驗(yàn)結(jié)果表明,該方法在高維數(shù)據(jù)集中表現(xiàn)優(yōu)于基于距離、基于密度的異常檢測(cè)方法。但是,ABOD 方法的時(shí)間復(fù)雜度為O(n3),無法在大規(guī)模數(shù)據(jù)中得到有效應(yīng)用。為了提高算法的效率,文獻(xiàn)[19]還提出了一種基于近鄰點(diǎn)的快速角度異常檢測(cè)方法fastABOD,其時(shí)間復(fù)雜度為O(n2+kn),但是,該方法存在需要設(shè)置近鄰點(diǎn)個(gè)數(shù)、在中低維度數(shù)據(jù)中異常檢測(cè)精度退化的問題。
為了縮短ABOD 的運(yùn)算時(shí)間,文獻(xiàn)[27]引入隨機(jī)空間投影技術(shù),期望使算法的運(yùn)行時(shí)間達(dá)到亞線性時(shí)間復(fù)雜度,這一改進(jìn)雖然提高了算法的效率,但是在面對(duì)低維度數(shù)據(jù)時(shí)表現(xiàn)不穩(wěn)定。此外,文獻(xiàn)[28]把基于角度的方法應(yīng)用于電梯故障檢測(cè)任務(wù)中??傮w而言,基于角度的異常檢測(cè)方法在算法適用性以及算法精度上仍有較大的改進(jìn)空間。
相較于傳統(tǒng)算法,深度學(xué)習(xí)在面對(duì)高維數(shù)據(jù)時(shí)有著更好的適應(yīng)性。深度學(xué)習(xí)在異常檢測(cè)中的作用主要分為四大類:1)深度學(xué)習(xí)用于特征提??;2)利用深度學(xué)習(xí)重構(gòu)誤差以進(jìn)行異常檢測(cè);3)深度學(xué)習(xí)和傳統(tǒng)算法相結(jié)合以學(xué)習(xí)常態(tài)的表達(dá)形式;4)以端對(duì)端的方式通過深度學(xué)習(xí)進(jìn)行異常評(píng)分。
利用深度學(xué)習(xí)進(jìn)行特征提取的方法旨在利用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)據(jù)降維,如利用神經(jīng)網(wǎng)絡(luò)替代傳統(tǒng)的PCA 降維方法[29]和隨機(jī)投影方法[30]。相比傳統(tǒng)降維方法,神經(jīng)網(wǎng)絡(luò)在線性特征和非線性特征提取上均表現(xiàn)更 好。例 如,有研究 人員利 用AlexNet[31]、VGG[32]和ResNet[33]來提取低維數(shù)據(jù)。但是,這類方法只是將深度學(xué)習(xí)模型作為一個(gè)獨(dú)立的特征提取工具,并不是專門為了異常檢測(cè)而創(chuàng)建模型,這種特征提取方法很難實(shí)現(xiàn)異常的精準(zhǔn)判斷。
基于重構(gòu)的深度學(xué)習(xí)異常檢測(cè)方法并不是專門為了異常檢測(cè)而設(shè)計(jì)的,但是通過重構(gòu)后的數(shù)據(jù)能有效發(fā)現(xiàn)異常。其中的典型代表有AE[13],它使用正常樣本進(jìn)行訓(xùn)練,若深入異常樣本,則訓(xùn)練好的模型再生出來的結(jié)果和原樣本通常會(huì)有較大誤差。隨后,有研究人員在自動(dòng)編碼器的基礎(chǔ)上發(fā)展出其他變體,如VAE[14]和GAN[16]?;谥貥?gòu)的異常檢測(cè)方法需要大量數(shù)據(jù)集進(jìn)行訓(xùn)練,如果訓(xùn)練集的數(shù)據(jù)量不夠,其精度將無法滿足預(yù)期,而且這些模型并不是專門為了異常檢測(cè)而構(gòu)建的,當(dāng)面對(duì)不規(guī)律數(shù)據(jù)時(shí)將無法進(jìn)行針對(duì)性的優(yōu)化。
深度學(xué)習(xí)和傳統(tǒng)算法相結(jié)合的異常檢測(cè)方法以傳統(tǒng)算法為主導(dǎo),引導(dǎo)網(wǎng)絡(luò)的學(xué)習(xí),它們是一種專門為了異常檢測(cè)而設(shè)計(jì)的深度學(xué)習(xí)模型。LUNAR[17]通過結(jié)合基于距離的異常檢測(cè)方法和深度學(xué)習(xí)模型完成異常檢測(cè)任務(wù),其驗(yàn)證了近鄰檢測(cè)算法能夠轉(zhuǎn)換為圖神經(jīng)網(wǎng)絡(luò)信息傳遞的框架,并且實(shí)現(xiàn)了對(duì)近鄰檢測(cè)算法的統(tǒng)一應(yīng)用,但該方法仍然受到“維度災(zāi)難”的影響。DSVDD[15]是分類方法與深度學(xué)習(xí)方法相結(jié)合進(jìn)行異常檢測(cè)的典型代表,該方法利用深度學(xué)習(xí)模型完成核函數(shù)的工作,是一種專門針對(duì)異常檢測(cè)而設(shè)計(jì)的神經(jīng)網(wǎng)絡(luò)模型。但是DSVDD 還是不可避免地需要調(diào)節(jié)大量超參數(shù)和訓(xùn)練集,而且基于分類的方法在面對(duì)高維、復(fù)雜數(shù)據(jù)分布時(shí)可能失效,此外,高維數(shù)據(jù)集的噪聲也容易使該類方法在面對(duì)高維數(shù)據(jù)時(shí)產(chǎn)生偏差,導(dǎo)致性能下降。
以端對(duì)端的方式通過深度神經(jīng)網(wǎng)絡(luò)[34-35]進(jìn)行異常評(píng)分的方法不依賴其他方法指導(dǎo)學(xué)習(xí),而是通過深度學(xué)習(xí)模型直接學(xué)習(xí)以實(shí)現(xiàn)異常判別,其優(yōu)點(diǎn)在于不會(huì)受到傳統(tǒng)算法不足的限制。DAGMM 方法[34]將降維和密度估計(jì)通過神經(jīng)網(wǎng)絡(luò)有機(jī)地結(jié)合在一起,并進(jìn)行端對(duì)端的聯(lián)合訓(xùn)練。GDN 方法[35]通過使用注意力機(jī)制進(jìn)行異常權(quán)重選擇和圖神經(jīng)網(wǎng)絡(luò)預(yù)測(cè),以實(shí)現(xiàn)對(duì)多維時(shí)間序列的異常檢測(cè)。但是,端對(duì)端深度神經(jīng)網(wǎng)絡(luò)方法的核心在于使用合適的損失函數(shù)以及適配的數(shù)據(jù)集,因此需要設(shè)計(jì)新的損失函數(shù)以完成對(duì)數(shù)據(jù)的異常評(píng)分,這也導(dǎo)致端對(duì)端深度學(xué)習(xí)網(wǎng)絡(luò)的泛化性不如其他方法,不能很好地對(duì)模型進(jìn)行遷移使用。此外,該類異常檢測(cè)方法通常需要大量帶標(biāo)簽的數(shù)據(jù)集,這也極大限制了方法的有效應(yīng)用。
給定一個(gè)含有n個(gè)d維數(shù)據(jù)的數(shù)據(jù)集X={xi?Rd|i=1,2,…,n},A-GNN 旨在準(zhǔn)確地檢測(cè)出X中的異常數(shù)據(jù)。
A-GNN 模型工作流程如圖1 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版,下同)。首先將原始數(shù)據(jù)集X劃分為訓(xùn)練集X(train)和測(cè)試集X(test),對(duì)于訓(xùn)練數(shù)據(jù),通過混合使用2 種負(fù)樣本采樣以增加訓(xùn)練集中的負(fù)樣本占比(如(a)所示);然后構(gòu)建近鄰點(diǎn)關(guān)系并初始化節(jié)點(diǎn)的異常因子數(shù)(如(b)所示);接著將預(yù)處理數(shù)據(jù)輸入GNN 網(wǎng)絡(luò)中,并利用節(jié)點(diǎn)間的信息傳遞進(jìn)行模型訓(xùn)練(如(c)所示);最后輸出訓(xùn)練完成的模型(如(d)所示)。在利用訓(xùn)練后的模型進(jìn)行異常檢測(cè)時(shí),模型評(píng)估輸入數(shù)據(jù)并輸出異常分?jǐn)?shù)。
圖1 A-GNN 模型流程Fig.1 Procedure of A-GNN model
在多數(shù)應(yīng)用中,負(fù)樣本數(shù)據(jù)遠(yuǎn)少于正樣本數(shù)據(jù),正負(fù)樣本數(shù)據(jù)的不均衡往往導(dǎo)致深度學(xué)習(xí)模型難以訓(xùn)練[17],因此,本文通過負(fù)樣本的自動(dòng)生成使訓(xùn)練集中的正負(fù)樣本達(dá)到近似均衡。類似方法也在一些異常檢測(cè)任務(wù)中被使用,如文獻(xiàn)[17,36]中通過數(shù)據(jù)增強(qiáng)來有效解決正負(fù)樣本不均衡的問題。
本文使用2 種負(fù)樣本生成方法:1)在高維數(shù)據(jù)空間中進(jìn)行均勻分布采樣以生成負(fù)樣本;2)基于訓(xùn)練數(shù)據(jù)集的空間擾動(dòng)生成負(fù)樣本。在具體的應(yīng)用中,2 種方法生成的數(shù)據(jù)可能包含正樣本,但是在實(shí)際的高維空間中,正樣本只占其中的一小部分,因此,把2 種方法生成的樣本均計(jì)入負(fù)樣本并不會(huì)影響最終訓(xùn)練效果。最后,應(yīng)用于訓(xùn)練的正負(fù)樣本達(dá)到接近1∶1 的均衡狀態(tài)。
2 種負(fù)樣本生成方法具體如下:
1)均勻分布采樣。該方法在相同空間大小中隨機(jī)抽取樣本,并保證每個(gè)樣本的抽取概率相同,即樣本在相同空間大小中的分布是等概率的:
在本文應(yīng)用中,令a=0,b=1,確保數(shù)據(jù)均勻采樣同時(shí)實(shí)現(xiàn)數(shù)據(jù)歸一化。
2)子空間擾動(dòng)。該方法是基于“正樣本是由負(fù)樣本包圍”假設(shè)而設(shè)計(jì)的,其生成的負(fù)樣本數(shù)據(jù)靠近正樣本,有利于模型通過訓(xùn)練有效區(qū)分正負(fù)樣本,提高模型的泛化性。子空間擾動(dòng)采樣如式(2)所示:
其中:M?Rd是二進(jìn)制隨機(jī)向量,M中的每個(gè)元素有p的概率為1,有1-p的概率為0,這確定了擾動(dòng)的維度。
通過混合使用均勻分布采樣和子空間擾動(dòng)2 種方法,把生成的數(shù)據(jù)作為負(fù)樣本加入訓(xùn)練集中,最終形成X'(train)。
高維空間中以閔克夫斯基距離為代表的距離衡量方法會(huì)引起“維度災(zāi)難”問題,文獻(xiàn)[19]提出以角度作為異常檢測(cè)標(biāo)準(zhǔn)。A-GNN 引入角度作為異常數(shù)據(jù)評(píng)估要素,節(jié)點(diǎn)x初始異常因子考慮k個(gè)最近鄰節(jié)點(diǎn)之間的角度方差和距離因素,因此,能夠更好地適應(yīng)高維數(shù)據(jù)。以距離作為角度權(quán)重計(jì)算節(jié)點(diǎn)與k近鄰節(jié)點(diǎn)之間的角度方差,則節(jié)點(diǎn)的異常因子(AF)初始化如下:
在進(jìn)行節(jié)點(diǎn)異常因子初始化時(shí),A-GNN 首先將普通的數(shù)據(jù)轉(zhuǎn)換為圖數(shù)據(jù),并為每個(gè)節(jié)點(diǎn)構(gòu)建從k個(gè)近鄰到該節(jié)點(diǎn)的邊,所構(gòu)造的圖為G=(V,E),其中,V=X'(train),E={(x,y)|y?V,x?Nk(y,V)}。最后利 用式(3)計(jì)算每一個(gè)節(jié)點(diǎn)的初始異常因子。
2009 年,文獻(xiàn)[20]提出GNN,隨著人們對(duì)神經(jīng)網(wǎng)絡(luò)研究和應(yīng)用的深入,GNN 開始在各領(lǐng)域表現(xiàn)出良好的適應(yīng)性。GNN 節(jié)點(diǎn)之間的信息交互使得鄰接節(jié)點(diǎn)間能夠互相學(xué)習(xí)表征關(guān)系,多次迭代訓(xùn)練又有利于節(jié)點(diǎn)信息擴(kuò)散,從而能夠聚合遠(yuǎn)近節(jié)點(diǎn)的信息。
GNN 的信息交互是一種聚合鄰接節(jié)點(diǎn)信息來更新中心節(jié)點(diǎn)信息的范式,它將卷積算子推廣到不規(guī)則數(shù)據(jù)領(lǐng)域,實(shí)現(xiàn)了圖與神經(jīng)網(wǎng)絡(luò)的連接。遵循消息傳遞范式的圖神經(jīng)網(wǎng)絡(luò)被稱為消息傳遞圖神經(jīng)網(wǎng)絡(luò),其信息傳遞范式可以理解為3 步,即message、aggregation 和update,分別用符號(hào)?、⊕和γ表 示。GNN 圖節(jié)點(diǎn)信息傳遞范式如下:
A-GNN 首先與k個(gè)近鄰點(diǎn)構(gòu)造節(jié)點(diǎn)對(duì)以創(chuàng)建向量,從而構(gòu)造角度并計(jì)算異常因子,之后利用信息傳播機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)異常分?jǐn)?shù)計(jì)算。
對(duì)輸入已構(gòu)造k近鄰關(guān)系的圖數(shù)據(jù),如果一個(gè)目標(biāo)節(jié)點(diǎn)xi存在與它相連的源節(jié)點(diǎn)xj,即xi是xj的k最近鄰之一,它們之間的邊為(xi,x)j,則邊特征定義為兩點(diǎn)之間的向量,方向如式(5)所示:
針對(duì)GNN 信息傳播機(jī)制的3 個(gè)步驟,A-GNN 中的message、aggregation、update 定義如下:
1)message。節(jié)點(diǎn)xi和節(jié)點(diǎn)xj沿著邊(xi,xj)傳遞的信息等于其邊特征,如式(6)所示:
上述邊特征及消息傳遞實(shí)現(xiàn)示意圖如圖2所示。
圖2 信息傳遞示意圖Fig.2 Schematic diagram of information transmission
2)aggregation。aggregation 是用于k個(gè)近鄰 節(jié)點(diǎn)的聚合操作。在A-GNN 中,節(jié)點(diǎn)的異常分?jǐn)?shù)需要考慮k個(gè)鄰居節(jié)點(diǎn)異常分?jǐn)?shù)的影響,為此,與傳統(tǒng)圖神經(jīng)網(wǎng)絡(luò)使用平均池化或者最大池化不同,本文方法中的aggregation 使用可學(xué)習(xí)的聚合方法。對(duì)固定的k個(gè)近鄰點(diǎn)可以通過一個(gè)全連接層來學(xué)習(xí)節(jié)點(diǎn)之間的潛在聯(lián)系,該映射關(guān)系表示如下:
其中:F表示全連接神經(jīng)網(wǎng)絡(luò);Θ是神經(jīng)網(wǎng)絡(luò)的權(quán)重;是經(jīng)過信息聚合之后xi的節(jié)點(diǎn)信 息;e(i,j)表示從節(jié)點(diǎn)xi到節(jié)點(diǎn)xj的向量。節(jié) 點(diǎn)之間的信息聚合操作如圖3 所示。
圖3 節(jié)點(diǎn)間的信息聚合示意圖Fig.3 Schematic diagram of information aggregation between nodes
3)update。update 是通過聚合信息和上一層信息來更新預(yù)測(cè)節(jié)點(diǎn)。update 函數(shù)得到aggregation 函數(shù)映射后的值x(i1),通過式(8)更新輸出的xi的異常分?jǐn)?shù)。
A-GNN 模型的具體步驟定義如表1 所示。
表1 A-GNN 的信息傳遞步驟定義Table 1 Definition of information transmission steps for A-GNN
綜上可以看出:A-GNN 的異常因子同時(shí)利用了角度和距離進(jìn)行異常分?jǐn)?shù)的初始化;可學(xué)習(xí)的聚合方法增強(qiáng)了aggregation 操作;利用圖神經(jīng)網(wǎng)絡(luò)的信息傳遞機(jī)制可以讓各個(gè)節(jié)點(diǎn)之間相互學(xué)習(xí),使得方法不受近鄰點(diǎn)個(gè)數(shù)k的限制。因此,A-GNN 模型具有更優(yōu)的異常檢測(cè)能力。
實(shí)驗(yàn)所使用的6 個(gè)數(shù)據(jù)集均為開源數(shù)據(jù)集,可以在OODS 中下載獲取。6 個(gè)數(shù)據(jù)集均為真實(shí)世界中的實(shí)際數(shù)據(jù),且在眾多研究中被廣泛使用,它們包含了不同維度的數(shù)據(jù),從最少的9 維(GLASS)到最多的400 維(SPEECH),可充分展示本文方法對(duì)數(shù)據(jù)維度的良好適應(yīng)性。表2 中列出了數(shù)據(jù)集的基本信息。
表2 數(shù)據(jù)集基本信息Table 2 Basic information of datasets
為了說明本文方法的有效性,將其與以下方法進(jìn)行對(duì)比:經(jīng)典的異常檢測(cè)方法IFOREST、KNN、LOF 和OC-SVM;基于角度的異常檢測(cè)方法fastABOD;基于深度學(xué)習(xí)的異常檢測(cè)方法AE、VAE、DSVDD 和LUNAR。各方法的簡(jiǎn)要介紹如下:
1)IFOREST[11]:采用隨機(jī)切割方式將異常數(shù)據(jù)隔離在一個(gè)獨(dú)立子空間。
2)KNN[8]:通過選取k個(gè)近鄰點(diǎn)作為標(biāo)簽來評(píng)判節(jié)點(diǎn)異常。
3)OC-SVM[12]:通過核函數(shù)將數(shù)據(jù)映射到超平面上尋找異常。
4)LOF[11]:通過近鄰節(jié)點(diǎn)計(jì)算密度,基于密度判定異常點(diǎn),能夠計(jì)算出局部異常點(diǎn)。
5)fastABOD[19]:通過選取k個(gè)近鄰點(diǎn)構(gòu)造角度方差進(jìn)行異常打分。
6)AE[13]:根據(jù)重構(gòu)誤差來判定異常點(diǎn),如果誤差大則為異常,否則為正常。
7)VAE[14]:采用數(shù)據(jù)重構(gòu)概率來評(píng)判異常,具有高重建概率的數(shù)據(jù)點(diǎn)被歸類為異常。
8)DSVDD[15]:將OC-SVM 中核函數(shù)的映射替換為神經(jīng)網(wǎng)絡(luò)。
9)LUNAR[17]:提出基于距離的圖神經(jīng)網(wǎng)絡(luò)異常檢測(cè)框架。
在本文實(shí)驗(yàn)中,設(shè)置訓(xùn)練輪次為200,在GNN 網(wǎng)絡(luò)節(jié)點(diǎn)aggregation 過程中所使用的全連接網(wǎng)絡(luò)F由5 層大小為256 的全連接層組成,除了最后一層輸出層激活函數(shù)使用Sigmoid 外,其余層所使用的激活函數(shù)均為tanh。訓(xùn)練過程中使用均方誤差(MSE)作為損失函數(shù),利用Adam 進(jìn)行優(yōu)化,學(xué)習(xí)率為0.001,衰減控制設(shè)置為0.1。
表3 所示為本文方法與對(duì)比方法在6 個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果,所有數(shù)據(jù)均為5 次實(shí)驗(yàn)取平均的結(jié)果,最優(yōu)結(jié)果加粗標(biāo)注,涉及近鄰點(diǎn)的方法(KNN、fastABOD、LOF、A-GNN)的k均設(shè)置為10,評(píng)測(cè)指標(biāo)為ROC 曲線下面積(AUC)。
表3 在不同數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Table 3 Experimental results on different datasets %
從表3 可以看出:本文方法在5 個(gè)數(shù)據(jù)集上都有最優(yōu)表現(xiàn),在另外的1 個(gè)數(shù)據(jù)集(SATELLITE)上精度表現(xiàn)次優(yōu),且非常接近最優(yōu)方法LUNAR,在數(shù)據(jù)集SPEECH 上,本文方法的AUC 提升最為明顯;與同樣基于角度進(jìn)行異常檢測(cè)的方法fastABOD 對(duì)比,本文方法在所有6 個(gè)數(shù)據(jù)集中均表現(xiàn)更優(yōu),這一結(jié)果說明本文通過構(gòu)建GNN 進(jìn)行異常分?jǐn)?shù)計(jì)算,能有效利用節(jié)點(diǎn)間的信息交互提升節(jié)點(diǎn)異常判定精度;與基于GNN 進(jìn)行異常檢測(cè)的方法LUNAR 相比,本文方法在5 個(gè)數(shù)據(jù)集上表現(xiàn)更優(yōu),最大AUC 提升達(dá)38.72 個(gè)百分點(diǎn)(數(shù)據(jù)集SPEECH),這說明了在GNN中引入基于角度的異常因子計(jì)算方法能有效提高異常檢測(cè)精度。從上述實(shí)驗(yàn)結(jié)果可以看出,本文方法具有良好的異常檢測(cè)精度,適用于各類維度的數(shù)據(jù)集,具有較好的通用性。
從表3 的實(shí)驗(yàn)結(jié)果還可以看出,在一些高維數(shù)據(jù)集(如SPEECH)上,本文方法相對(duì)其他方法有顯著的精度提高,而在其他一些高維數(shù)據(jù)集(如SATELLITE)中精度提高則不明顯。為了進(jìn)一步探究本文方法產(chǎn)生優(yōu)勢(shì)的內(nèi)在因素,使用主成分分析(PCA)方法對(duì)數(shù)據(jù)集進(jìn)行變換,結(jié)合數(shù)據(jù)特點(diǎn)進(jìn)行結(jié)果分析。先給出非形式化的“偽高維數(shù)據(jù)”定義,所謂的“偽高維數(shù)據(jù)”是指原始數(shù)據(jù)具有很高的維度,但數(shù)據(jù)各維度之間相關(guān)性較大,數(shù)據(jù)本身所隱含的信息并不需要很高的維度便可以表達(dá)。與之對(duì)應(yīng)的是“真高維數(shù)據(jù)”,“真高維數(shù)據(jù)”是指數(shù)據(jù)具有很高的維度,同時(shí)其各維度之間相關(guān)性較小,降維操作很難在保留數(shù)據(jù)隱含信息的同時(shí)大幅降低數(shù)據(jù)維度。
對(duì)實(shí)驗(yàn)所用的6 個(gè)數(shù)據(jù)集進(jìn)行PCA 變換,把變換后的維度按特征方差進(jìn)行降序排列,并計(jì)算累積成分信息含量,結(jié)果如圖4 所示。從圖4 可以看出:SPEECH、IONOSPHERE、GLASS 等3 個(gè)數(shù)據(jù)集的曲線更加平緩,表明數(shù)據(jù)經(jīng)PCA 變換后各個(gè)維度的重要性較為均衡,其信息能夠均衡地分布到各個(gè)維度上;而其他幾個(gè)數(shù)據(jù)集(SATELLITE、SATIMAGE-2和WINE)的信息大都集中于少數(shù)的重要維度中,如WINE 的一個(gè)維度中就包含了占總體85.8%的信息含量。
圖4 6 個(gè)數(shù)據(jù)集的PCA 結(jié)果累積信息量與維度關(guān)系Fig.4 The cumulative information and dimensional relationship of PCA results of six datasets
表4列出了在信息含量占比為85%左右時(shí)對(duì)應(yīng)的最大主成分個(gè)數(shù)以及維數(shù)占比(**表示本文方法表現(xiàn)格外優(yōu)秀的數(shù)據(jù)集),如SPEECH、IONOSPHERE、GLASS 在信息含量占比接近85%時(shí)其所需主成分個(gè)數(shù)分別為256、14、3,分別占總維度數(shù)的64.00%、42.42%、33.33%,而在其他幾個(gè)數(shù)據(jù)集中信息含量大于85%時(shí)其主成分維數(shù)均只占總維度數(shù)的10%以內(nèi),如SATELLITE 數(shù)據(jù)維度為36,但實(shí)際只需PCA變換后的2 個(gè)主成分(5.56%)便占其總信息含量的85.2%。從以上 分析可 以看出,SATELLITE、SATIMAGE-2 和WINE 可以看作“偽高維數(shù)據(jù)”,而SPEECH 則是“真高維數(shù)據(jù)”。結(jié)合表3 的異常檢測(cè)精度可以發(fā)現(xiàn),基于角度的方法在“真高維數(shù)據(jù)集”上具有更好的表現(xiàn),如fastABOD 和本文方法在SPEECH 數(shù)據(jù)集上異常檢測(cè)效果較好。本文方法不論在“真高維數(shù)據(jù)”還是“偽高維數(shù)據(jù)”的數(shù)據(jù)集上都表現(xiàn)突出,具有更好的適應(yīng)性。
表4 PCA 降維至85%時(shí)信息保留量和維數(shù)的關(guān)系Table 4 Relationship between information retention and dimensionality when PCA dimensionality is reduced to 85%
為了進(jìn)一步考察A-GNN 中參數(shù)k的設(shè)置對(duì)本文方法異常檢測(cè)精度的影響,對(duì)k設(shè)置不同的值并進(jìn)行實(shí)驗(yàn),同時(shí)對(duì)比3 種需要考慮近鄰元素個(gè)數(shù)的方法(KNN、fastABOD 和LOF),實(shí)驗(yàn)結(jié)果如表5~表10所示。
表5 在SPEECH 數(shù)據(jù)集上參數(shù)k 的取值對(duì)方法AUC 的影響Table 5 Impact of parameter k values on methods AUC on the SPEECH dataset
表6 在IONOSPHERE 數(shù)據(jù)集上參數(shù)k 的取值對(duì)方法AUC 的影響Table 6 Impact of parameter k values on methods AUC on the IONOSPHERE dataset
表9 在WINE 數(shù)據(jù)集上參數(shù)k 的取值對(duì)方法AUC 的影響Table 9 Impact of parameter k values on methods AUC on the WINE dataset
表10 在GLASS 數(shù)據(jù)集上參數(shù)k 的取值對(duì)方法AUC 的影響Table 10 Impact of parameter k values on methods AUC on the GLASS dataset
上述表格展示了本文方法A-GNN 和KNN、fastABOD、LOF 的檢測(cè)精度對(duì)比結(jié)果,實(shí)驗(yàn)中分別設(shè)置k=5、10、20、50、80,以觀察不同近鄰點(diǎn)個(gè)數(shù)下的算法精度,其中還列出了各種k值情況下的平均精度進(jìn)行對(duì)比。從異常檢測(cè)平均表現(xiàn)上看,本文方法的AUC 平均值在6 個(gè)數(shù)據(jù)集上均明顯優(yōu)于其他方法。在具體數(shù)據(jù)方面,除了KNN 方法在數(shù)據(jù)集SATIMAGE-2中k取值為50、80 這2 種情況下的AUC 略高于本文方法外,其他所有數(shù)據(jù)集在各種k值設(shè)置下本文方法都表現(xiàn)最優(yōu)。
近鄰算法的精度在很大程度上受到近鄰點(diǎn)k的取值的影響,一個(gè)合適的k取值往往能在很大程度上影響算法精度。從上述結(jié)果可以看出,本文方法在不同k取值情況下都能得到最好的AUC,且波動(dòng)較小。如在表6 的數(shù)據(jù)集IONOSPHERE 中,當(dāng)k從5 增加到80 時(shí),KNN、fastABOD、LOF 的AUC 最大變化分別為8.77%、4.80%、9.11%,而A-GNN 方法的AUC最大變化為2.00%。
結(jié)合圖神經(jīng)網(wǎng)絡(luò)的特點(diǎn)分析,本文方法利用多次迭代訓(xùn)練和圖神經(jīng)網(wǎng)絡(luò)的信息傳遞機(jī)制學(xué)習(xí)各個(gè)節(jié)點(diǎn)之間的潛在聯(lián)系,讓算法能夠有效學(xué)習(xí)所有k個(gè)鄰居的信息,而其他的近鄰算法的近鄰關(guān)系是算法一開始就預(yù)先設(shè)置好的,沒有辦法對(duì)其進(jìn)行有效利用,因此受k值的影響較大。上述實(shí)驗(yàn)結(jié)果也驗(yàn)證了本文方法受k值影響較小,具有更好的魯棒性。
為了驗(yàn)證方法的運(yùn)行效率,將本文方法在k=5和k=10 兩種情況下的運(yùn)行時(shí)間與9 種異常檢測(cè)方法進(jìn)行對(duì)比,結(jié)果如表11 所示。從表11 可以看出:IFOREST、KNN、OC-SVM、LOF 等傳統(tǒng)異常檢測(cè)方法運(yùn)算量較小,具有較高的效率;與基于角度的異常檢測(cè)方法fastABOD 相比,在設(shè)置相同的k=10 時(shí),本文方法需要更多的計(jì)算時(shí)間,當(dāng)設(shè)置k=5 時(shí),本文方法與fastABOD 效率接近,但是,由于利用了GNN 節(jié)點(diǎn)之間的信息傳播能力,因此A-GNN 的檢索精度無論是在k=10 還是k=5 情況下都比fastABOD 在近鄰點(diǎn)k=10 時(shí)更高(如表5~表9 所示);與深度學(xué)習(xí)異常檢測(cè)方法AE、VAE、DSVDD 相比,本文方法的運(yùn)行速度更快,AE、VAE 這類基于重構(gòu)的深度學(xué)習(xí)方法需要更長(zhǎng)的訓(xùn)練時(shí)間,而DSVDD 則需要不斷優(yōu)化映射函數(shù)以找到最優(yōu)參數(shù),本文方法使用的圖神經(jīng)網(wǎng)絡(luò)并不復(fù)雜,訓(xùn)練過程更加快速;與LUNAR 相比,由于本文方法使用角度作為評(píng)測(cè)指標(biāo),每一個(gè)節(jié)點(diǎn)都需要與k個(gè)近鄰 節(jié)點(diǎn)構(gòu)造k(k-1)/2 個(gè)角度,而LUNAR 使用的是距離,其每一個(gè)節(jié)點(diǎn)只需要與k個(gè)節(jié)點(diǎn)計(jì)算k個(gè)距離便可,因此,本文方法需要更多的運(yùn)算時(shí)間。
表11 方法運(yùn)行時(shí)間對(duì)比Table 11 Comparison of running time of methods 單位:s
現(xiàn)有異常檢測(cè)方法多采用以歐氏距離為基礎(chǔ)的異常評(píng)價(jià)指標(biāo),但在高維空間中,“維度災(zāi)難”問題會(huì)模糊數(shù)據(jù)之間的距離,從而使得這類異常評(píng)價(jià)指標(biāo)失效。本文提出一種基于角度的圖神經(jīng)網(wǎng)絡(luò)異常檢測(cè)方法,該方法采用以角度為基礎(chǔ)的方式初始化節(jié)點(diǎn)異常因子,利用訓(xùn)練數(shù)據(jù)構(gòu)建圖神經(jīng)網(wǎng)絡(luò),并通過圖神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)信息交互讓近鄰節(jié)點(diǎn)之間互相學(xué)習(xí)以實(shí)現(xiàn)異常評(píng)判。此外,為了解決圖神經(jīng)網(wǎng)絡(luò)訓(xùn)練中正常數(shù)據(jù)和異常數(shù)據(jù)不均衡的問題,本文通過對(duì)數(shù)據(jù)空間的均勻采樣和數(shù)據(jù)擾動(dòng)來有效增加異常數(shù)據(jù),使得訓(xùn)練數(shù)據(jù)中正負(fù)樣本比例接近1∶1,從而提高模型訓(xùn)練效果。在6 個(gè)自然數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),結(jié)果表明:與9 種對(duì)比方法相比,該方法能夠大幅提升各種維度空間上的異常數(shù)據(jù)檢測(cè)精度,特別是在一些“真高維數(shù)據(jù)”上異常檢測(cè)的AUC 提升達(dá)40%以上,說明在高維空間中利用k近鄰節(jié)點(diǎn)角度方差作為異常評(píng)估指標(biāo)的有效性;本文方法利用GNN 節(jié)點(diǎn)間的信息交互能降低k值對(duì)檢測(cè)結(jié)果的影響,使方法具有更強(qiáng)的魯棒性。下一步將改進(jìn)基于角度的評(píng)價(jià)方法以減少運(yùn)算量,提高運(yùn)行效率,此外,將本文方法應(yīng)用于高維流數(shù)據(jù)的異常檢測(cè)任務(wù)也是今后的研究方向之一。