李酉戌
摘要:對(duì)于網(wǎng)絡(luò)運(yùn)行過程中產(chǎn)生的海量日志信息,傳統(tǒng)故障診斷方法很難進(jìn)行實(shí)時(shí)而全面的日志分析。針對(duì)該問題,提出一種基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的網(wǎng)絡(luò)故障診斷模型,利用Skip-gram模型進(jìn)行詞向量訓(xùn)練,并將詞向量作為卷積神經(jīng)網(wǎng)絡(luò)輸入,最終通過Softmax回歸進(jìn)行分類。實(shí)驗(yàn)結(jié)果表明,該模型可以有效處理網(wǎng)絡(luò)故障診斷任務(wù),且優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)方法,對(duì)于網(wǎng)絡(luò)運(yùn)行日志的故障診斷準(zhǔn)確率可達(dá)73.2%以上。
關(guān)鍵詞:日志信息;故障診斷;卷積神經(jīng)網(wǎng)絡(luò);詞向量
DOIDOI:10.11907/rjdk.172278
中圖分類號(hào):TP301
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)012-0040-04
Abstract:In order to solve the problem, this paper presents a network fault diagnosis model based on Convolutional Neural Network (CNN), which is difficult to carry out real-time and comprehensive log analysis for the mass log information generated by the network running process. Diagnostic model, the skip-gram model for word vector training, and the word vector as a neural network input, and ultimately through the Softmax regression classification. The experimental results show that the model can effectively deal with the task of network fault diagnosis and is superior to the traditional machine learning method. The fault diagnosis accuracy of the network running log can reach more than 73.2%.
Key Words:log information; fault diagnosis; convolution neural network; word embedding
0 引言
隨著網(wǎng)絡(luò)信息化的快速發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)結(jié)構(gòu)越來越復(fù)雜,應(yīng)用領(lǐng)域也日益廣泛,人們對(duì)于網(wǎng)絡(luò)的依賴性越來越高,因此網(wǎng)絡(luò)的安全性和可靠性變得尤為重要。日志作為獲取現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)運(yùn)行狀況和診斷系統(tǒng)故障的主要方式,利用網(wǎng)絡(luò)運(yùn)行過程中產(chǎn)生的日志信息進(jìn)行故障診斷,已成為網(wǎng)絡(luò)故障診斷研究熱點(diǎn)。由于故障類型與故障特征之間存在某種非線性映射關(guān)系,但是故障信息具有不確定性,且隨著網(wǎng)絡(luò)架構(gòu)規(guī)模的增大,運(yùn)行過程中會(huì)產(chǎn)生大量的日志信息,進(jìn)行故障特征提取很具有挑戰(zhàn)性,從而加大了故障診斷難度。因此,如何從海量日志信息中提取故障相關(guān)信息,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行實(shí)時(shí)而全面的故障診斷至關(guān)重要。
目前,基于日志信息進(jìn)行故障診斷的方法有很多,基于規(guī)則的故障診斷方法[1]利用規(guī)則分析系統(tǒng),對(duì)網(wǎng)絡(luò)中產(chǎn)生的故障相關(guān)信息與規(guī)則庫(kù)中的規(guī)則進(jìn)行比較,從而實(shí)現(xiàn)故障診斷。但是當(dāng)規(guī)則達(dá)到一定數(shù)量時(shí),規(guī)則庫(kù)就很難維護(hù),且規(guī)則的獲取依賴于專業(yè)的系統(tǒng)管理員,較為繁瑣;基于模型的分析方法[2]是一種基于知識(shí)的推理模型,依賴于系統(tǒng)結(jié)構(gòu)和功能模型,因此必須熟悉計(jì)算機(jī)網(wǎng)絡(luò)中各設(shè)備之間的關(guān)系,但計(jì)算機(jī)網(wǎng)絡(luò)日益復(fù)雜,建立精確的模型尤為困難;利用樸素貝葉斯模型[3-4]進(jìn)行日志分析,通過計(jì)算相關(guān)條件概率,清晰地描述變量之間的相互影響程度,該方法可以有效地處理帶有噪聲的數(shù)據(jù),克服故障信息的不確定性,但從實(shí)際環(huán)境中很難獲得先驗(yàn)知識(shí)。近年來,隨著數(shù)據(jù)挖掘和神經(jīng)網(wǎng)絡(luò)的發(fā)展,基于文本挖掘方法進(jìn)行日志系統(tǒng)管理較為多見。高學(xué)玲[5]利用神經(jīng)網(wǎng)絡(luò)對(duì)日志信息進(jìn)行研究,主要針對(duì)日志文本的不確定性和噪聲干擾;王新苗等[6]基于多層神經(jīng)網(wǎng)絡(luò)進(jìn)行故障類型識(shí)別研究,這些方法具有很好的學(xué)習(xí)能力,可以有效處理不完全故障數(shù)據(jù),但其訓(xùn)練需要大量的數(shù)據(jù)集,且缺少真實(shí)網(wǎng)絡(luò)環(huán)境下的評(píng)估數(shù)據(jù)集。
本文提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)故障診斷模型,收集并整理通信網(wǎng)絡(luò)運(yùn)行過程中生成的日志,作為網(wǎng)絡(luò)故障診斷研究的訓(xùn)練與測(cè)試樣本集,對(duì)其進(jìn)行預(yù)處理和特征提取,再通過卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練得到故障診斷模型,從而實(shí)現(xiàn)網(wǎng)絡(luò)故障診斷。
1 相關(guān)介紹
1.1 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)通過模擬生物自然視覺認(rèn)知機(jī)制進(jìn)行數(shù)據(jù)分析,是一種常見的深度學(xué)習(xí)架構(gòu),目前在眾多科學(xué)領(lǐng)域取得了成功應(yīng)用,特別是在圖像處理領(lǐng)域,LeCun等[7]利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行手寫體數(shù)字識(shí)別,取得了很好效果。傳統(tǒng)的圖像處理方法需要經(jīng)過復(fù)雜的前期預(yù)處理,卷積神經(jīng)網(wǎng)絡(luò)則可以直接輸入原始圖像,因此得到了更為廣泛的應(yīng)用。近年來,人們開始利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行自然語(yǔ)言處理,并取得了顯著成果。Collobert等[8]利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行自然語(yǔ)言處理;Shen[9]基于卷積神經(jīng)網(wǎng)絡(luò)處理語(yǔ)義分析問題;Kalchbrenner等[10]利用卷積神經(jīng)網(wǎng)絡(luò)對(duì)句子進(jìn)行建模。本文使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)日志信息進(jìn)行挖掘。
卷積神經(jīng)網(wǎng)絡(luò)主要包括輸入層、卷積層、池化層和全連接層,模型如圖 1所示。與傳統(tǒng)用于圖像處理的模型不同,用于日志處理的卷積神經(jīng)網(wǎng)絡(luò)模型的輸入層為詞向量,卷積層的輸入由前一層的局部區(qū)域與權(quán)重決定,每一層的輸出作為下一層神經(jīng)元的輸入,運(yùn)用多層卷積運(yùn)算,對(duì)每一層的卷積運(yùn)算結(jié)果進(jìn)行非線性變換。池化層對(duì)卷積層的輸出進(jìn)行二次抽樣,以減小輸出特征的總量并篩選出最具有代表性的特征。數(shù)學(xué)表達(dá)式如下:
1.2 文本詞向量描述
Log日志作為一種文本類型,為了更好地被計(jì)算機(jī)系統(tǒng)理解,需要先將文字和字符向量化。首先需要對(duì)文本進(jìn)行簡(jiǎn)單預(yù)處理,去除樣本中的空白行、句子首末多余的空格符、不必要的標(biāo)點(diǎn)符號(hào)和數(shù)字,然后掃描樣本中出現(xiàn)的所有單詞,形成詞典,在此基礎(chǔ)上對(duì)文本進(jìn)行向量描述。
基于one-hot模型[11]的稀疏表示作為經(jīng)典文本表示方法,可以快速生成詞向量,完成自然語(yǔ)言處理任務(wù),但該方法將詞匯作為離散的單一符號(hào),其編碼毫無規(guī)律,很難得到詞語(yǔ)之間的關(guān)聯(lián)信息,且維度過高,往往造成數(shù)據(jù)稀疏問題。因此,Paccanaro和Hinton[12]提出了基于詞向量的文本表示方法,將詞分布式地映射到低維空間,有效地解決了數(shù)據(jù)稀疏問題。
詞向量主要通過語(yǔ)言模型訓(xùn)練得到,Mikolov等[13]提出的Skip-gram模型以當(dāng)前詞的詞向量作為模型輸入,以周圍詞的詞向量作為輸出,即當(dāng)前詞預(yù)測(cè)周圍詞,可以對(duì)文本進(jìn)行高效訓(xùn)練。模型如圖 2所示。
2 基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)故障診斷模型
Log作為一種文本類型,其處理方法類似于自然語(yǔ)言文本,Log數(shù)據(jù)的每一條記錄都可以看作是一個(gè)句子,且故障記錄本身是一個(gè)前后關(guān)聯(lián)的邏輯序列。首先對(duì)帶有標(biāo)簽的數(shù)據(jù)進(jìn)行簡(jiǎn)單預(yù)處理,提取特征和構(gòu)造詞向量,然后搭建網(wǎng)絡(luò)模型、配置模型參數(shù)和進(jìn)行網(wǎng)絡(luò)訓(xùn)練,當(dāng)達(dá)到要求后保存網(wǎng)絡(luò)參數(shù)并輸出訓(xùn)練后的模型,當(dāng)有新的待診斷樣本數(shù)據(jù)到達(dá)時(shí),將數(shù)據(jù)輸入訓(xùn)練好的網(wǎng)絡(luò)故障診斷模型中,輸出診斷后的結(jié)果。
2.1 實(shí)驗(yàn)數(shù)據(jù)
實(shí)驗(yàn)數(shù)據(jù)為收集的LTE通信過程中產(chǎn)生的運(yùn)行記錄,包括正常運(yùn)行記錄和帶有故障標(biāo)簽的運(yùn)行記錄。根據(jù)所給的數(shù)據(jù)說明可知,故障標(biāo)簽在某個(gè)地方出現(xiàn)5次表示一次故障事件,因此對(duì)于帶有故障標(biāo)簽的運(yùn)行記錄,從整個(gè)Log日志中截取足夠長(zhǎng)的一段日志記錄,其中一定包含錯(cuò)誤信息。故本文以故障標(biāo)簽為關(guān)鍵字提取前后500行數(shù)據(jù)共1 000行數(shù)據(jù)分割整個(gè)Log記錄,作為訓(xùn)練中的故障樣本。對(duì)于正常的運(yùn)行記錄則隨機(jī)提取1 000行數(shù)據(jù)作為訓(xùn)練中的正常樣本。
2.2 數(shù)據(jù)預(yù)處理
在輸入到卷積神經(jīng)網(wǎng)絡(luò)之前,需要對(duì)原始的Log數(shù)據(jù)進(jìn)行預(yù)處理,提取特征構(gòu)建向量后才能進(jìn)行網(wǎng)絡(luò)模型訓(xùn)練。具體步驟如下:①進(jìn)行簡(jiǎn)單預(yù)處理。去除樣本中的空白行和句子首末多余的空格符,清除不必要的標(biāo)點(diǎn)符號(hào)和數(shù)字;②構(gòu)建詞典。首先對(duì)處理后的樣本進(jìn)行分詞,然后掃描樣本中出現(xiàn)的所有單詞,形成詞典;③詞向量轉(zhuǎn)換和特征提取。使用Word2vec方法將詞典中的每一個(gè)單詞轉(zhuǎn)換為向量形式,這相當(dāng)于一個(gè)特征提取過程。在實(shí)際模型訓(xùn)練過程中,Word Embedding層的訓(xùn)練與卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練一起進(jìn)行,不需要人工參與,是一個(gè)特征自提取過程。
2.3 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)模型是一種典型的前饋神經(jīng)網(wǎng)絡(luò),本文進(jìn)行網(wǎng)絡(luò)故障診斷的卷積神經(jīng)網(wǎng)絡(luò)模型主要包括4層,分別為輸入層、卷積層、池化層和全連接層。輸入層為經(jīng)過預(yù)處理后得到的詞向量;卷積層由多個(gè)卷積核構(gòu)成,經(jīng)過卷積運(yùn)算進(jìn)行局部特征圖的提取;池化層可以對(duì)每張局部特征圖進(jìn)行特征的二次提??;最后全連接層部分完成故障類別的映射,輸出最終診斷結(jié)果。
(1)輸入層。對(duì)于文本的處理需要先將文字或字符數(shù)學(xué)化,使得其能夠被計(jì)算機(jī)系統(tǒng)理解,故輸入層為經(jīng)過Skip-gram模型訓(xùn)練得到的詞向量。假設(shè)構(gòu)造的故障樣本中包含m個(gè)詞,ai∈Rk是該樣本中的第i個(gè)詞所對(duì)應(yīng)的詞向量,卷積神經(jīng)網(wǎng)絡(luò)的輸入層為由m個(gè)k維向量組合而成的m×k的二維數(shù)據(jù)矩陣。對(duì)于日志樣本長(zhǎng)度小于m的,需要對(duì)向量進(jìn)行補(bǔ)零處理。
(3)池化層。池化層主要對(duì)卷積層輸出的局部特征圖進(jìn)行最大池化(Max-pooling)操作,將卷積層抽取的若干個(gè)特征值僅選取最大的 (即最強(qiáng)特征)值作為池化層的特征值,即提取局部特征圖中對(duì)網(wǎng)絡(luò)故障診斷結(jié)果影響最大的因素。此外,這一步也起到參數(shù)約減效果,進(jìn)一步減少了最終分類時(shí)所依賴的參數(shù)數(shù)量,使得模型的適應(yīng)性更強(qiáng)。
(4)全連接層。在卷積層中得到300張?zhí)卣鲌D,在經(jīng)過池化層的最大池化操作后,最終提取出了對(duì)故障診斷影響最大的300個(gè)局部最優(yōu)特征,再通過全連接層映射到類別維度的大小,并通過Softmax歸一化得到每個(gè)類別的概率,從而能夠綜合考慮提取出的所有局部特征,完成網(wǎng)絡(luò)日志的故障診斷任務(wù)。
3 實(shí)驗(yàn)與性能指標(biāo)
實(shí)驗(yàn)平臺(tái)與工具如表1所示。網(wǎng)絡(luò)故障診斷模型訓(xùn)練采用Mini-batch梯度下降法,每次權(quán)值更新只需部分樣本參與,可以在保證訓(xùn)練效果的同時(shí)加快訓(xùn)練速度。為了防止出現(xiàn)過擬合問題,在實(shí)驗(yàn)中采用L2正則化約束網(wǎng)絡(luò)參數(shù),即在目標(biāo)函數(shù)后加入一個(gè)正則項(xiàng),以降低模型復(fù)雜度,并在全連接層引入Dropout策略[14],在迭代過程中隨機(jī)放棄一部分訓(xùn)練好的參數(shù)。
在構(gòu)造樣本集時(shí),以每個(gè)故障發(fā)生時(shí)間點(diǎn)前后一定數(shù)量的記錄作為故障樣本,非故障時(shí)間的記錄分割為若干正常樣本,正常樣本的記錄數(shù)與故障樣本相同。首先對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,提取特征和構(gòu)造詞向量,之后搭建網(wǎng)絡(luò)模型、配置模型參數(shù)并進(jìn)行網(wǎng)絡(luò)訓(xùn)練,達(dá)到要求后保存網(wǎng)絡(luò)參數(shù)并輸出訓(xùn)練后的模型。當(dāng)有新的待診斷樣本數(shù)據(jù)到達(dá)時(shí),將數(shù)據(jù)輸入訓(xùn)練好的網(wǎng)絡(luò)模型中,得到故障診斷結(jié)果為故障或正常。
3.1 故障診斷性能評(píng)估指標(biāo)
本文實(shí)驗(yàn)對(duì)于故障診斷模型進(jìn)行對(duì)比評(píng)估時(shí),主要以診斷正確率作為性能度量指標(biāo),將診斷正確的樣本占樣本總數(shù)的比例稱為“準(zhǔn)確率”,具體計(jì)算方式如下:
準(zhǔn)確率=1-測(cè)試集中診斷錯(cuò)誤的樣本測(cè)試集中樣本總數(shù)
3.2 實(shí)驗(yàn)結(jié)果分析
為了對(duì)本文提出的模型進(jìn)行更好的評(píng)價(jià),開展了4種模型實(shí)驗(yàn),分別為基于樸素貝葉斯、邏輯回歸、多層感知機(jī)和卷積神經(jīng)網(wǎng)絡(luò)的方法,訓(xùn)練樣本為700個(gè),測(cè)試樣本為300個(gè),通過不斷調(diào)整參數(shù)訓(xùn)練網(wǎng)絡(luò)模型,直至在測(cè)試集上得到實(shí)驗(yàn)結(jié)果較好的模型。實(shí)驗(yàn)結(jié)果如表2所示。
實(shí)驗(yàn)結(jié)果表明,在同樣訓(xùn)練集和測(cè)試集的情況下,采用基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)故障診斷方法能取得比傳統(tǒng)基于樸素貝葉斯、邏輯回歸和多層感知機(jī)方法更好的效果。與傳統(tǒng)網(wǎng)絡(luò)故障診斷方法相比,基于卷積神經(jīng)網(wǎng)絡(luò)的方法更簡(jiǎn)單,無需人為地提取文本中的特征,且網(wǎng)絡(luò)模型配置簡(jiǎn)單,同時(shí)減少了訓(xùn)練數(shù)據(jù)量和模型訓(xùn)練時(shí)間,降低了匹配計(jì)算的復(fù)雜度。在CPU和內(nèi)存配置相同情況下,卷積神經(jīng)網(wǎng)絡(luò)等深度學(xué)習(xí)模型還可以借助GPU加以訓(xùn)練,大大縮短了模型訓(xùn)練時(shí)間。
4 結(jié)語(yǔ)
本文以網(wǎng)絡(luò)運(yùn)行過程中產(chǎn)生的日志信息作為網(wǎng)絡(luò)故障診斷研究的評(píng)估和測(cè)試集,設(shè)計(jì)并實(shí)現(xiàn)了基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)故障診斷模型,針對(duì)故障標(biāo)簽數(shù)據(jù)的稀有性問題,卷積神經(jīng)網(wǎng)絡(luò)可以有效地實(shí)現(xiàn)網(wǎng)絡(luò)故障診斷這一任務(wù),準(zhǔn)確率達(dá)到73.2%,優(yōu)于傳統(tǒng)的樸素貝葉斯、邏輯回歸等模型,說明網(wǎng)絡(luò)故障診斷可以依賴于對(duì)網(wǎng)絡(luò)運(yùn)行日志的挖掘。
雖然基于卷積神經(jīng)網(wǎng)絡(luò)的模型可以較為準(zhǔn)確地診斷網(wǎng)絡(luò)故障,但是收集到的樣本存在不平衡問題,正常樣本遠(yuǎn)遠(yuǎn)多于故障樣本,且存在過擬合問題。在未來研究工作中,可從如下方面加以改進(jìn):針對(duì)過擬合問題,可以增加訓(xùn)練樣本、降低模型復(fù)雜度等;針對(duì)不平衡樣本集問題,可以通過重采樣等方法提高故障診斷正確率。
參考文獻(xiàn):
[1] XU W,HUANG L,F(xiàn)OX A,et al.Detecting large-scale system problems by mining console logs[C].ACM Sigops,Symposium on Operating Systems Principles.ACM,2009:117-132.
[2] VAARANDI R.A data clustering algorithm for mining patterns from event logs[C].Ip Operations & Management.IEEE,2003:119-126.
[3] HAN X,SHI Z,NIU W,et al.Similarity-based bayesian learning from semi-structured log files for fault diagnosis of web services[C].Ieee/wic/acm International Conference on Web Intelligence and Intelligent Agent Technology.IEEE,2010:589-596.
[4] VERRON SYLVAIN T T,ABDESSAMAD K.Fault detection with bayesian network[J].IN-TECH,2008.
[5] 高學(xué)玲.網(wǎng)絡(luò)健康評(píng)估與故障預(yù)測(cè)的研究與實(shí)現(xiàn)[D].西安:西北大學(xué),2013.
[6] 王新苗,晏蒲柳,黃天錫.基于改進(jìn)遺傳神經(jīng)網(wǎng)絡(luò)模型的通信網(wǎng)絡(luò)故障識(shí)別和告警相關(guān)性分析方法[J].電子與信息學(xué)報(bào),2000,22(5):811-816.
[7] LECUN Y,HAFFNER P,BENGIO Y.Gradient-based learning for object detection,segmentation and recognition[Z].CiteSeerX,1999.
[8] COLLOBERT R,WESTON J,KARLEN M,et al.Natural language processing (almost) from scratch[J].Journal of Machine Learning Research,2011,12(1):2493-2537.
[9] SHEN Y,HE X,GAO J,et al.Learning semantic representations using convolutional neural networks for web search[J].Proc Www,2014:373-374.
[10] KALCHBRENNER N,GREFENSTETTE E,BLUNSOM P.A convolutional neural network for modelling sentences[Z].Eprint Arxiv,2014.
[11] TURIAN J,RATINOV L,BENGIO Y.Word representations: a simple and general method for semi-supervised learning[C].Proceedings of the Meeting of the Association for Computational Linguistics,2010:384-394.
[12] PACCANARO A,HINTON G E.Learning distributed representations of concepts using linear relational embedding[J].IEEE Transactions on Knowledge & Data Engineering,2001,13(2):232-244.
[13] MIKOLOV T,SUTSKEVER I,CHEN K,et al.Distributed representations of words and phrases and their compositionality[J].Advances in Neural Information Processing Systems,2013,26:3111-3119.
[14] HINTON G E,SRIVASTAVA N,KRIZHEVSKY A,et al.Improving neural networks by preventing co-adaptation of feature detectors[J].Computer Science,2012,3(4):212-223.
(責(zé)任編輯:孫 娟)