在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>java源碼下載>

如何使用Keras框架來(lái)構(gòu)建LSTM RNN來(lái)對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行區(qū)分

大?。?/span>0.5 MB 人氣: 2017-09-27 需要積分:1

  向量機(jī)(SVM)、神經(jīng)網(wǎng)絡(luò)和無(wú)監(jiān)督模型。

  學(xué)術(shù)界和實(shí)際應(yīng)用領(lǐng)域目前正時(shí)刻關(guān)注著深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的最新進(jìn)展。事實(shí)證明,深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別和自然語(yǔ)言處理(NLP)方面表現(xiàn)出眾。我們是否可以利用神經(jīng)網(wǎng)絡(luò)的NLP能力來(lái)處理這個(gè)分類問(wèn)題呢?這就是我們想要測(cè)試的。

  我們通過(guò)模擬API給出JSON形式的訪問(wèn)請(qǐng)求日志,如下所示:

  { “ timestamp”: 1502135820943, “ method”: “get”, “ query”: { “query”: “Lawn & Garden Buying Guides”}, “ path”: “/search”, “ statusCode”: 200, “ source”: { “remoteAddress”:“22.73.58.187”, “userAgent”: “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”}, “route”: “/search”, “ headers”: { “host”: “l(fā)ocalhost:8002”, “connection”: “keep-alive”, “cache-control”: “no-cache”, “user-agent”: “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”, “accept”: “*/*”, “accept-encoding”: “gzip, deflate, br”, “accept-language”: “en-US,en;q=0.8,es;q=0.6”}, “ requestPayload”: null, “ responsePayload”: “SEARCH”}

  JSON格式的數(shù)據(jù)是不能用作神經(jīng)網(wǎng)絡(luò)模型的輸入的。模型的輸入必須是數(shù)字,因此,需要對(duì)文本進(jìn)行預(yù)處理。由于請(qǐng)求日志的內(nèi)容包含各種字符串、符號(hào)和數(shù)字,因此,我們選擇將每個(gè)日志條目預(yù)處理為字符序列。

  將日志條目作為字符序列進(jìn)行處理,就是將請(qǐng)求日志文本中的每個(gè)字符映射到字典中的數(shù)字。相關(guān)聯(lián)的數(shù)字表示該字符出現(xiàn)的頻率。這個(gè)字典最初是用訓(xùn)練數(shù)據(jù)來(lái)創(chuàng)建和擬合的,這樣,后續(xù)的字符就可以映射到以前曾經(jīng)出現(xiàn)過(guò)的字符上去。例如,在字典中,“,”字符是訓(xùn)練數(shù)據(jù)集中第七個(gè)出現(xiàn)頻率最高的字符:

  { “ ”: 39, “(”: 77, “,”: 7, “0”: 8, “4”: 26, “8”: 28, “《”: 64, “D”: 71, “H”: 59, “L”: 61, 。。.

  字符序列學(xué)習(xí)的一個(gè)不錯(cuò)的選擇是使用遞歸神經(jīng)網(wǎng)絡(luò)(RNN)。更具體點(diǎn)說(shuō),就是選擇使用RNNs的長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)變體,因?yàn)樗趯W(xué)習(xí)序列的應(yīng)用中被廣泛使用并取得了成功。 LSTM有點(diǎn)復(fù)雜,但這并不是這篇文章的重點(diǎn),不過(guò)如果在高層次上對(duì)此有一點(diǎn)了解的話,在修改模型時(shí)會(huì)有一些幫助。更多有關(guān)序列學(xué)習(xí)和LSTM的實(shí)踐可以在Andrej Karpathy編寫(xiě)的RNNs的不合理有效性一文中找到。

  為了快速開(kāi)發(fā)神經(jīng)網(wǎng)絡(luò)模型,我們選擇使用運(yùn)行在Tensorflow之上的高級(jí)Keras API,而不是直接使用Tensorflow。通過(guò)使用Keras為T(mén)ensorflow提供的樣板設(shè)置,我們能夠節(jié)約很多時(shí)間,并快速地構(gòu)建起模型原型。

  Keras的神經(jīng)網(wǎng)絡(luò)模型使用起來(lái)非常容易,只需實(shí)例化一個(gè)模型對(duì)象,然后就可以添加層了!初始的嵌入層指定了矢量輸入的預(yù)期維度,LSTM隱藏層則由64個(gè)神經(jīng)元以及單獨(dú)的壓差層來(lái)定義以減少方差,最后則是密集輸出層以產(chǎn)生分類置信度。

  model = Sequential() model.add(Embedding(num_words, 32, input_length=max_log_length)) # Prevent overfitting using dropout method of regularizationmodel.add(Dropout( 0.5)) model.add(LSTM( 64, recurrent_dropout= 0.5)) model.add(Dropout( 0.5)) # Condense to single binary output valuemodel.add(Dense( 1, activation= ‘sigmoid’)) model.compile(loss= ‘binary_crossentropy’, optimizer= ‘a(chǎn)dam’, metrics=[ ‘a(chǎn)ccuracy’]) # Training set automatically split 75/25 to check validation loss/accuracy at each epochmodel.fit(X_train, Y_train, validation_split= 0.25, epochs= 3, batch_size= 128, callbacks=[tb_callback]) # Evaluation of separate test dataset performed after trainingscore, acc = model.evaluate(X_test, Y_test, verbose= 1, batch_size= 128)訓(xùn)練

  使用LSTM RNN二元分類法則意味著是在模型上應(yīng)用監(jiān)督學(xué)習(xí)算法。因此,訓(xùn)練數(shù)據(jù)集中的每個(gè)日志條目都需要有一個(gè)附帶的標(biāo)簽來(lái)描述該記錄的請(qǐng)求是正常的還是嘗試注入攻擊的。

  0= Normal requestlogentry 1= Requestlogindicates attempted injection attack

  對(duì)于生成數(shù)據(jù)來(lái)訓(xùn)練模型,則可以使用模擬API來(lái)模擬一個(gè)非常簡(jiǎn)單的電子商務(wù)應(yīng)用程序。例如,模擬出/login、 /search、/checkout等URL。由于我們并沒(méi)有真實(shí)用戶去訪問(wèn)模擬API,因此我們需要引入一些運(yùn)行時(shí)選項(xiàng)來(lái)運(yùn)行服務(wù)器并自動(dòng)執(zhí)行請(qǐng)求。我們將這些自動(dòng)化的請(qǐng)求流量調(diào)整為每分鐘100次,這樣訓(xùn)練數(shù)據(jù)集的日志就能快速積累起來(lái)。

  通過(guò)將自定義的日志記錄器添加到服務(wù)器框架中,可以輸出指定格式的數(shù)據(jù)集。為了區(qū)分正常和惡意請(qǐng)求,需要在所有的惡意請(qǐng)求前添加一個(gè)“attack”頭。通過(guò)檢查是否存在“attack”頭來(lái)確定每個(gè)請(qǐng)求日志條目的標(biāo)簽。如果“attack”頭存在,則使用“1”來(lái)標(biāo)記日志,并在寫(xiě)入日志之前刪除“attack”頭,否則將日志標(biāo)記為“0”。

  由于使用模擬API來(lái)生成訓(xùn)練數(shù)據(jù)集存在一些限制,并且為了確保得到一個(gè)更廣義的分類器,我們?cè)陬A(yù)處理期間僅提取幾個(gè)必要的日志字段。這些屬性包括:“method”、“query”、“statusCode”、“path”、“requestPayload”??梢允褂妙~外的數(shù)據(jù)、預(yù)處理和可能的單獨(dú)分類器來(lái)分析請(qǐng)求的內(nèi)容。

  自動(dòng)化客戶會(huì)放那連續(xù)運(yùn)行了幾個(gè)小時(shí),以積累一定數(shù)量的訓(xùn)練數(shù)據(jù)。為了快速訓(xùn)練模型,我們將使用AWS p2.xlarge深度學(xué)習(xí)EC2實(shí)例。 AWS的深度學(xué)習(xí)AMI預(yù)先安裝了大多數(shù)的流行AI庫(kù)和API,你可以使用GPU進(jìn)行大量的訓(xùn)練。這個(gè)EC2實(shí)例每小時(shí)90美分的成本不僅節(jié)省了在大量數(shù)據(jù)集上訓(xùn)練模型的時(shí)間,還節(jié)省了安裝和配置Tensorflow使之能夠在GPU上正常運(yùn)行的時(shí)間。我們發(fā)現(xiàn)在新機(jī)器上安裝和配置Tensorflow相當(dāng)?shù)睾臅r(shí)。

  為了減少偏差,生成的數(shù)據(jù)集中包含了大約50/50個(gè)正常和惡意的請(qǐng)求日志。該數(shù)據(jù)集分為75%的訓(xùn)練子集和25%的驗(yàn)證子集。經(jīng)過(guò)幾次迭代之后,該模型能夠獲得相當(dāng)高的精度。

  如何使用Keras框架來(lái)構(gòu)建LSTM RNN來(lái)對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行區(qū)分

  從大約23000個(gè)請(qǐng)求日志樣本得到的訓(xùn)練結(jié)果

  上圖中的準(zhǔn)確度和損失指標(biāo)也會(huì)通過(guò)Keras訓(xùn)練腳本中附帶的Tensorboard回調(diào)記錄在日志中。這些日志是訓(xùn)練期間檢查點(diǎn)的積累,這對(duì)于在訓(xùn)練期間和之后將模型的性能可視化非常有用。

  實(shí)現(xiàn)

  有了訓(xùn)練過(guò)的模型,現(xiàn)在是時(shí)候來(lái)實(shí)現(xiàn)SecuritAI用戶界面程序了,該應(yīng)用程序用于托管模型以進(jìn)行實(shí)時(shí)的預(yù)測(cè)。與模擬API一樣,我們堅(jiān)持使用自己最熟悉的Java語(yǔ)言。我們構(gòu)建了一個(gè)React UI,作為監(jiān)視來(lái)自請(qǐng)求日志流活動(dòng)的儀表板。該請(qǐng)求日志流使用AWS Kinesis來(lái)管理,用于橋接模擬API和SecuritAI UI之間的通信。

  有一個(gè)小問(wèn)題…… Keras是一個(gè)python庫(kù),那么模型是如何在Java中進(jìn)行預(yù)測(cè)的呢?幸運(yùn)的是,有一個(gè)npm包可以用來(lái)實(shí)現(xiàn)這個(gè)需求,那就是keras-js! Keras-js允許Java應(yīng)用程序運(yùn)行在Tensorflow引擎上訓(xùn)練Keras模型。這個(gè)庫(kù)使得我們能夠在Node.js應(yīng)用服務(wù)器上運(yùn)行所有的東西。

  有關(guān)keras-js的更多信息,請(qǐng)參閱: https://github.com/transcranial/keras-js

  演示

  如何使用Keras框架來(lái)構(gòu)建LSTM RNN來(lái)對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行區(qū)分

  SecuritAI演示

  經(jīng)驗(yàn)教訓(xùn)與后期改進(jìn)

  總體而言,這是一個(gè)非常有趣的應(yīng)用程序,從開(kāi)發(fā)過(guò)程中你可以學(xué)到有關(guān)在Keras中使用Tensorflow建模的知識(shí)。也許已經(jīng)有其他更加簡(jiǎn)單的機(jī)器學(xué)習(xí)模型或平臺(tái)可以被用來(lái)代替LSTM RNN,但是如果沒(méi)有一點(diǎn)黑客精神的話,樂(lè)趣何在?在理想情況下,無(wú)監(jiān)控異常檢測(cè)模型可能更適合于本應(yīng)用。

  作為后期的改進(jìn),該模型可以轉(zhuǎn)換為僅依賴Tensorflow API來(lái)運(yùn)行、針對(duì)內(nèi)容更豐富的請(qǐng)求頭進(jìn)行訓(xùn)練,以及執(zhí)行多元分類以實(shí)現(xiàn)對(duì)可疑請(qǐng)求的分類。

  GitHub上的代碼:

  adamkusey/securitai-ui

  adamkusey/securitai-lstm-model

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 午夜视频在线网站| 国产在线成人一区二区| 一级特色黄色片| 欧美区在线播放| 校园春色亚洲欧美| 91国内在线| 三级在线看| 午夜看片网| 亚洲一区二区三区四区在线 | 色在线免费观看| 97人人做人人爱| 欧美极品| 久久国产福利| 国产精品免费久久久免费| 亚洲啊v| 国产精品不卡片视频免费观看| 久久99精品久久久久久秒播| 宅男午夜| 成人在线看片| 黑人干亚洲| 青草视频久久| 欧美尺寸又黑又粗又长| 在线啪| 高清欧美日本视频免费观看| 视频在线精品| 中文字幕导航| 啊用力太猛了啊好深视频免费| 黄频网| 欧美freesex交| 国产中文99视频在线观看| 亚洲成人高清在线| 一级片在线观看视频| 日本不卡视频一区二区| 狠狠色狠狠色综合日日32 | 视频网站在线| 全国男人天堂网| 久久黄色网| 色婷五月综激情亚洲综合| 天天爽夜夜爽| 亚洲国内精品| 午夜影院18|