吳春瓊 黃曉
1 引言
網(wǎng)絡(luò)安全是信息時(shí)代不可回避的重要課題,其中對(duì)入侵檢測(cè)的研究一直是重點(diǎn)。網(wǎng)絡(luò)安全狀況千變?nèi)f化,采用靜態(tài)防御無(wú)法跟上危機(jī)處理節(jié)奏,因此對(duì)入侵檢測(cè)的研究逐漸采用動(dòng)態(tài)防御技術(shù)。通常以動(dòng)態(tài)防御技術(shù)為主體,以靜態(tài)防御技術(shù)為補(bǔ)充,建立一個(gè)相對(duì)完整、可靠的防御系統(tǒng)[1]。
2 入侵檢測(cè)
一般的入侵檢測(cè)分類標(biāo)準(zhǔn)有[2]數(shù)據(jù)來(lái)源、反映機(jī)制、體系結(jié)構(gòu)、反映時(shí)間、檢測(cè)機(jī)制、檢測(cè)時(shí)效等。入侵分析的任務(wù)是在采集網(wǎng)絡(luò)系統(tǒng)不同節(jié)點(diǎn)的行為數(shù)據(jù)的基礎(chǔ)上,依賴各種入侵檢測(cè)和分析技術(shù)、方法,用來(lái)甄別網(wǎng)絡(luò)行為數(shù)據(jù)中潛在的入侵行為,達(dá)到防范與預(yù)處理的作用。入侵檢測(cè)分析技術(shù)有多種,如模式匹配的入侵檢測(cè)模型、基于神經(jīng)網(wǎng)絡(luò)的檢測(cè)技術(shù)等。無(wú)論是哪一種方法,都是在數(shù)據(jù)挖掘與人工智能技術(shù)的發(fā)展上演變出來(lái)的。
入侵檢測(cè)方法雖然很多,但是在各個(gè)方面都存在局限性。首先入侵檢測(cè)的專家系統(tǒng)的數(shù)據(jù)來(lái)源是已知的入侵行為,雖然因此能夠?qū)σ阎?、現(xiàn)有的入侵行為做出準(zhǔn)確、高效的判斷與保護(hù),但缺點(diǎn)也是顯而易見(jiàn)的。這些重復(fù)的、歷史的入侵行為數(shù)據(jù)很難應(yīng)對(duì)網(wǎng)絡(luò)上新出現(xiàn)的入侵手段或攻擊行為。只有在新的入侵行為表現(xiàn)出跡象并造成攻擊事實(shí)后,入侵檢測(cè)系統(tǒng)才會(huì)捕捉這一入侵?jǐn)?shù)據(jù),用以完善自己的入侵行為數(shù)據(jù)庫(kù)。在這個(gè)過(guò)程中入侵檢測(cè)系統(tǒng)是一個(gè)自適應(yīng)、自學(xué)習(xí)的過(guò)程,通過(guò)完善數(shù)據(jù)庫(kù)、優(yōu)化行為規(guī)則,來(lái)達(dá)到更高的檢測(cè)效率與更準(zhǔn)確的入侵檢測(cè)判斷。
3 BP神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)算法是最早的仿生模擬算法之一,自建立以來(lái)一直受到國(guó)內(nèi)外學(xué)者的青睞。神經(jīng)網(wǎng)絡(luò)算法從生物腦神經(jīng)信息傳遞模式得到靈感,把神經(jīng)元當(dāng)做一種可供信息數(shù)據(jù)傳遞的通道單位,用以獲取信息、傳遞信息,適用于行為檢測(cè),尤其是一場(chǎng)檢測(cè)方面。它具有學(xué)習(xí)能力,能夠?qū)W習(xí)檢測(cè)對(duì)象的一些行為特征、表現(xiàn)和該對(duì)象的一些信息資源,通過(guò)分析處理這些數(shù)據(jù)并利用神經(jīng)網(wǎng)絡(luò)通過(guò)計(jì)算方法[3]來(lái)實(shí)現(xiàn)這一功能,因此神經(jīng)網(wǎng)絡(luò)對(duì)提高入侵檢測(cè)系統(tǒng)的學(xué)習(xí)與對(duì)未知攻擊行為的識(shí)別能力有極大的幫助。
一個(gè)典型的人工神經(jīng)元是模擬生物神經(jīng)元來(lái)建立的,包括接受輸入信息、加權(quán)與相應(yīng)的神經(jīng)元輸出。
一個(gè)典型的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1人工神經(jīng)網(wǎng)絡(luò)所示。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)由隱層、輸出層和輸入層組成。算法利用誤差反向傳播的方式訓(xùn)練神經(jīng)網(wǎng)絡(luò),利用誤差的逆向傳播來(lái)調(diào)整網(wǎng)絡(luò)的權(quán)值。
3.1 網(wǎng)絡(luò)初始化
(1)設(shè)輸入層的神經(jīng)元有n個(gè),這同時(shí)也是由輸入層的神經(jīng)元傳導(dǎo)進(jìn)的條件變量。
(2)設(shè)隱藏層中神經(jīng)元有p個(gè),輸出層中神經(jīng)元有q個(gè)。
(3)設(shè)x為神經(jīng)元所需要的輸入向量,定義為x=(x1,x2,x3,...,xn )。
(4)設(shè)hi為隱含層的輸入向量,定義為hi =(hk1,hk2,hk3,...,hkp ),隱含層的輸出向量ho定義為ho =(ho1,ho2,ho3,...,hop )。
(5)設(shè)yi為輸出層的輸入向量,定義為yi =(yi1,yi2,yi3,...,yip ),輸出層的輸出向量yo定義為yo =(yo1,yo2,yo3,...,yoq )。
(6)設(shè)do為系統(tǒng)的輸出向量期望值,定義為do =(do1,do2,do3,...,doq )。
(7)設(shè)e為誤差函數(shù),定義為
e =■■(do(k)-yoo(k))2。 (公式1)
3.2 算法流程
(1)首先生成一個(gè)各層路徑連接權(quán)值的隨機(jī)值,取值范圍為(-1,1),e為誤差函數(shù),?著為計(jì)算精度,M為最大學(xué)習(xí)次數(shù)。
(2)隨機(jī)選擇一個(gè)輸入樣本k,該樣本對(duì)應(yīng)的期望輸出為:x(k)=(x1(k),x2(k),x3(k),…,xn(k)),do(k)=(d1(k),d2(k),d3(k),…,dq(k))。
(3)設(shè)wih為輸入層與隱含層之間的連接權(quán)值,who為隱含層與輸出層之間的連接權(quán)值,bh為隱含層中各個(gè)神經(jīng)元之間的閾值,bo為輸出層中各個(gè)神經(jīng)元之間的閾值。則對(duì)應(yīng)k=1,2,3,...,m個(gè)樣本數(shù)據(jù),其隱藏層中各神經(jīng)元的輸入、輸出計(jì)算分別為:
(公式2)
(4)其中誤差函數(shù)對(duì)輸出層各個(gè)神經(jīng)元的偏導(dǎo)數(shù)?啄o(k)計(jì)算過(guò)程為:
(公式3)
(5)根據(jù)?啄o(k)、who(k)、yoo(k)的結(jié)果分別計(jì)算誤差函數(shù)對(duì)隱含層各個(gè)神經(jīng)元的偏導(dǎo)數(shù)?啄h(k)的計(jì)算過(guò)程為:
(公式4)
(6)通過(guò)對(duì)比?啄o(k)、who(k)、hoh(k)計(jì)算出?駐who(k)=-?滋■=?滋?啄o(k)hoh(k)和w■■ =w■■+ ?濁?啄o(k)hoh(k)。路徑的連接權(quán)值?駐wih(k)根據(jù)?啄h(k)、hih(k)予以修正,以確保算法的效率,修正過(guò)程為:
(公式5)
(公式6)
全局誤差計(jì)算為: E =■■■(do(k)-yo(k))2
(公式7)
誤差值是否超過(guò)預(yù)期值,是確定神經(jīng)網(wǎng)絡(luò)是否終止當(dāng)前訓(xùn)練重新開(kāi)始學(xué)習(xí)的參數(shù)。
在實(shí)際應(yīng)用過(guò)程中,BP神經(jīng)網(wǎng)絡(luò)還是存在許多問(wèn)題。最典型的表現(xiàn)為收斂速度、局部最優(yōu)值、網(wǎng)絡(luò)延時(shí)、不穩(wěn)定、學(xué)習(xí)樣本對(duì)后期新樣本速度造成影響等問(wèn)題。
尤其是BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程使用了最速下降法,學(xué)習(xí)是從某一個(gè)神經(jīng)元節(jié)點(diǎn)開(kāi)始,按照誤差曲面的斜面逐步推進(jìn),直到滿足誤差精度值的要求。但是在誤差曲面的維度空間里,存在無(wú)數(shù)局部極小點(diǎn),由神經(jīng)元節(jié)點(diǎn)推進(jìn)的訓(xùn)練有可能因此陷入局部極小值,僅僅達(dá)到了局部最優(yōu)解,這使得整個(gè)網(wǎng)絡(luò)都不能達(dá)到全局優(yōu)化。
這需要有一種補(bǔ)充算法,來(lái)使陷入局部最優(yōu)解的訓(xùn)練脫離出來(lái),重新推向全局最優(yōu)解。猴群算法就是一種適合跳出局部最小點(diǎn)的仿生算法。
4 猴群算法
猴群算法是一種模擬猴群爬山的優(yōu)化算法,是一種多群體智能算法,尤其適用于大規(guī)模多峰優(yōu)化問(wèn)題。它不受優(yōu)化問(wèn)題的維數(shù)影響,也與優(yōu)化問(wèn)題的可行域大小無(wú)關(guān),具有運(yùn)行速度快、精度高的特點(diǎn)。
猴群算法主要包括解的表示、初始化、攀爬過(guò)程、眺望過(guò)程和翻過(guò)程五個(gè)過(guò)程。
(1)定義猴群表示。設(shè)M為猴群的種群規(guī)模。在種群中隨機(jī)選擇的一個(gè)猴子i(i=1,2,3,……,M),該猴子的位置即為xi =(xi1 ,xi2,xi3,...,xim)。xij 代表猴子i在j維的實(shí)際位置,這個(gè)位置同時(shí)也表示最優(yōu)化問(wèn)題的解的一個(gè)決策向量。
(2)當(dāng)初始化猴子位置的時(shí)候,基本猴群算法采用在求解空間內(nèi)隨機(jī)初始化。因?yàn)榉N群的初始化對(duì)算法的全局收斂和尋優(yōu)效率都有重要影響。假設(shè)存在一個(gè)區(qū)域可以事先確定其中有包含潛在的最優(yōu)解方案,在理想化的狀態(tài)下,這個(gè)區(qū)域被定義為n維立方體,從數(shù)據(jù)立方體中隨機(jī)采樣。設(shè)有第j維空間,則優(yōu)化方案在空間內(nèi)存在一個(gè)上界xmin,j和一個(gè)下界xmax,j 。產(chǎn)生一個(gè)在區(qū)間[0,1]上的隨機(jī)實(shí)數(shù),如果它是可使用的則被提供作為猴子i的初始點(diǎn),否則從n維立方體中重新采樣,則可以表示為:xi,j = xmin,j + (xmax,j -xmin,j)*rand。rand為隨機(jī)數(shù)產(chǎn)生方法。
(3)仿生算法一般是通過(guò)迭代計(jì)算來(lái)逼近最優(yōu)解的過(guò)程,猴群算法的攀爬過(guò)程也可以看做是迭代的最優(yōu)解逼近過(guò)程[4],在攀爬的過(guò)程中使猴子的位置從初始值逐步逼近能夠解決目標(biāo)函數(shù)的位置。假設(shè)信息在和目標(biāo)函數(shù)相關(guān)聯(lián)的梯度向量是可用的,如同時(shí)擾動(dòng)隨機(jī)逼近(SPSA)[5][6]這樣的算法,它基于對(duì)目標(biāo)函數(shù)的梯度值近似的原則,計(jì)算與比較只在當(dāng)前位置的相鄰兩點(diǎn)之間進(jìn)行,以此為移動(dòng)目標(biāo),通過(guò)比較二者權(quán)重逐步來(lái)移動(dòng),它不依賴于梯度信息或者測(cè)量信息。整個(gè)攀爬過(guò)程步驟為:
1)產(chǎn)生隨機(jī)向量?駐Xi = (?駐Xi1,?駐Xi2,?駐Xi3,...,?駐Xin),滿足:
?駐Xij =a, with probability ■-a, with probability ■ (公式8)
其中| a |為攀爬過(guò)程的步長(zhǎng),步長(zhǎng)值與待解問(wèn)題的解空間大小成正比。
2)計(jì)算f 'ij(xi)= ■,j=1,2,3…,n。向量f 'i(xi)=(f 'i1(xi),f 'i2(xi),...,f 'in(xi))被稱為目標(biāo)函數(shù)在點(diǎn)xi處的偽梯度。
3)令yi = xij + a*sign(f 'ij(xi)),j=1,2,3…,n,且Y=(y1,y2,y3,...,yn)。
4)當(dāng)Y在可解區(qū)域內(nèi),Xi =Y;反之Xi 的值不變。
重復(fù)以上4個(gè)步驟,直到達(dá)到迭代終止條件或迭代步長(zhǎng)值不再變化。
(4)當(dāng)猴群經(jīng)過(guò)若干次攀爬之后,設(shè)每只猴子都能達(dá)到當(dāng)前位置的最高峰,也就是達(dá)到了局部最優(yōu)值[4]。為了突破局部最優(yōu)值,每個(gè)猴子都眺望周?chē)?,尋找比?dāng)前位置更高的攀登點(diǎn)。如果更高位置的點(diǎn)存在,猴子從當(dāng)前點(diǎn)跳到新的高點(diǎn)上。眺望的目的是尋找當(dāng)前山峰之外的更高山峰,也就是尋找當(dāng)前問(wèn)題局部最優(yōu)解之外的其他全局最優(yōu)解的過(guò)程。眺望過(guò)程為:
1)在區(qū)間(xij-b,xij+b),j=1,2,3,...,n中隨機(jī)產(chǎn)生一個(gè)實(shí)數(shù)yj,且Y=(y1,y2,y3,...,yn),其中b為猴子能夠眺望的視野范圍。視野范圍的大小也和待解問(wèn)題的解空間大小成正比,當(dāng)優(yōu)化問(wèn)題的可行域大,則b的取值也大,反之則比較小。
2)如果Y是可用的,能滿足約束條件,且有f(Y)>f(Xi),則Xi =Y。否則回到1)直到產(chǎn)生滿足條件的Y。只替換函數(shù)值大于當(dāng)前f(xi)的xi。
3)將Y視為初始位置,重復(fù)攀爬過(guò)程。
(5)翻過(guò)程是猴群算法最具特色的部分,其目的是幫助猴子開(kāi)辟新的搜索空間,避免陷入局部最優(yōu)解。解空間內(nèi)的猴群都應(yīng)試圖進(jìn)行翻過(guò)程操作,令每一只猴子標(biāo)識(shí)當(dāng)前自身所在位置為中心,令每一只猴子以該中心為支點(diǎn),選定一個(gè)方向(或相反方向)翻到一個(gè)新的區(qū)域。
對(duì)于猴子i,翻過(guò)程步驟為:
1)設(shè)翻區(qū)間[c,d],其大小根據(jù)優(yōu)化空間的解空間大小相關(guān),優(yōu)化問(wèn)題可行域越大,[c,d]的區(qū)域也越大。在翻區(qū)間中產(chǎn)生一個(gè)隨機(jī)的實(shí)數(shù)a。
2)令yj =xij + a(pj -xij),且pj = ■■xij,j=1,2,…,n,即所有猴子的位置中點(diǎn)。翻支點(diǎn)P表示為P = (p1,p2,p3,...,pn)。當(dāng)a>0時(shí),代表猴子翻空的方向與支點(diǎn)的指向方向同向,反之則代表猴子翻空的方向?yàn)橹c(diǎn)指向方向的反方向。
3)如果Y=(y1,y2,y3,...,yn)是可用的,則Xi =Y,否則重復(fù)1)和2)直到產(chǎn)生可行的點(diǎn)Y。
猴群算法和遺傳算法有相似之處,都是優(yōu)化種群算法。重要的區(qū)別在于猴群攀爬的過(guò)程中采用SPSA方法代替普通的牛頓下山法,比遺傳算法更適用于大維數(shù)優(yōu)化問(wèn)題。
5 猴群優(yōu)化算法在BP神經(jīng)網(wǎng)絡(luò)中的應(yīng)用
BP算法的本質(zhì)是一種局部尋優(yōu)算法,尋優(yōu)存在明顯的局部極值問(wèn)題。而猴群算法在局部達(dá)到最優(yōu)值的時(shí)候,能采用眺望與翻空的方式跳離局部最優(yōu)值,所以適合作為BP算法的補(bǔ)充,主要幫助BP算法離開(kāi)局部極值的困境。
用猴群算法控制BP神經(jīng)網(wǎng)絡(luò)算法離開(kāi)局部極值,本質(zhì)是將神經(jīng)網(wǎng)絡(luò)的代價(jià)函數(shù)描述為猴群算法所要眺望和空翻的目標(biāo)函數(shù),其中,將BP神經(jīng)網(wǎng)絡(luò)中參數(shù)作為猴群算法中的猴子i,在d維空間隨機(jī)搜索最優(yōu)解。因?yàn)?代價(jià)函數(shù)存在最小值,神經(jīng)網(wǎng)絡(luò)局部最優(yōu)解問(wèn)題可以轉(zhuǎn)換成為求取函數(shù)最優(yōu)值(眺望與空翻)的問(wèn)題。一旦猴群空翻成功,神經(jīng)網(wǎng)絡(luò)的參數(shù)即進(jìn)入新的搜索空間,因此使BP神經(jīng)網(wǎng)絡(luò)脫離了局部極值,再次逼近全局最優(yōu)解。
本文對(duì)BP神經(jīng)網(wǎng)絡(luò)算法的局部搜索過(guò)程進(jìn)行改進(jìn),具體改進(jìn)過(guò)程:(1)初始化種群;(2)計(jì)算每個(gè)神經(jīng)元的適應(yīng)度值,然后進(jìn)行降序排列;(3)按照基本的BP神經(jīng)網(wǎng)絡(luò)算法的操作步驟將F個(gè)神經(jīng)元分別放在猴群的子群中;(4)執(zhí)行局部搜索。假設(shè)猴群攀爬的步長(zhǎng)為a或-a,其選中概率為0.5,則根據(jù)基本猴群算法生成隨機(jī)向量?駐Xi =(?駐Xi1,?駐Xi2,?駐Xi3,...,?駐Xin),計(jì)算在xi 位置的偽梯度,定義參數(shù)b為猴子能眺望的視野長(zhǎng)度,視野范圍為(xij -b,xij +b),在視野參數(shù)范圍內(nèi)搜索更優(yōu)位置,并更新猴群到更優(yōu)的位置;(5)更新全局最優(yōu)位置Xbest和個(gè)體最優(yōu)位置xibest 。
6 仿真實(shí)驗(yàn)分析
實(shí)驗(yàn)數(shù)據(jù)采用入侵檢測(cè)領(lǐng)域比較權(quán)威的測(cè)試數(shù)據(jù)[7][8]KDD99,采用的是MIT Lincoln Labs98數(shù)據(jù),其內(nèi)置5000000條數(shù)據(jù),入侵?jǐn)?shù)據(jù)有4大類,24小類。在訓(xùn)練過(guò)程中,系統(tǒng)利用訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),改進(jìn)后的猴群算法最大進(jìn)化代數(shù)為2000代,種群初始規(guī)模為1000,設(shè)置攀爬步長(zhǎng)a=0.00001,區(qū)間[c,d] = [-1,1]。完成訓(xùn)練后,選其中200個(gè)較好的規(guī)則作為最后的分類規(guī)則,以此作為檢測(cè)訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)。傳統(tǒng)BP網(wǎng)絡(luò)學(xué)習(xí)算法和猴群優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)算法的執(zhí)行時(shí)間對(duì)比如圖2執(zhí)行時(shí)間對(duì)比所示。
從實(shí)驗(yàn)結(jié)果可以看出,傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法的穩(wěn)定性不如改進(jìn)后的猴群優(yōu)化神經(jīng)網(wǎng)絡(luò)算法。改進(jìn)后的猴群優(yōu)化神經(jīng)網(wǎng)絡(luò)算法雖然也存在抖動(dòng)問(wèn)題,而且有較明顯的起伏,但是已經(jīng)改進(jìn)了許多,運(yùn)行時(shí)間優(yōu)于傳統(tǒng)BP算法。
7 結(jié)束語(yǔ)
實(shí)驗(yàn)表明,基于猴群優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)算法能夠有效地?cái)U(kuò)展神經(jīng)網(wǎng)絡(luò)的搜索空間,并彌補(bǔ)神經(jīng)網(wǎng)絡(luò)收斂速度和收斂精度上的短板,與其他算法相比,該算法能夠更好地跳出局部最優(yōu)解,并尋找全局最優(yōu)解。
參考文獻(xiàn)
[1] 郭春.基于數(shù)據(jù)挖掘的網(wǎng)絡(luò)入侵檢測(cè)關(guān)鍵技術(shù)研究[D].北京郵電大學(xué),2014.
[2] 劉伉伉.云計(jì)算環(huán)境下入侵檢測(cè)技術(shù)的研究[D].山東師范大學(xué),2015.
[3] 吳玉香,王聰.不確定機(jī)器人的自適應(yīng)神經(jīng)網(wǎng)絡(luò)控制與學(xué)習(xí)[J].控制理論與應(yīng)用,2013,v.3008:990-997.
[4] 張佳佳,張亞平,孫濟(jì)洲.基于猴群算法的入侵檢測(cè)技術(shù)[J].計(jì)算機(jī)工程,2011,v.37;No.38414:131-133.
[5] 齊艷玉,蘭燕飛.一類基于動(dòng)態(tài)優(yōu)化問(wèn)題的混沌猴群算法[J].武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2013,v.35;No.17502:164-167.
[6] 賈瑞民,何登旭,石紹堂.學(xué)習(xí)猴群爬過(guò)程的人工蜂群優(yōu)化算法[J]. 計(jì)算機(jī)工程與應(yīng)用,2012,v.48;No.76627:53-57.
[7] 張玲,白中英,羅守山,謝康,崔冠寧,孫茂華.基于粗糙集和人工免疫的集成入侵檢測(cè)模型[J].通信學(xué)報(bào),2013,v.34;No.30809:166-176.
[8] 毛健,趙紅東,姚婧婧.人工神經(jīng)網(wǎng)絡(luò)的發(fā)展及應(yīng)用[J].電子設(shè)計(jì)工程,2011,v.19;No.23024:62-65.
作者簡(jiǎn)介:
吳春瓊(1979-),女,漢族,福建永定人;畢業(yè)于福州大學(xué),碩士研究生;陽(yáng)光學(xué)院管理系,講師;主要研究方向和關(guān)注領(lǐng)域:數(shù)據(jù)挖掘、網(wǎng)絡(luò)安全。
黃曉(1989-),女,漢族,福建福州人;畢業(yè)于莫納什大學(xué)(Monash University),碩士研究生;陽(yáng)光學(xué)院管理系,助教;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)安全、網(wǎng)上社區(qū)。