長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)是遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的一個(gè)變種,專門設(shè)計(jì)用來解決標(biāo)準(zhǔn) RNN 在處理長(zhǎng)序列數(shù)據(jù)時(shí)遇到的梯度消失或梯度爆炸問題。標(biāo)準(zhǔn) RNN 在反向傳播過程中,由于鏈?zhǔn)椒▌t的應(yīng)用,梯度可能會(huì)在多層傳播中指數(shù)級(jí)地減小(梯度消失)或增大(梯度爆炸),這使得網(wǎng)絡(luò)難以學(xué)習(xí)和記住長(zhǎng)時(shí)間步的依賴關(guān)系。
1.遞歸神經(jīng)網(wǎng)絡(luò)(RNN)
RNN 的核心是其循環(huán)結(jié)構(gòu)。在每個(gè)時(shí)間步,RNN 不僅接收當(dāng)前輸入數(shù)據(jù),還接收前一時(shí)間步的隱藏狀態(tài),正是隱藏狀態(tài)的設(shè)計(jì),使得網(wǎng)絡(luò)能夠記住和利用之前的信息。
圖 1 RNN 單元結(jié)構(gòu)
圖1顯示了標(biāo)準(zhǔn) RNN 的單元結(jié)構(gòu),其中輸入向量xt,輸出向量ot,隱藏狀態(tài)向量ht-1。當(dāng)前隱藏狀態(tài)向量ht的計(jì)算如下,其輸入當(dāng)前時(shí)間步向量xt和前一時(shí)間段步的隱藏狀態(tài)向量ht-1:
其中 σ 表示激活函數(shù),Wh 和 Wx 是隱藏狀態(tài)變換參數(shù)和輸入變換參數(shù),隱藏狀態(tài)負(fù)責(zé)記憶之前時(shí)間步上的信息。RNN 的輸出向量ot是對(duì)隱藏狀態(tài)做線性變換:
其中 σ 表示激活函數(shù),Wo?輸出變換。Wh 、Wx 和 Wo 是 RNN 要學(xué)習(xí)的參數(shù)。標(biāo)準(zhǔn)的 RNN 結(jié)構(gòu)存在兩個(gè)主要問題:梯度消失(或增大);長(zhǎng)期信息丟失。
梯度消失(或增大)在長(zhǎng)時(shí)間序列中,梯度是消失還是增大,與選擇的激活函數(shù)有關(guān),這里我們解釋梯度消失問題。假設(shè)損失函數(shù)為 L,在反向傳播過程中,針對(duì)參數(shù) Wh的梯度計(jì)算為:
而?h1/?wh是通過激活函數(shù)做梯度計(jì)算,激活函數(shù)的取值范圍是[-1,1](tanh函數(shù))或[0,1](sigmod函數(shù)),因此,連續(xù)相乘會(huì)產(chǎn)生梯度消失,
長(zhǎng)期信息丟失對(duì)當(dāng)前隱藏狀態(tài)向量產(chǎn)生影響的是當(dāng)前時(shí)間步的輸入向量和前一個(gè)時(shí)間步的隱藏狀態(tài)向量。當(dāng)前輸入數(shù)據(jù)往往是會(huì)攜帶大量信息,而隱藏狀態(tài)變量是遞歸生成的,隨著遞歸次數(shù)的增加其變化量也會(huì)較少,因此 Wx × xt 的值會(huì)大于 Wh × ht-1。
▼
2.長(zhǎng)短期記憶(LSTM)
LSTM 是一種新的 RNN 結(jié)構(gòu),能夠有效地保留長(zhǎng)期信息并緩解梯度消失問題。LSTM 引入了一個(gè)記憶單元(也是單元狀態(tài)向量),用于存儲(chǔ)長(zhǎng)期信息。記憶單元通過直接的線性連接在時(shí)間步之間傳遞信息,避免了梯度消失問題。LSTM 通過三個(gè)門(遺忘門、輸入門和輸出門)來控制信息在時(shí)間步間的流動(dòng)量。
遺忘門: 決定記憶單元中哪些信息需要丟棄。
輸入門: 決定哪些新的信息會(huì)被加入記憶單元。
輸出門: 控制記憶單元的輸出部分如何影響最終的輸出。
LSTM 的單元結(jié)構(gòu)如圖2所示。其中,f、i、o分別是遺忘門、輸入門和輸出門,g表示候選進(jìn)入單元狀態(tài)的信息;σg 和σc表示激活函數(shù),?表示向量對(duì)應(yīng)元素相乘。
圖 2 LSTM 單元結(jié)構(gòu) 每個(gè)門對(duì)輸入數(shù)據(jù)和前一時(shí)刻的隱藏狀態(tài)向量的轉(zhuǎn)換過程可以表示為:
遺忘門:
輸入門:
輸出門:
候選狀態(tài)單元:
進(jìn)一步,單元狀態(tài)(cellstate)表示為:
隱藏狀態(tài)(hidden state)表示為:
一般情況下,激活函數(shù)σg 和σc分別采用tanh函數(shù)和sigmod函數(shù)。正如公式(5)所示,t時(shí)刻的單元狀態(tài)ct,是對(duì)前一時(shí)刻的單元狀態(tài)做部分遺忘,遺忘的比例由遺忘門ft 決定;并增加部分輸入數(shù)據(jù),增加的比例由輸入門決定it。而公式(6)表明,每個(gè)時(shí)間步的隱藏狀態(tài)是部分單元狀態(tài),比例部分由輸出門ot 決定。
正是由于單元狀態(tài)的引入,可以通過一條直接的路徑記住每個(gè)時(shí)間步的輸入數(shù)據(jù),也就是長(zhǎng)期依賴關(guān)系;而輸入數(shù)據(jù)通過加法(類似于殘差)引入單元狀態(tài)中,使得反向傳播過程的梯度消失得到緩解。 ▼
3.MATLAB 對(duì) LSTM的支持
在 MATLAB 中,lstmLayer 層實(shí)現(xiàn)了 LSTM,其提供了多個(gè)屬性用于設(shè)置和初始化 LSTM 的相關(guān)參數(shù)。
MATLAB 中的 lstmLayer 及其屬性
例如NumHiddenUnits用于設(shè)置隱藏狀態(tài)向量的維度,隱藏狀態(tài)包含來自所有先前時(shí)間步的信息,其大小也決定了 LSTM 要學(xué)習(xí)的參數(shù)的規(guī)模;stateActivateFunction設(shè)置單元狀態(tài)和隱藏狀態(tài)的激活函數(shù);gateActivateFunction用于設(shè)置門操作的激活函數(shù);還有一個(gè)很重要的屬性outputMode,其有兩個(gè)值:sequence和last。LSTM 單元按時(shí)間步順序處理輸入數(shù)據(jù),輸出是當(dāng)前時(shí)間步的隱藏狀態(tài),如圖 3 所示。如果outputMode的屬性值為 sequence,每個(gè)時(shí)間步的隱藏狀態(tài)向量都會(huì)輸出,最終 lstmLayer 輸出一個(gè)隱藏狀態(tài)序列,序列長(zhǎng)度等于輸入序列的長(zhǎng)度;如果outputMode的屬性值為 last,那么 lstmLayer 只輸出最后一個(gè)時(shí)間步的隱藏狀態(tài)向量。由于 LSTM 是對(duì)輸入序列遞歸處理,所以最后一個(gè)時(shí)間的輸出隱藏狀態(tài)向量已經(jīng)包含其與之前所有時(shí)間步的依賴關(guān)系。
圖3(a)LSTM單元的每個(gè)時(shí)間步的輸入數(shù)據(jù)和輸出數(shù)據(jù);
圖3(b) LSTM遞歸處理輸入序列,并生成相應(yīng)的輸出序列
MATLAB 還同時(shí)支持 BiLSTM(BiderectionalLong Short-Term Memory),也就是雙向 LSTM。BiLSTM 是對(duì) LSTM 的擴(kuò)展,通過引入雙向信息流來增強(qiáng)模型的上下文捕獲能力。在 BiLSTM 中,輸入序列不僅從前向后處理(正向 LSTM),還從后向前處理(反向 LSTM)。這種雙向處理方式允許模型在每個(gè)時(shí)間步上同時(shí)考慮前后文信息,從而提高預(yù)測(cè)的準(zhǔn)確性。
類似于 lstmLayer,MATLAB 中的 bilstmLayer 實(shí)現(xiàn)了 BiLSTM。屬性NumHiddenUnits用于設(shè)置隱藏狀態(tài)向量的維度,其包含先前時(shí)間步和后續(xù)時(shí)間步的信息,而實(shí)際輸出的隱藏狀態(tài)向量維度為 2*NumHiddenUnits,即將前向和后向兩個(gè)處理過程的隱藏狀態(tài)進(jìn)行連接。 ▼
4.LSTM 在基于信號(hào)數(shù)據(jù)的故障診斷中的應(yīng)用
基于 LSTM,可以構(gòu)建分類網(wǎng)絡(luò)對(duì)設(shè)備或器件做故障診斷。LSTM 可以捕獲傳感器數(shù)據(jù)在時(shí)間上的依賴關(guān)系,進(jìn)而可以識(shí)別設(shè)備的動(dòng)態(tài)特性實(shí)現(xiàn)診斷或預(yù)測(cè)。使用 Deep Network Designer App 構(gòu)建分類網(wǎng)絡(luò),如圖 4 所示。
圖4 LSTM分類網(wǎng)絡(luò)
lstmLayer 的隱藏單元向量維度設(shè)置為 128,outputMode設(shè)置為sequence,因此,lstmLayer 層的輸出是一個(gè)隱藏狀態(tài)向量序列,并且序列中的每個(gè)向量的維度為 128。在 lstmLayer 之后使用 globalMaxPooling1dLayer 層對(duì)輸出結(jié)果在時(shí)間方向上做最大值池化(這類似在傳感器數(shù)據(jù)的深度學(xué)習(xí)模型應(yīng)用(一) – Transformer中使用的方法),進(jìn)而其輸出結(jié)果為一個(gè)128維的向量,最后我們使用兩個(gè)全連接層做線性變化,最終輸出為 3 維的向量對(duì)應(yīng)于故障種類。
使用在傳感器數(shù)據(jù)的深度學(xué)習(xí)模型應(yīng)用(一) – Transformer提到的數(shù)據(jù)集,該數(shù)據(jù)集是對(duì)原始信號(hào)數(shù)據(jù)做了時(shí)域、頻域、以及時(shí)頻域的特征提取,進(jìn)而將具有 146484 采樣點(diǎn)一維數(shù)據(jù),轉(zhuǎn)換為 1464×30 的二維矩陣(因此,在 LSTM 分類網(wǎng)絡(luò)中輸入層的維度為 30)。數(shù)據(jù)集進(jìn)步劃分為訓(xùn)練集和測(cè)試集,如下所示:
訓(xùn)練集(上)
測(cè)試集(下)
模型訓(xùn)練過程,MATLAB 提供了超參數(shù)選項(xiàng)實(shí)現(xiàn)模型的進(jìn)一步調(diào)優(yōu),而超參數(shù)選項(xiàng)是通過 trainingOptions 函數(shù)設(shè)置的,包括初始學(xué)習(xí)速率、學(xué)習(xí)速率衰減策略、minibatch 大小、訓(xùn)練執(zhí)行環(huán)境(GPU、CPU)、訓(xùn)練周期等等。經(jīng)過 100 個(gè) Epoch 訓(xùn)練,模型在測(cè)試集上的測(cè)試結(jié)果如圖 5 所示:
圖 5 模型訓(xùn)練過程(上)
圖 5測(cè)試集精度(heatmap)(下)
▼
5. 總結(jié)
本文的目的主要是介紹 Long-shortterm memory(LSTM),以及 MATLAB 對(duì) LSTM 支持和如何在 MATLAB 中構(gòu)建基于 LSTM 的分類網(wǎng)絡(luò)。當(dāng)然基于 LSTM 還可以構(gòu)建回歸網(wǎng)絡(luò),實(shí)現(xiàn)序列到一個(gè)值和序列到序列的預(yù)測(cè)。本文目的是給讀者在序列數(shù)據(jù)分析提供一種思路,文中的模型設(shè)計(jì)和訓(xùn)練還有可以優(yōu)化地方,僅為讀者提供參考,也歡迎大家做進(jìn)一步模型結(jié)構(gòu)調(diào)整和精度提升。
-
傳感器
+關(guān)注
關(guān)注
2564文章
52793瀏覽量
765437 -
matlab
+關(guān)注
關(guān)注
189文章
2999瀏覽量
233650 -
LSTM
+關(guān)注
關(guān)注
0文章
60瀏覽量
4020
原文標(biāo)題:傳感器數(shù)據(jù)的深度學(xué)習(xí)模型應(yīng)用(二)—— LSTM
文章出處:【微信號(hào):MATLAB,微信公眾號(hào):MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
GPU在深度學(xué)習(xí)中的應(yīng)用 GPUs在圖形設(shè)計(jì)中的作用
RNN與LSTM模型的比較分析
NPU在深度學(xué)習(xí)中的應(yīng)用
深度學(xué)習(xí)框架中的LSTM神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)
LSTM神經(jīng)網(wǎng)絡(luò)在圖像處理中的應(yīng)用
如何使用Python構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)模型
如何優(yōu)化LSTM神經(jīng)網(wǎng)絡(luò)的性能
LSTM神經(jīng)網(wǎng)絡(luò)在語音識(shí)別中的應(yīng)用實(shí)例
使用LSTM神經(jīng)網(wǎng)絡(luò)處理自然語言處理任務(wù)
LSTM神經(jīng)網(wǎng)絡(luò)在時(shí)間序列預(yù)測(cè)中的應(yīng)用
AI大模型在圖像識(shí)別中的優(yōu)勢(shì)
二維力傳感器測(cè)量扭力原理,在扭力測(cè)量中的優(yōu)勢(shì)應(yīng)用

評(píng)論