99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀人工神經(jīng)網(wǎng)絡(luò)概念梳理與實(shí)例演示
人工神經(jīng)網(wǎng)絡(luò)概念梳理與實(shí)例演示
2018-08-17
收藏

人工神經(jīng)網(wǎng)絡(luò)概念梳理與實(shí)例演示

神經(jīng)網(wǎng)絡(luò)是一種模仿生物神經(jīng)元的機(jī)器學(xué)習(xí)模型,數(shù)據(jù)從輸入層進(jìn)入并流經(jīng)激活閾值的多個(gè)節(jié)點(diǎn)。

遞歸性神經(jīng)網(wǎng)絡(luò)一種能夠?qū)χ拜斎霐?shù)據(jù)進(jìn)行內(nèi)部存儲(chǔ)記憶的神經(jīng)網(wǎng)絡(luò),所以他們能夠?qū)W習(xí)到數(shù)據(jù)流中的時(shí)間依賴結(jié)構(gòu)。


如今機(jī)器學(xué)習(xí)已經(jīng)被應(yīng)用到很多的產(chǎn)品中去了,例如,siri、Google Now等智能助手,推薦引擎——亞馬遜網(wǎng)站用于推薦商品的推薦引擎,Google和Facebook使用的廣告排名系統(tǒng)。最近,深度學(xué)習(xí)的一些進(jìn)步將機(jī)器學(xué)習(xí)帶入公眾視野:AlphaGo 打敗圍棋大師李世石事件以及一些圖片識(shí)別和機(jī)器翻譯等新產(chǎn)品的出現(xiàn)。

在這部分中,我們將介紹一些強(qiáng)大并被普遍使用的機(jī)器學(xué)習(xí)技術(shù)。這當(dāng)然包括一些深度學(xué)習(xí)以及一些滿足現(xiàn)代業(yè)務(wù)需求傳統(tǒng)方法。讀完這一系列的文章之后,你就掌握了必要的知識(shí),便可以將具體的機(jī)器學(xué)習(xí)實(shí)驗(yàn)應(yīng)用到你所在的領(lǐng)域當(dāng)中。

隨著深層神經(jīng)網(wǎng)絡(luò)精度的提高,語(yǔ)音和圖像識(shí)別技術(shù)的應(yīng)用吸引了大眾的注意力,關(guān)于AI和深度學(xué)習(xí)的研究也變得更加普遍了。但是怎么能夠讓它進(jìn)一步擴(kuò)大影響力,更受歡迎仍然是一個(gè)問(wèn)題。這篇文章的主要內(nèi)容是:簡(jiǎn)述前饋神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)、怎樣搭建一個(gè)遞歸神經(jīng)網(wǎng)絡(luò)對(duì)時(shí)間系列數(shù)據(jù)進(jìn)行異常檢測(cè)。為了讓我們的討論更加具體化,我們將演示一下怎么用Deeplearning4j搭建神經(jīng)網(wǎng)絡(luò)。

一、什么是神經(jīng)網(wǎng)絡(luò)?

人工神經(jīng)網(wǎng)絡(luò)算法的最初構(gòu)思是模仿生物神經(jīng)元。但是這個(gè)類(lèi)比很不可靠。人工神經(jīng)網(wǎng)絡(luò)的每一個(gè)特征都是對(duì)生物神經(jīng)元的一種折射:每一個(gè)節(jié)點(diǎn)與激活閾值、觸發(fā)的連接。

連接人工神經(jīng)元系統(tǒng)建立起來(lái)之后,我們就能夠?qū)@些系統(tǒng)進(jìn)行訓(xùn)練,從而讓他們學(xué)習(xí)到數(shù)據(jù)中的一些模式,學(xué)到之后就能執(zhí)行回歸、分類(lèi)、聚類(lèi)、預(yù)測(cè)等功能。

人工神經(jīng)網(wǎng)絡(luò)可以看作是計(jì)算節(jié)點(diǎn)的集合。數(shù)據(jù)通過(guò)這些節(jié)點(diǎn)進(jìn)入神經(jīng)網(wǎng)絡(luò)的輸入層,再通過(guò)神經(jīng)網(wǎng)絡(luò)的隱藏層直到關(guān)于數(shù)據(jù)的一個(gè)結(jié)論或者結(jié)果出現(xiàn),這個(gè)過(guò)程才會(huì)停止。神經(jīng)網(wǎng)絡(luò)產(chǎn)出的結(jié)果會(huì)跟預(yù)期的結(jié)果進(jìn)行比較,神經(jīng)網(wǎng)絡(luò)得出的結(jié)果與正確結(jié)果的不同點(diǎn)會(huì)被用來(lái)更正神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)的激活閾值。隨著這個(gè)過(guò)程的不斷重復(fù),神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果就會(huì)無(wú)限靠近預(yù)期結(jié)果。

二、訓(xùn)練過(guò)程

在搭建一個(gè)神經(jīng)網(wǎng)絡(luò)系統(tǒng)之前,你必須先了解訓(xùn)練的過(guò)程以及網(wǎng)絡(luò)輸出結(jié)果是怎么產(chǎn)生的。然而我們并不想過(guò)度深入的了解這些方程式,下面是一個(gè)簡(jiǎn)短的介紹。

網(wǎng)絡(luò)的輸入節(jié)點(diǎn)收到一個(gè)數(shù)值數(shù)組(或許是叫做張量多維度數(shù)組)就代表輸入數(shù)據(jù)。例如, 圖像中的每個(gè)像素可以表示為一個(gè)標(biāo)量,然后將像素傳遞給一個(gè)節(jié)點(diǎn)。輸入數(shù)據(jù)將會(huì)與神經(jīng)網(wǎng)絡(luò)的參數(shù)相乘,這個(gè)輸入數(shù)據(jù)被擴(kuò)大還是減小取決于它的重要性,換句話說(shuō),取決于這個(gè)像素就不會(huì)影響神經(jīng)網(wǎng)絡(luò)關(guān)于整個(gè)輸入數(shù)據(jù)的結(jié)論。

起初這些參數(shù)都是隨機(jī)的,也就是說(shuō)神經(jīng)網(wǎng)絡(luò)在建立初期根本就不了解數(shù)據(jù)的結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)的激活函數(shù)決定了每個(gè)輸入節(jié)點(diǎn)的輸出結(jié)果。所以每個(gè)節(jié)點(diǎn)是否能夠被激活取決于它是否接受到足夠的刺激強(qiáng)度,即是否輸入數(shù)據(jù)和參數(shù)的結(jié)果超出了激活閾值的界限。

在所謂的密集或完全連接層中,每個(gè)節(jié)點(diǎn)的輸出值都會(huì)傳遞給后續(xù)層的節(jié)點(diǎn),在通過(guò)所有隱藏層后最終到達(dá)輸出層,也就是產(chǎn)生輸入結(jié)果的地方。在輸出層, 神經(jīng)網(wǎng)絡(luò)得到的最終結(jié)論將會(huì)跟預(yù)期結(jié)論進(jìn)行比較(例如,圖片中的這些像素代表一只貓還是狗?)。神經(jīng)網(wǎng)絡(luò)猜測(cè)的結(jié)果與正確結(jié)果的計(jì)算誤差都會(huì)被納入到一個(gè)測(cè)試集中,神經(jīng)網(wǎng)絡(luò)又會(huì)利用這些計(jì)算誤差來(lái)不斷更新參數(shù),以此來(lái)改變圖片中不同像素的重要程度。整個(gè)過(guò)程的目的就是降低輸出結(jié)果與預(yù)期結(jié)果的誤差,正確地標(biāo)注出這個(gè)圖像到底是不是一條狗。

深度學(xué)習(xí)是一個(gè)復(fù)雜的過(guò)程,由于大量的矩陣系數(shù)需要被修改所以它就涉及到矩陣代數(shù)、衍生品、概率和密集的硬件使用問(wèn)題,但是用戶不需要全部了解這些復(fù)雜性。

但是,你也應(yīng)該知道一些基本參數(shù),這將幫助你理解神經(jīng)網(wǎng)絡(luò)函數(shù)。這其中包括激活函數(shù)、優(yōu)化算法和目標(biāo)函數(shù)(也稱為損失、成本或誤差函數(shù))。

激活函數(shù)決定了信號(hào)是否以及在多大程度上應(yīng)該被發(fā)送到連接節(jié)點(diǎn)。階梯函數(shù)是最常用的激活函數(shù), 如果其輸入小于某個(gè)閾值就是0,如果其輸入大于閾值就是1。節(jié)點(diǎn)都會(huì)通過(guò)階梯激活函數(shù)向連接節(jié)點(diǎn)發(fā)送一個(gè)0或1。優(yōu)化算法決定了神經(jīng)網(wǎng)絡(luò)怎么樣學(xué)習(xí),以及測(cè)試完誤差后,權(quán)重怎么樣被更準(zhǔn)確地調(diào)整。最常見(jiàn)的優(yōu)化算法是隨機(jī)梯度下降法。最后, 成本函數(shù)常用來(lái)衡量誤差,通過(guò)對(duì)比一個(gè)給定訓(xùn)練樣本中得出的結(jié)果與預(yù)期結(jié)果的不同來(lái)評(píng)定神經(jīng)網(wǎng)絡(luò)的執(zhí)行效果。

Keras、Deeplearning4j 等開(kāi)源框架讓創(chuàng)建神經(jīng)網(wǎng)絡(luò)變得簡(jiǎn)單。創(chuàng)建神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)時(shí),需要考慮的是怎樣將你的數(shù)據(jù)類(lèi)型匹配到一個(gè)已知的被解決的問(wèn)題,并且根據(jù)你的實(shí)際需求來(lái)修改現(xiàn)有結(jié)構(gòu)。

三、神經(jīng)網(wǎng)絡(luò)的類(lèi)型以及應(yīng)用

神經(jīng)網(wǎng)絡(luò)已經(jīng)被了解和應(yīng)用了數(shù)十年了,但是最近的一些技術(shù)趨勢(shì)才使得深度神經(jīng)網(wǎng)絡(luò)變得更加高效。

GPUs使得矩陣操作速度更快;分布式計(jì)算結(jié)構(gòu)讓計(jì)算能力大大增強(qiáng);多個(gè)超參數(shù)的組合也讓迭代的速度提升。所有這些都讓訓(xùn)練的速度大大加快,迅速找到適合的結(jié)構(gòu)。

隨著更大數(shù)據(jù)集的產(chǎn)生,類(lèi)似于ImageNet 的大型高質(zhì)量的標(biāo)簽數(shù)據(jù)集應(yīng)運(yùn)而生。機(jī)器學(xué)習(xí)算法訓(xùn)練的數(shù)據(jù)越大,那么它的準(zhǔn)確性就會(huì)越高。

最后,隨著我們理解能力以及神經(jīng)網(wǎng)絡(luò)算法的不斷提升,神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確性在語(yǔ)音識(shí)別、機(jī)器翻譯以及一些機(jī)器感知和面向目標(biāo)的一些任務(wù)等方面不斷刷新記錄。

盡管神經(jīng)網(wǎng)絡(luò)架構(gòu)非常的大,但是主要用到的神經(jīng)網(wǎng)絡(luò)種類(lèi)也就是下面的幾種。

3.1前饋神經(jīng)網(wǎng)絡(luò)

前饋神經(jīng)網(wǎng)絡(luò)包括一個(gè)輸入層、一個(gè)輸出層以及一個(gè)或多個(gè)的隱藏層。前饋神經(jīng)網(wǎng)絡(luò)可以做出很好的通用逼近器,并且能夠被用來(lái)創(chuàng)建通用模型。

這種類(lèi)型的神經(jīng)網(wǎng)絡(luò)可用于分類(lèi)和回歸。例如,當(dāng)使用前饋網(wǎng)絡(luò)進(jìn)行分類(lèi)時(shí),輸出層神經(jīng)元的個(gè)數(shù)等于類(lèi)的數(shù)量。從概念上講, 激活了的輸出神經(jīng)元決定了神經(jīng)網(wǎng)絡(luò)所預(yù)測(cè)的類(lèi)。更準(zhǔn)確地說(shuō), 每個(gè)輸出神經(jīng)元返回一個(gè)記錄與分類(lèi)相匹配的概率數(shù),其中概率最高的分類(lèi)將被選為模型的輸出分類(lèi)。

前饋神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)是簡(jiǎn)單易用,與其他類(lèi)型的神經(jīng)網(wǎng)絡(luò)相比更簡(jiǎn)單,并且有一大堆的應(yīng)用實(shí)例。

3.2卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)和前饋神經(jīng)網(wǎng)絡(luò)是非常相似的,至少是數(shù)據(jù)的傳輸方式類(lèi)似。他們結(jié)構(gòu)大致上是模仿了視覺(jué)皮層。卷積神經(jīng)網(wǎng)絡(luò)通過(guò)許多的過(guò)濾器。這些過(guò)濾器主要集中在一個(gè)圖像子集、補(bǔ)丁、圖塊的特征識(shí)別上。每一個(gè)過(guò)濾器都在尋找不同模式的視覺(jué)數(shù)據(jù),例如,有的可能是找水平線,有的是找對(duì)角線,有的是找垂直的。這些線條都被看作是特征,當(dāng)過(guò)濾器經(jīng)過(guò)圖像時(shí),他們就會(huì)構(gòu)造出特征圖譜來(lái)定位各類(lèi)線是出現(xiàn)在圖像的哪些地方。圖像中的不同物體,像貓、747s、榨汁機(jī)等都會(huì)有不同的圖像特征,這些圖像特征就能使圖像完成分類(lèi)。卷積神經(jīng)網(wǎng)絡(luò)圖像識(shí)別和語(yǔ)音識(shí)別方面是非常的有效的。

卷積神經(jīng)網(wǎng)絡(luò)與前饋神經(jīng)網(wǎng)絡(luò)圖像識(shí)別方面的異同比較。雖然這兩種網(wǎng)絡(luò)類(lèi)型都能夠進(jìn)行圖像識(shí)別,但是方式卻不同。卷積神經(jīng)網(wǎng)絡(luò)是通過(guò)識(shí)別圖像的重疊部分,然后學(xué)習(xí)識(shí)別不同部分的特征進(jìn)行訓(xùn)練;然而,前饋神經(jīng)網(wǎng)絡(luò)是在整張圖片上進(jìn)行訓(xùn)練。前饋神經(jīng)網(wǎng)絡(luò)總是在圖片的某一特殊部分或者方向進(jìn)行訓(xùn)練,所以當(dāng)圖片的特征出現(xiàn)在其他地方時(shí)就不會(huì)被識(shí)別到,然而卷積神經(jīng)網(wǎng)絡(luò)卻能夠很好的避免這一點(diǎn)。

卷積神經(jīng)網(wǎng)絡(luò)主要是用于圖像、視頻、語(yǔ)音、聲音識(shí)別以及無(wú)人駕駛的任務(wù)。盡管這篇文章主要是討論遞歸神經(jīng)網(wǎng)絡(luò)的,但是卷積神經(jīng)網(wǎng)絡(luò)圖像識(shí)別方面也是非常有效的,所以很有必要了解。

3.3遞歸神經(jīng)網(wǎng)絡(luò)

與前饋神經(jīng)網(wǎng)絡(luò)不同的是,遞歸神經(jīng)網(wǎng)絡(luò)的隱藏層的節(jié)點(diǎn)里有內(nèi)部記憶存儲(chǔ)功能,隨著輸入數(shù)據(jù)的改變而內(nèi)部記憶內(nèi)容不斷被更新。遞歸神經(jīng)網(wǎng)絡(luò)的結(jié)論都是基于當(dāng)前的輸入和之前存儲(chǔ)的數(shù)據(jù)而得出的。遞歸神經(jīng)網(wǎng)絡(luò)能夠充分利用這種內(nèi)部記憶存儲(chǔ)狀態(tài)處理任意序列的數(shù)據(jù),例如時(shí)間序列。

遞歸神經(jīng)網(wǎng)絡(luò)經(jīng)常用于手寫(xiě)識(shí)別、語(yǔ)音識(shí)別、日志分析、欺詐檢測(cè)和網(wǎng)絡(luò)安全。

遞歸神經(jīng)網(wǎng)絡(luò)是處理時(shí)間維度數(shù)據(jù)集的最好方法,它可以處理以下數(shù)據(jù):網(wǎng)絡(luò)日志和服務(wù)器活動(dòng)、硬件或者是醫(yī)療設(shè)備的傳感器數(shù)據(jù)、金融交易、電話記錄。想要追蹤數(shù)據(jù)在不同階段的依賴和關(guān)聯(lián)關(guān)系需要你了解當(dāng)前和之前的一些數(shù)據(jù)狀態(tài)。盡管我們通過(guò)前饋神經(jīng)網(wǎng)絡(luò)也可以獲取事件,隨著時(shí)間的推移移動(dòng)到另外一個(gè)事件,這將使我們限制在對(duì)事件的依賴中,所以這種方式很不靈活。

追蹤在時(shí)間維度上有長(zhǎng)期依賴的數(shù)據(jù)的更好方法是用內(nèi)存來(lái)儲(chǔ)存重要事件,以使近期事件能夠被理解和分類(lèi)。遞歸神經(jīng)網(wǎng)絡(luò)最好的一點(diǎn)就是在它的隱藏層里面有“內(nèi)存”可以學(xué)習(xí)到時(shí)間依賴特征的重要性。

接下來(lái)我們將討論遞歸神經(jīng)網(wǎng)絡(luò)在字符生成器和網(wǎng)絡(luò)異常檢測(cè)中的應(yīng)用。遞歸神經(jīng)網(wǎng)絡(luò)可以檢測(cè)出不同時(shí)間段的依賴特征的能力使得它可以進(jìn)行時(shí)間序列數(shù)據(jù)的異常檢測(cè)。

遞歸神經(jīng)網(wǎng)絡(luò)的應(yīng)用

網(wǎng)絡(luò)上有很多使用RNNs生成文本的例子,遞歸神經(jīng)網(wǎng)絡(luò)經(jīng)過(guò)語(yǔ)料庫(kù)的訓(xùn)練之后,只要輸入一個(gè)字符,就可以預(yù)測(cè)下一個(gè)字符。下面讓我們通過(guò)一些實(shí)用例子發(fā)現(xiàn)更多RNNs的特征。

應(yīng)用一、RNNs用于字符生成

遞歸神經(jīng)網(wǎng)絡(luò)經(jīng)過(guò)訓(xùn)練之后可以把英文字符當(dāng)做成一系列的時(shí)間依賴事件。經(jīng)過(guò)訓(xùn)練后它會(huì)學(xué)習(xí)到一個(gè)字符經(jīng)常跟著另外一個(gè)字符(“e”經(jīng)常跟在“h”后面,像在“the、he、she”中)。由于它能預(yù)測(cè)下一個(gè)字符是什么,所以它能有效地減少文本的輸入錯(cuò)誤。

Java是個(gè)很有趣的例子,因?yàn)樗慕Y(jié)構(gòu)包括很多嵌套結(jié)構(gòu),有一個(gè)開(kāi)的圓括號(hào)必然后面就會(huì)有一個(gè)閉的,花括號(hào)也是同理。他們之間的依賴關(guān)系并不會(huì)在位置上表現(xiàn)的很明顯,因?yàn)槎鄠€(gè)事件之間的關(guān)系不是靠所在位置的距離確定的。但是就算是不明確告訴遞歸神經(jīng)網(wǎng)絡(luò)Java中各個(gè)事件的依賴關(guān)系,它也能自己學(xué)習(xí)了解到。

在異常檢測(cè)當(dāng)中,我們要求神經(jīng)網(wǎng)絡(luò)能夠檢測(cè)出數(shù)據(jù)中相似、隱藏的或許是并不明顯的模式。就像是一個(gè)字符生成器在充分地了解數(shù)據(jù)的結(jié)構(gòu)后就會(huì)生成一個(gè)數(shù)據(jù)的擬像,遞歸神經(jīng)網(wǎng)絡(luò)的異常檢測(cè)就是在其充分了解數(shù)據(jù)結(jié)構(gòu)后來(lái)判斷輸入的數(shù)據(jù)是不是正常。

字符生成的例子表明遞歸神經(jīng)網(wǎng)絡(luò)有在不同時(shí)間范圍內(nèi)學(xué)習(xí)到時(shí)間依賴關(guān)系的能力,它的這種能力還可以用來(lái)檢測(cè)網(wǎng)絡(luò)活動(dòng)日志的異常。

異常檢測(cè)能夠使文本中的語(yǔ)法錯(cuò)誤浮出水面,這是因?yàn)槲覀兯鶎?xiě)的東西是由語(yǔ)法結(jié)構(gòu)所決定的。同理,網(wǎng)絡(luò)行為也是有結(jié)構(gòu)的,它也有一個(gè)能夠被學(xué)習(xí)的可預(yù)測(cè)模式。經(jīng)過(guò)在正常網(wǎng)絡(luò)活動(dòng)中訓(xùn)練的遞歸神經(jīng)網(wǎng)絡(luò)可以監(jiān)測(cè)到入侵行為,因?yàn)檫@些入侵行為的出現(xiàn)就像是一個(gè)句子沒(méi)有標(biāo)點(diǎn)符號(hào)一樣異常。

應(yīng)用二、一個(gè)網(wǎng)絡(luò)異常檢測(cè)項(xiàng)目的示例

假設(shè)我們想要了解的網(wǎng)絡(luò)異常檢測(cè)就是能夠得到硬件故障、應(yīng)用程序失敗、以及入侵的一些信息。

模型將會(huì)向我們展示什么呢?

隨著大量的網(wǎng)絡(luò)活動(dòng)日志被輸入到遞歸神經(jīng)網(wǎng)絡(luò)中去,神經(jīng)網(wǎng)絡(luò)就能學(xué)習(xí)到正常的網(wǎng)絡(luò)活動(dòng)應(yīng)該是什么樣子的。當(dāng)這個(gè)被訓(xùn)練的網(wǎng)絡(luò)被輸入新的數(shù)據(jù)時(shí),它就能偶判斷出哪些是正常的活動(dòng),哪些是被期待的,哪些是異常的。

訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)識(shí)別預(yù)期行為是有好處的,因?yàn)楫惓?shù)據(jù)不多,或者是不能夠準(zhǔn)確的將異常行為進(jìn)行分類(lèi)。我們?cè)谡5臄?shù)據(jù)里進(jìn)行訓(xùn)練,它就能夠在未來(lái)的某個(gè)時(shí)間點(diǎn)提醒我們非正常活動(dòng)的出現(xiàn)。

說(shuō)句題外話,訓(xùn)練的神經(jīng)網(wǎng)絡(luò)并不一定非得識(shí)別到特定事情發(fā)生的特定時(shí)間點(diǎn)(例如,它不知道那個(gè)特殊的日子就是周日),但是它一定會(huì)發(fā)現(xiàn)一些值得我們注意的一些更明顯的時(shí)間模式和一些可能并不明顯的事件之間的聯(lián)系。

我們將概述一下怎么用 Deeplearning4j(一個(gè)在JVM上被廣泛應(yīng)用的深度學(xué)習(xí)開(kāi)源數(shù)據(jù)庫(kù))來(lái)解決這個(gè)問(wèn)題。Deeplearning4j在模型開(kāi)發(fā)過(guò)程中提供了很多有用的工具:DataVec是一款為ETL(提取-轉(zhuǎn)化-加載)任務(wù)準(zhǔn)備模型訓(xùn)練數(shù)據(jù)的集成工具。正如Sqoop為Hadoop加載數(shù)據(jù),DataVec將數(shù)據(jù)進(jìn)行清洗、預(yù)處理、規(guī)范化與標(biāo)準(zhǔn)化之后將數(shù)據(jù)加載到神經(jīng)網(wǎng)絡(luò)。這跟Trifacta’s Wrangler也相似,只不過(guò)它更關(guān)注二進(jìn)制數(shù)據(jù)。

開(kāi)始階段

第一階段包括典型的大數(shù)據(jù)任務(wù)和ETL:我們需要收集、移動(dòng)、儲(chǔ)存、準(zhǔn)備、規(guī)范化、矢量話日志。時(shí)間跨度的長(zhǎng)短是必須被規(guī)定好的。數(shù)據(jù)的轉(zhuǎn)化需要花費(fèi)一些功夫,這是由于JSON日志、文本日志、還有一些非連續(xù)標(biāo)注模式都必須被識(shí)別并且轉(zhuǎn)化為數(shù)值數(shù)組。DataVec能夠幫助進(jìn)行轉(zhuǎn)化和規(guī)范化數(shù)據(jù)。在開(kāi)發(fā)機(jī)器學(xué)習(xí)訓(xùn)練模型時(shí),數(shù)據(jù)需要分為訓(xùn)練集和測(cè)試集。

訓(xùn)練神經(jīng)網(wǎng)絡(luò)

神經(jīng)網(wǎng)絡(luò)的初始訓(xùn)練需要在訓(xùn)練數(shù)據(jù)集中進(jìn)行。

在第一次訓(xùn)練的時(shí)候,你需要調(diào)整一些超參數(shù)以使模型能夠?qū)崿F(xiàn)在數(shù)據(jù)中學(xué)習(xí)。這個(gè)過(guò)程需要控制在合理的時(shí)間內(nèi)。關(guān)于超參數(shù)我們將在之后進(jìn)行討論。在模型訓(xùn)練的過(guò)程中,你應(yīng)該以降低錯(cuò)誤為目標(biāo)。

但是這可能會(huì)出現(xiàn)神經(jīng)網(wǎng)絡(luò)模型過(guò)度擬合的風(fēng)險(xiǎn)。有過(guò)度擬合現(xiàn)象出現(xiàn)的模型往往會(huì)在訓(xùn)練集中的很高的分?jǐn)?shù),但是在遇到新的數(shù)據(jù)時(shí)就會(huì)得出錯(cuò)誤結(jié)論。用機(jī)器學(xué)習(xí)的語(yǔ)言來(lái)說(shuō)就是它不夠通用化。Deeplearning4J提供正則化的工具和“過(guò)早停止”來(lái)避免訓(xùn)練過(guò)程中的過(guò)度擬合。

神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是最花費(fèi)時(shí)間和耗費(fèi)硬件的一步。在GPUs上訓(xùn)練能夠有效的減少訓(xùn)練時(shí)間,尤其是做圖像識(shí)別的時(shí)候。但是額外的硬件設(shè)施就帶來(lái)多余的花銷(xiāo),所以你的深度學(xué)習(xí)的框架必須能夠有效的利用硬件設(shè)施。Azure和亞馬遜等云服務(wù)提供了基于GPU的實(shí)例,神經(jīng)網(wǎng)絡(luò)還可以在異構(gòu)集群上進(jìn)行訓(xùn)練。

創(chuàng)建模型

Deeplearning4J提供ModelSerializer來(lái)保存訓(xùn)練模型。訓(xùn)練模型可以被保存或者是在之后的訓(xùn)練中被使用或更新。

在執(zhí)行異常檢測(cè)的過(guò)程中,日志文件的格式需要與訓(xùn)練模型一致,基于神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果,你將會(huì)得到是否當(dāng)前的活動(dòng)符合正常網(wǎng)絡(luò)行為預(yù)期的結(jié)論。

代碼示例

遞歸神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)應(yīng)該是這樣子的:

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder(

.seed(123)

.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)

.weightInit(WeightInit.XAVIER)

.updater(Updater.NESTEROVS).momentum(0.9)

.learningRate(0.005)

.gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)

.gradientNormalizationThreshold(0.5)

.list()

.layer(0, new GravesLSTM.Builder().activation("tanh").nIn(1).nOut(10).build())

.layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT)

.activation("softmax").nIn(10).nOut(numLabelClasses).build())

.pretrain(false).backprop(true).build();

MultiLayerNetwork net = new MultiLayerNetwork(conf);

net.init();

下面解釋一下幾行重要的代碼:

.seed(123)

隨機(jī)設(shè)置一個(gè)種子值對(duì)神經(jīng)網(wǎng)絡(luò)的權(quán)值進(jìn)行初始化,以此獲得一個(gè)有復(fù)驗(yàn)性的結(jié)果。系數(shù)通常都是被隨機(jī)的初始化的,以使我們?cè)谡{(diào)整其他超參數(shù)時(shí)仍獲得一致的結(jié)果。我們需要設(shè)定一個(gè)種子值,讓我們?cè)谡{(diào)整和測(cè)試的時(shí)候能夠用這個(gè)隨機(jī)的權(quán)值。

.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)

決定使用哪個(gè)最優(yōu)算法(在這個(gè)例子中是隨機(jī)梯度下降法)來(lái)調(diào)整權(quán)值以提高誤差分?jǐn)?shù)。你可能不需要對(duì)這個(gè)進(jìn)行修改。

.learningRate(0.005)

當(dāng)我們使用隨機(jī)梯度下降法的時(shí)候,誤差梯度就被計(jì)算出來(lái)了。在我們?cè)噲D將誤差值減到最小的過(guò)程中,權(quán)值也隨之變化。SGD給我們一個(gè)讓誤差更小的方向,這個(gè)學(xué)習(xí)效率就決定了我們?cè)撛谶@個(gè)方向上邁多大的梯度。如果學(xué)習(xí)效率太高,你可能是超過(guò)了誤差最小值;如果太低,你的訓(xùn)練可能將會(huì)永遠(yuǎn)進(jìn)行。這是一個(gè)你需要調(diào)整的超參數(shù)。


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }