盡管預(yù)測(cè)結(jié)果總是存在爭(zhēng)議,但 Gartner 認(rèn)為,在 2017 年,會(huì)有 84 億個(gè)互聯(lián)的 IoT 設(shè)備(不包括智能電話),而且一些分析師認(rèn)為,到 2020 年,該數(shù)字將會(huì)是 500 億。就算該數(shù)字被高估,但 IoT 設(shè)備的數(shù)量很快就會(huì)超過全球人口數(shù)量。而且眾所周知,所有這些設(shè)備都在不斷生成數(shù)據(jù);如果不對(duì)這些數(shù)據(jù)進(jìn)行分析,它們將毫無用處。
認(rèn)知系統(tǒng)提供了一組技術(shù)功能來幫助分析所有這些數(shù)據(jù),這些功能包括人工智能 (AI)、自然語言處理、機(jī)器學(xué)習(xí)和高級(jí)機(jī)器學(xué)習(xí)。認(rèn)知系統(tǒng)能自然地向人類學(xué)習(xí)并與人類交互,以便從數(shù)據(jù)中收集洞察,幫助人們制定更好的決策。在我的上一篇文章中,我曾提到過,認(rèn)知計(jì)算不只是人機(jī)交互 (HCI),它還是一種受強(qiáng)大的算法(模型)和接近無限的數(shù)據(jù)處理功能驅(qū)動(dòng)的高級(jí)機(jī)器學(xué)習(xí)。
要了解使用 IoT 傳感器和深度學(xué)習(xí)分析的認(rèn)知系統(tǒng),首先需要了解從高級(jí)機(jī)器學(xué)習(xí)到神經(jīng)網(wǎng)絡(luò)的跳躍式發(fā)展。在本文中,我會(huì)嘗試幫您了解這種跳躍。在未來幾周,我將通過 3 篇不同的教程介紹如何在 Apache Spark 上使用 Deeplearning4j、ApacheSystemML 和 TensorFlow (TensorSpark) 深度學(xué)習(xí)框架檢測(cè)時(shí)序數(shù)據(jù)上的異常,幫助您充分理解如何使用深度學(xué)習(xí)為異常檢測(cè)開發(fā)認(rèn)知 IoT 解決方案。
從機(jī)器學(xué)習(xí)到神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)
如果認(rèn)知系統(tǒng)基于模型,那么您需要首先了解機(jī)器學(xué)習(xí)模型是什么。與通過數(shù)據(jù)訓(xùn)練來學(xué)習(xí)隱藏模式的物理模型(白盒)相反,機(jī)器學(xué)習(xí)模型是一種統(tǒng)計(jì)模型(黑盒)。
參見 表 1。它包含不同參數(shù)的歷史數(shù)據(jù)、在一個(gè)制造管道上測(cè)量到的觀察結(jié)果,以及一個(gè)二元結(jié)果。
表 1. 機(jī)器學(xué)習(xí)模型
部件編號(hào) | 最高溫度1 | 最低溫度1 | 最大震動(dòng) 1 | 結(jié)果 |
---|---|---|---|---|
100 | 35 | 35 | 12 | 正常 |
101 | 36 | 35 | 21 | 正常 |
130 | 56 | 46 | 3412 | 故障 |
在這個(gè)高度人為的示例中,數(shù)字的含義不言而喻。您可能已經(jīng)猜到,高溫度和高震動(dòng)會(huì)導(dǎo)致部件故障。出現(xiàn)這種情況的根本原因可能是機(jī)器中的某個(gè)軸承壞了。
在這個(gè)示例中,(監(jiān)督式)機(jī)器學(xué)習(xí)算法能考慮所有這些數(shù)據(jù)(以及其他許多數(shù)據(jù)),以便從純數(shù)據(jù)中學(xué)習(xí)并預(yù)測(cè)故障。這樣一種算法生成的組件被稱為機(jī)器學(xué)習(xí)模型。
神經(jīng)網(wǎng)絡(luò)是一種特殊類型的機(jī)器學(xué)習(xí)算法。它非常適合數(shù)據(jù),而且能學(xué)習(xí)任何在數(shù)據(jù)和結(jié)果之間的隱藏?cái)?shù)學(xué)函數(shù)。神經(jīng)網(wǎng)絡(luò)的唯一缺陷在于,需要大量的計(jì)算資源和數(shù)據(jù)才能良好執(zhí)行。那么我為什么還要談?wù)撋窠?jīng)網(wǎng)絡(luò)呢?我們生活在一個(gè) IoT 世界中,通過使用云,我們可以獲得海量的數(shù)據(jù)和(接近)無限的計(jì)算能力。這種情況使神經(jīng)網(wǎng)絡(luò)對(duì) IoT 數(shù)據(jù)處理特別有用。
神經(jīng)網(wǎng)絡(luò)的靈感來源于人腦,深度學(xué)習(xí)網(wǎng)絡(luò)也是如此。神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)網(wǎng)絡(luò)的主要區(qū)別在于添加了多個(gè)神經(jīng)層。深度學(xué)習(xí)優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)的最明顯例子是圖像識(shí)別。每個(gè)最先進(jìn)的系統(tǒng)都會(huì)使用一種特殊類型的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)(稱為卷積神經(jīng)網(wǎng)絡(luò))來執(zhí)行其任務(wù)。
例如,基于深度學(xué)習(xí)的圖像識(shí)別算法能區(qū)分制造管道中的正常部件與故障部件。我將此稱為機(jī)器智能,IBM Watson Visual Recognition Service中也這么稱呼它。對(duì)于這個(gè)特定的示例,機(jī)器可以像人類一樣準(zhǔn)確完成相同的任務(wù)。機(jī)器的唯一優(yōu)勢(shì)在于,它從不睡覺,從不請(qǐng)病假,而且從不會(huì)受傷。此外,如果想讓生產(chǎn)量加倍,只需將硬件或云資源量加倍即可。但是,如果要對(duì)部件間或性故障進(jìn)行根本原因分析,則仍是人類專家的領(lǐng)域。不過,認(rèn)知解決方案可在這種場(chǎng)景中應(yīng)用深度學(xué)習(xí)。
事實(shí)上,視覺識(shí)別服務(wù)返回的信息遠(yuǎn)比 “正常” 或 “故障” 這樣的二元結(jié)果多得多。像人類一樣,該服務(wù)會(huì)檢測(cè)圖像中偏離標(biāo)準(zhǔn)的結(jié)構(gòu)和區(qū)域。現(xiàn)在,如果想將所有聲音和震動(dòng)傳感器數(shù)據(jù)與所有視覺識(shí)別數(shù)據(jù)相關(guān)聯(lián),我敢肯定這樣一個(gè)系統(tǒng)能夠像人類一樣有效地檢測(cè)故障根源,或者甚至比人類更有效。
人工神經(jīng)網(wǎng)絡(luò)的工作原理
如果說與消息代理(比如基于 MQTT 的 IBM Watson IoT Platform)相連的 IoT 傳感器是認(rèn)知解決方案的中樞神經(jīng)系統(tǒng),那么深度學(xué)習(xí)就是大腦。要理解深度學(xué)習(xí),需要對(duì)回歸、感知器、生物和人工神經(jīng)網(wǎng)絡(luò),以及隱藏層有基本的了解。
首先介紹線性和邏輯回歸
有許多介紹回歸的科學(xué)文獻(xiàn),所以我將試著給出適合開發(fā)人員的簡短說明??紤] 表 2。它與 表 1 相同,但在這里我將結(jié)果轉(zhuǎn)換成了二進(jìn)制表示。
表 2. 人工神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)
部件編號(hào) | 最高溫度1 | 最低溫度1 | 最大震動(dòng) 1 | 結(jié)果 |
---|---|---|---|---|
100 | 35 | 35 | 12 | 1 |
101 | 46 | 35 | 21 | 1 |
130 | 56 | 46 | 3412 | 0 |
很容易編寫一個(gè)軟件來實(shí)現(xiàn)分類。
def predict (datapoint):
if datapoint.MaxVibration1 》 100 :
return 0
else :
return 1
在這個(gè)白盒模型示例中,您的底層物理系統(tǒng)知識(shí)(或分析數(shù)據(jù)的領(lǐng)域?qū)<抑R(shí))有助于創(chuàng)建一些規(guī)則。機(jī)器學(xué)習(xí)的理念是讓機(jī)器從數(shù)據(jù)中學(xué)習(xí)這些規(guī)則。完成此學(xué)習(xí)的方式是,使用一個(gè)框架 (skeleton),并使用優(yōu)化算法來填充該框架的缺失部分。我將使用這樣一個(gè)框架(線性回歸):
def predict (dp) :
return a + b * dp.MaxTemp1 + c * dp.MinTemp1 + d * dp.MaxVibration1
如您所見,如果我選擇參數(shù) b 和 c 為 0,a 為 1,d 為 -0.0002930832(也即 -1/3412),最終結(jié)果會(huì)非常接近我需要的結(jié)果。好消息是,參數(shù) a、b、c 和 d 可從算法中學(xué)習(xí)。結(jié)果:機(jī)器學(xué)習(xí)!
您可能注意到,結(jié)果并不是準(zhǔn)確的 1 或 0,因?yàn)榫€性回歸是一個(gè)(嘗試預(yù)測(cè)浮點(diǎn)類型值的)連續(xù)模型。但我想要的是一個(gè)二元分類器。讓我們通過添加一個(gè)名為 sigmoid 的幫助器函數(shù),將此算法轉(zhuǎn)換為邏輯回歸模型。
import math
def sigmoid (x):
return 1 / (1 + math.exp( - x))
def predict (dp):
return sigmoid(a + b * dp.MaxTemp1 + c * dp.MinTemp1 + d * dp.MaxVibration1)
sigmoid 函數(shù)的唯一作用是將從負(fù)無窮大到正無窮大的區(qū)間縮小為 0 -1 的區(qū)間。我只需要定義一個(gè)閾值,例如將小于 0.5 的值轉(zhuǎn)換為 0,將大于 0.5 的值轉(zhuǎn)換為 1。
圖 1. sigmoid 函數(shù)映射區(qū)間
最簡單的神經(jīng)網(wǎng)絡(luò):感知器
您現(xiàn)在已經(jīng)熟悉了最簡單的神經(jīng)網(wǎng)絡(luò):感知器。它類似于邏輯回歸模型 - 有一些可忽略不計(jì)的差異。但 “神經(jīng)網(wǎng)絡(luò)” 這個(gè)詞要高深得多,對(duì)吧?參見 圖 2 中的感知器。
圖 2. 一個(gè)感知器
我為模型提供 x_1 到 x_n 的輸入,模型擁有 w_1 到 w_n 的參數(shù)。然后我對(duì)這些數(shù)值進(jìn)行求和,并使用一個(gè)激活函數(shù)(例如sigmoid)將求和結(jié)果縮小。如果用稍微不同的方式編寫此模型,它看起來類似于:
out(x_1,x_2,…,x_n) = activation_function(w_0+w_1*x_1+w_2*x_2+…+w_n*x_n)
如果將 activation_function 替換為 sigmoid,則又回到了邏輯回歸。唯一的區(qū)別是……它現(xiàn)在看起來更像大腦的結(jié)構(gòu)。但是人腦是什么樣子的?
從生物神經(jīng)網(wǎng)絡(luò)到人工神經(jīng)網(wǎng)絡(luò)
看看 圖 3 中的生物神經(jīng)元。在數(shù)學(xué)術(shù)語中,樹突是 “輸入”,上游數(shù)據(jù)從這里傳入;細(xì)胞體(和突觸)計(jì)算總和并執(zhí)行 “激活函數(shù)”;“結(jié)果” 通過軸突發(fā)送到下游的后續(xù)神經(jīng)元。
圖 3. 生物神經(jīng)元
因?yàn)楹苡腥ぃㄖ辽賹?duì)我而言),讓我們來看看 圖 4,它描繪了一個(gè)(以生化方式)將神經(jīng)元連接在一起的生物突觸。這個(gè)圖中描繪了感知器中的 w_n 值的集合。
圖 4. 生物突觸
如果將多個(gè)神經(jīng)元鏈接在一起,就會(huì)獲得一個(gè)如 圖 5 所示的大腦或人工神經(jīng)網(wǎng)絡(luò)。
圖 5. 人工神經(jīng)網(wǎng)絡(luò)
不同之處在于隱藏層
這個(gè)人工網(wǎng)絡(luò)與感知器的最大區(qū)別在于隱藏層。隱藏層是什么?它有用嗎?可能有用。至少在人腦中,隱藏層似乎很有用,因?yàn)槲覀兊拇竽X中堆疊著數(shù)百個(gè)隱藏層。在圖 6 中的這個(gè)前饋神經(jīng)網(wǎng)絡(luò)示例中,可以看到模型堆疊在一起。
圖 6. 堆疊神經(jīng)網(wǎng)絡(luò)層來實(shí)現(xiàn)圖像識(shí)別
沒有看到?看看這個(gè)模型的編程語言表示形式。但在這么做之前,讓我告訴您一個(gè)秘密。一個(gè)被數(shù)學(xué)家用來嚇跑所有人的秘密。但這個(gè)秘密非常簡單。我講的是矢量乘法。矢量是什么?矢量就是一列數(shù)字,沒有別的。程序員可能稱之為數(shù)組。矢量乘法的定義稍有不同。它規(guī)定,如果有一個(gè)矢量 x=(x_1,x_2,。..,x_n) 和另一個(gè)矢量 w=(w_1,w_2,…,w_n),而且如果將它們相乘 x*w,那么結(jié)果是一個(gè)值:
w_1*x_1+w_2*x_2+…+w_n*x_n
此模型看起來熟悉嗎?如果不熟悉,讓我們?cè)俅慰纯淳€性回歸。我可以通過計(jì)算 sigmoid(x*w) 來計(jì)算一個(gè)神經(jīng)元。而且因?yàn)?Python 不支持直接使用矢量乘法,所以我可以使用 numpy 庫來實(shí)現(xiàn)此目的。我將開始計(jì)算一個(gè)神經(jīng)元:
import numpy as np
datapoint = {“ MaxTemp1 ”: 35 , “ MinTemp1 ”: 35 , “ MaxVibration1 ”: 12 }
#randomly initialize weights
w_layer1 = np.random.rand(4)
def neuron1 (dp):
x = np.array([ 1 ,dp[“ MaxTemp1 ”],dp[“ MinTemp1 ”],dp[“ MaxVibration1 ”]])
return sigmoid(x.dot(w_layer1))
print (neuron1 ( datapoint ) )
如果想要同時(shí)計(jì)算多個(gè)神經(jīng)元(例如一個(gè)層的所有神經(jīng)元),可以使用此函數(shù)多次。但是數(shù)學(xué)家發(fā)明了另一個(gè)概念來迷惑您(如果您沒有被矢量乘法弄暈):矩陣乘法。在神經(jīng)網(wǎng)絡(luò)中,可以像線性回歸中一樣并行執(zhí)行不同次數(shù)的計(jì)算,而且可以通過這種形式將此過程編寫為矩陣乘法。
同樣地,我假設(shè)輸入包含在矢量 x=(x_1,x_2,。..,x_n) 中。但是現(xiàn)在我想同時(shí)計(jì)算隱藏層中的所有神經(jīng)元。無需將 x 乘以一個(gè)權(quán)重矢量 w 來計(jì)算一個(gè)神經(jīng)元,我將 x 乘以一個(gè)權(quán)重矩陣 w=
w_1_1, w_1_2,。., w_1_m
w_2_1, w_2_2,。., w_2_m
…
w_n_1, w_n_2,。., w_n_m
矩陣乘法將 w*x = 定義為
(w_1_1*x_1, w_1_2*x_2,。., w_1_m*x_n,
w_2_1*x_1, w_2_2*x_2,。., w_2_m*x_n,
…
w_n_1*x_1, w_n_2*x_2,。., w_n_m*x_n)
我的結(jié)果是一個(gè)浮點(diǎn)值矢量,然后可以將該矢量提供給下一層。這是 Python 中的相同代碼:
import numpy as np
#make sigmoid function applicable to vectors instead of scalars only
def sigmoid (z):
s = 1.0 / ( 1.0 + np.exp(- 1.0 * z))
return s
datapoint = {“ MaxTemp1 ”: 35 , “ MinTemp1 ”: 35 , “ MaxVibration1 ”: 12 }
#randomly initialize weights, now as a matrix for the four hidden layer neurons
w_layer1 = np.random.rand(4,4)
def layer 1 (dp):
x = np.array([ 1 ,dp[“ MaxTemp1 ”],dp[“ MinTemp1 ”],dp[“ MaxVibration1 ”]])
return sigmoid(x.dot(w_layer1))
print ( layer 1 ( datapoint ) )
如您所見,代碼段 x.dot(w_layer1) 沒有發(fā)生任何改變。但在內(nèi)部應(yīng)用了矩陣乘法而不是矢量乘法,因?yàn)?w_layer1 現(xiàn)在是一個(gè)矩陣而不是矢量。最后,我需要添加輸出層,并編寫了以下代碼:
w_layer2 = np.random.rand( 5 , 2 )
def layer2 (x):
x = np.concatenate(([ 1 ],x))
return sigmoid(x.dot(w_layer2))
print (layer2(layer1(datapoint)))
當(dāng)然,權(quán)重矩陣 w 未經(jīng)訓(xùn)練,僅被隨機(jī)初始化。對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練不屬于本文的討論范圍。
備注:這個(gè)隨機(jī)神經(jīng)網(wǎng)絡(luò)輸出了兩個(gè)浮點(diǎn)數(shù)。這些數(shù)字是某個(gè)項(xiàng)屬于一個(gè)類或其他類的概率。同樣地,因?yàn)樵撋窠?jīng)網(wǎng)絡(luò)未經(jīng)訓(xùn)練,所以這些數(shù)字目前沒有任何意義。
[ 0.97435552 0.89144977]
深入了解隱藏層
隱藏層有何作用?就其本身而言,每一層都可以視為一個(gè)單獨(dú)的機(jī)器學(xué)習(xí)算法。上游層的輸出被用作輸入,它的輸出被傳遞到下一層,然后下一層使用該輸出作為輸入,依此類推。此行為意味著,當(dāng)堆疊各種層和創(chuàng)建深度神經(jīng)網(wǎng)絡(luò)時(shí),系統(tǒng)會(huì)學(xué)習(xí)數(shù)據(jù)的中間表示,以幫助下游層更有效地完成其工作。最具有啟發(fā)性的示例是人腦的視覺系統(tǒng)。前幾層(感光器后的幾層)無法識(shí)別面部、汽車和貓,但能識(shí)別形狀,比如線、圓、矩形和點(diǎn)。越深入,一層能識(shí)別的東西就越多……直到最終識(shí)別整幅圖像。
因此,我在本節(jié)中得出以下結(jié)論:深度前饋神經(jīng)網(wǎng)絡(luò)能學(xué)習(xí)任何數(shù)學(xué)函數(shù)(只要有足夠的數(shù)據(jù)和計(jì)算能力來訓(xùn)練它)。
時(shí)序數(shù)據(jù)需要長期記憶網(wǎng)絡(luò)
希望您深信神經(jīng)網(wǎng)絡(luò)非常強(qiáng)大。但不幸的是,對(duì)于時(shí)序數(shù)據(jù)(IoT 數(shù)據(jù)主要是時(shí)序數(shù)據(jù)),前饋網(wǎng)絡(luò)存在著缺陷。這些網(wǎng)絡(luò)很難識(shí)別順序,因?yàn)樗鼈儾粫?huì)保留記憶。此問題的一個(gè)解決方案是添加反饋循環(huán)。
圖 7. 反饋循環(huán)
這些反饋循環(huán)從某種程度上解決了這個(gè)問題,因?yàn)榫W(wǎng)絡(luò)現(xiàn)在是能夠記憶的。但它只會(huì)臨時(shí)記住最近發(fā)生的事件。如果網(wǎng)絡(luò)要記住更久遠(yuǎn)的事件,可向神經(jīng)元添加記憶細(xì)胞來獲得長期記憶 (LSTM) 網(wǎng)絡(luò),如 圖 8 所示。
圖 8. 長期記憶網(wǎng)絡(luò)
訓(xùn)練需要計(jì)算能力
LSTM 網(wǎng)絡(luò)有何缺點(diǎn)?在使用神經(jīng)網(wǎng)絡(luò)時(shí),需要大量數(shù)據(jù)和計(jì)算能力才能獲得良好的性能。好消息是,目前的圖形處理單元 (GPU) 卡的計(jì)算能力已相當(dāng)于 2009 年的一個(gè) 16.000 核心集群。此外,IBM 正準(zhǔn)備 發(fā)布一種神經(jīng)形態(tài)芯片 ,該芯片由 IBM Watson Group 提供,具有相同的計(jì)算能力,但功耗僅為 3 瓦。所以未來有望提高性能和節(jié)約能源。
LSTM 網(wǎng)絡(luò)可以學(xué)習(xí)任何算法
為什么我會(huì)在認(rèn)知 IoT 場(chǎng)景中介紹所有這些內(nèi)容?因?yàn)?LSTM 網(wǎng)絡(luò)是圖靈完備的。這意味著 LSTM 網(wǎng)絡(luò)能學(xué)習(xí)計(jì)算機(jī)可執(zhí)行的任何算法。就這么簡單。
而且這與許多用于時(shí)序預(yù)測(cè)和異常檢測(cè)的最先進(jìn)機(jī)器學(xué)習(xí)算法形成了鮮明對(duì)比,這些算法是認(rèn)知 IoT 所涉及的領(lǐng)域。在認(rèn)知 IoT 應(yīng)用中,您需要預(yù)測(cè)系統(tǒng)的未來狀態(tài)來提前采取調(diào)控措施,或者您想在某個(gè)部件發(fā)生故障時(shí)獲得通知。
那么最先進(jìn)的算法有何問題?毫無問題。我說的是 LSTM 通常比最先進(jìn)的算法表現(xiàn)得更好;有時(shí)會(huì)好很多,有時(shí)會(huì)好一點(diǎn),很少比它們表現(xiàn)得差(尤其是在有足夠的數(shù)據(jù)來訓(xùn)練系統(tǒng)時(shí))。用額外的計(jì)算成本換取準(zhǔn)確性的提升是否值得,這取決于具體用例。
演示用例:IoT 時(shí)序數(shù)據(jù)的異常檢測(cè)
請(qǐng)思考這個(gè)演示用例。這個(gè)用例是后續(xù)教程的基礎(chǔ)??紤]對(duì)測(cè)量軸承的震動(dòng)傳感器(加速計(jì))數(shù)據(jù)執(zhí)行異常檢測(cè)任務(wù)。可以將一個(gè)傳感器附加到軸承上,如 圖 9 所示。
圖 9. 軸承上的加速計(jì)傳感器
加速計(jì)傳感器記錄了 3 個(gè)幾何軸 x、y 和 z 上的震動(dòng)。更復(fù)雜的傳感器還會(huì)考慮旋轉(zhuǎn)運(yùn)動(dòng)模式,但對(duì)我們而言這個(gè)簡單模式就足夠用了,因?yàn)樵诿總€(gè)智能電話中都能找到它。(如果想了解如何訪問和分析智能電話中的加速計(jì),可以閱讀這篇 教程。)由于很難將這樣一個(gè)系統(tǒng)在此展示,我需要在 Node-RED 中實(shí)現(xiàn)一個(gè)模擬器,以便使用物理洛倫茨吸引子模型生成數(shù)據(jù)。我將在教程中使用生成的這些數(shù)據(jù)來檢測(cè)異常,主要預(yù)測(cè)軸承何時(shí)會(huì)損壞。
我可以在兩種狀態(tài)之間切換測(cè)試數(shù)據(jù)生成器:正常和故障。圖 10是一個(gè)相位圖,顯示了一個(gè)正常狀態(tài)下的一個(gè)時(shí)序上的 3 個(gè)震動(dòng)維度。
圖 10. 正常狀態(tài)的相位圖
通過 圖 10 中的同一個(gè)相位圖,可以觀察到,只需稍微改動(dòng)物理模型的參數(shù),即可獲得故障狀態(tài)。
圖 11. 故障狀態(tài)中的相位圖
如果不熟悉相位圖,圖 12 和 圖 13 給出了 3 個(gè)軸值(在正常和故障狀態(tài)下)的運(yùn)行圖。
圖 12. 正常狀態(tài)中的運(yùn)行圖
圖 13. 故障狀態(tài)中的運(yùn)行圖
一種常見技術(shù)是,使用 DFT(離散傅立葉變換)或小波變換將此數(shù)據(jù)從時(shí)域轉(zhuǎn)換為頻域。圖 14 和 圖 15 中也給出了正常和故障狀態(tài)的 DFT。
圖 14. 正常狀態(tài)的離散傅里葉變換
圖 15. 故障狀態(tài)的離散傅里葉變換
可以清楚地看到,故障狀態(tài)消耗的能量更多,出現(xiàn)的頻率也更高。此數(shù)據(jù)足以用來訓(xùn)練您前面學(xué)到的分類器。但我們可以做得更好。我們將構(gòu)造一個(gè)能從數(shù)據(jù)中學(xué)習(xí)正常行為的系統(tǒng),而且在看到新的(未曾見過的)數(shù)據(jù)(或順序模式)后,它會(huì)發(fā)出警報(bào)。
圖 16 中所示的基于 LSTM 的自動(dòng)編碼器就是這樣一個(gè)系統(tǒng)。
圖 16. LSTM 自動(dòng)編碼器模型
這個(gè)系統(tǒng)通過神經(jīng)瓶頸嘗試重建它看到的相同數(shù)據(jù),從而壓縮大量數(shù)據(jù),但同樣也會(huì)在使用瓶頸時(shí),丟棄大量不相關(guān)數(shù)據(jù)。這樣一種神經(jīng)網(wǎng)絡(luò)能學(xué)習(xí)系統(tǒng)的正常行為,而且只要看到新模式,它就很難重建數(shù)據(jù)并會(huì)發(fā)出警報(bào)。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100712 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132558 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5500瀏覽量
121111
原文標(biāo)題:介紹深度學(xué)習(xí)和長期記憶網(wǎng)絡(luò)
文章出處:【微信號(hào):C_Expert,微信公眾號(hào):C語言專家集中營】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論