一維卷積是對一維輸入數(shù)據(jù)應(yīng)用滑動卷積來學(xué)習(xí)特征,其主要作用是對序列數(shù)據(jù)做局部特征提取。基于提取的特征可以進一步構(gòu)建分類或回歸網(wǎng)絡(luò)。一維卷積的操作涉及卷積大小、步長以及填充形式和填充值。本文對一維卷積操作進行介紹,包括一維擴展卷積和一維因果卷積,以及 MATLAB 對一維卷積的支持情況。在最后通過一個實例演示如何在 MATLAB 中將一維卷積和 LSTM 結(jié)合構(gòu)建分類網(wǎng)絡(luò),實現(xiàn)基于傳感器數(shù)據(jù)的故障診斷。
1. 一維卷積
一維卷積操作過程如圖1所示。圖1中顯示的卷積核的大小為 3(1×3的向量),滑動的步長(stride)為 2,采用 0 值填充(padding),填充可以在序列的最左側(cè),或者兩側(cè)填充,這需要根據(jù)具體需求決定。
圖1 .一維卷積基本操作
基本的一維卷積操作過程中,卷積核的中心位置對齊輸入序列的每個位置,卷積核沿著輸入序列滑動,并在輸入序列的每個位置計算加權(quán)和(步長等于 1)。默認設(shè)置下,卷積操作會在輸入序列的兩端進行填充(padding),輸出結(jié)果的長度可以由以下公式計算:
其中:l 表示輸出序列長度,i 表示輸入序列長度;p 表示填充數(shù)據(jù)的總長度;f 表示卷積核長度;s 表示步長;floor 表示計算結(jié)果的下取整。
2. 一維因果卷積
因果卷積是一類特殊的一維卷積。基本的卷積操作會考慮輸入位置的上下文信息,其不僅考慮位置之前的數(shù)據(jù),還要考慮之后的數(shù)據(jù)。而因果卷積在處理輸入序列的每個位置時,只依賴于當前及之前的位置信息,這在應(yīng)對時間序列輸入時,避免了信息泄露,即未來的信息不回影響過去的數(shù)據(jù)。因果卷積的卷積核最右側(cè)位置對齊輸入序列的開始位置,并根據(jù)步長滑動卷積核,因此輸入序列通常會在開始部分進行填充。
圖2 一維因果卷積操作過程
在實際應(yīng)用中,一維卷積往往面對的是多個傳感器輸入序列,即多通道(每個通道對應(yīng)一個傳感器序列)輸入,卷積核自身帶有“厚度”,同時與所有通道上的數(shù)據(jù)做卷積后輸出結(jié)果,因而一個卷積核合并多個通道的數(shù)據(jù)形成一個局部特征數(shù)據(jù),如圖3所示。
圖3 一維多通道卷積
3. MATLAB 中的一維卷積
MATLAB 提供了一維卷積層 convolution1dLayer 實現(xiàn)對輸入序列的卷積操作。其有多個屬性用來設(shè)置卷積操作的過程,例如 FilterSize 用于定義卷積核的大小,NumFilters 定義卷積核的數(shù)量(卷積輸出的通道數(shù)), Stride定義步長,等等。
convolution1dLayer 的屬性 Padding 有兩個值:same 和 causal。same 實現(xiàn)了一維卷積標準操作,在輸入序列的兩側(cè)做填充,輸出序列的長度等于ceil(輸入序列長度/Stride),ceil是MATLAB的內(nèi)置上取整函數(shù)。causal 實現(xiàn)因果卷積,只在輸入序列左側(cè)做填充。對于時間序列數(shù)據(jù),causal 只關(guān)注當前位置即之前位置上的數(shù)據(jù)。
MATLAB 的 convolution1dLayer 也支持擴張卷積。擴展卷積(也稱為空洞卷積,Dilated Convolution)是一種卷積操作,旨在增加卷積核的感受野,而不增加計算復(fù)雜度。通過在卷積核元素之間插入空洞(即零),擴展卷積可以在不增加參數(shù)數(shù)量的情況下捕獲更大范圍的輸入信息。MATLAB 通過 convolution1dLayer 的屬性 DilationFactor (膨脹系數(shù))設(shè)置擴張卷積(也稱空洞卷積),其數(shù)值的大小決定了卷積核元素之間空洞的大小。當 DilationFactor 的值為 1 時,卷積核元素之間不插入任何零值,與普通卷積相同。DilationFactor 值為 2 表示在卷積核元素之間插入 1 個零,為 3 表示插入 2 個零,依此類推。擴張卷積通過插入 0 值的方式擴大感受野,而參數(shù)數(shù)量并沒有增加,進而可以提高計算效率。
針對時間序列數(shù)據(jù),擴展卷積與因果卷積配合使用構(gòu)建時間卷積網(wǎng)絡(luò) (Temporal Convolutional Network, TCN)。在MATLAB中,通過設(shè)置 convolution1dLayer 的 Padding 屬性值為 causal,同時設(shè)置 DilationFactor 的值可以構(gòu)建時間卷積網(wǎng)絡(luò)。而此時對輸入序列做左側(cè)填充的大小為:(FilterSize - 1) .* DilationFactor。擴展卷積操作擴大了卷積層的輸出位置的感受野,隨著卷積層的增加,輸出位置的感受野不斷擴大。圖4顯示了在不增加參數(shù)數(shù)量(卷積核大小)的情況下,擴展卷積的膨脹系數(shù)(DilationFactor)呈指數(shù)增加,每個輸出位置的感受野不斷擴大。這使得網(wǎng)絡(luò)能夠捕獲更大范圍的局部信息。
圖4 時間卷積網(wǎng)絡(luò)的輸出位置的感受野
4. 實現(xiàn)基于傳感器數(shù)據(jù)的故障診斷
卷積網(wǎng)絡(luò)的計算比循環(huán)網(wǎng)絡(luò)更快,因為卷積操作可以通過單一運算來處理輸入。相反,循環(huán)操作必須對輸入的時間步進行迭代,進而其計算比較耗時。然而,循環(huán)網(wǎng)絡(luò)時間步迭代使其能夠捕獲數(shù)據(jù)在時間上的依賴關(guān)系,可以學(xué)習(xí)到時間步之間的長期相關(guān)性,而卷積操作只是提取數(shù)據(jù)在局部的特征,并沒有考慮時間上的關(guān)系。對于動態(tài)系統(tǒng),往往存在著時間步之間的關(guān)系,識別這些關(guān)系對于診斷故障和預(yù)測壽命是非常重要的。因此,將一維卷積和循環(huán)網(wǎng)絡(luò)聯(lián)合使用。通過卷積提取輸入序列的局部特征,減少序列長度,降低計算量;再通過循環(huán)網(wǎng)絡(luò)捕獲輸入序列時間上的依賴關(guān)系,提高網(wǎng)絡(luò)精度。這種結(jié)合在減少計算量的同時,也可以保證模型的精度。
本文將卷積網(wǎng)絡(luò)和循環(huán)網(wǎng)絡(luò)聯(lián)合使用構(gòu)建分類模型,實現(xiàn)基于傳感器數(shù)據(jù)的故障診斷。利用上文提到的時間卷積網(wǎng)絡(luò)提取輸入數(shù)據(jù)的局部特征,并將由這些局部特征組成的新的序列數(shù)據(jù)輸入 LSTM 網(wǎng)絡(luò)捕獲時間上的依賴關(guān)系,最后通過全連接網(wǎng)路輸出故障類型,網(wǎng)絡(luò)結(jié)構(gòu)如圖 5 所示。
圖5 TCN+LSTM的分類網(wǎng)絡(luò)
圖 5 顯示的是使用 Deep Network Designer App 構(gòu)建分類網(wǎng)絡(luò),其中一維卷積層 convolution1dLayer 采用擴展卷積核因果卷積。通過逐層增加 DilationFactor 的值來擴大感受野;并且每個卷積層的 Padding 參數(shù)都設(shè)置為 causal。lstmLayer 的隱藏單元向量維度設(shè)置為 64,outputMode 設(shè)置為 sequence,因此,lstmLayer 層的輸出是一個隱藏狀態(tài)向量序列,并且序列中的每個向量的維度為 64。在 lstmLayer 之后使用 globalMaxPooling1dLayer 層對輸出結(jié)果在時間方向上做最大值池化,進而其輸出結(jié)果為一個 64 維的向量。最后我們使用兩個全連接層做線性變化,最終輸出為 3 維的向量對應(yīng)于故障種類。
使用在傳感器數(shù)據(jù)的深度學(xué)習(xí)模型應(yīng)用(一) – Transformer提到的數(shù)據(jù)集,該數(shù)據(jù)集,并直接在原始信號數(shù)據(jù)上做模型訓(xùn)練。原始信號數(shù)據(jù)是具有 146484 采樣點一維數(shù)據(jù)。數(shù)據(jù)集進步劃分為訓(xùn)練集和測試集,如下所示:
訓(xùn)練集(上)和測試集(下)
進一步將訓(xùn)練集再劃分為訓(xùn)練集和驗證集,并在模型訓(xùn)練過程中進行驗證,以提高模型的泛化能力。
訓(xùn)練集(上)和驗證集(下)
模型訓(xùn)練過程,MATLAB 提供了超參數(shù)選項實現(xiàn)模型的進一步調(diào)優(yōu),而超參數(shù)選項是通過 trainingOptions 函數(shù)設(shè)置的,包括初始學(xué)習(xí)速率、學(xué)習(xí)速率衰減策略、minibatch 大小、訓(xùn)練執(zhí)行環(huán)境(GPU、CPU)、訓(xùn)練周期等等。經(jīng)過 100 個 Epoch 訓(xùn)練后,模型的精度以及在測試集上的測試結(jié)果如圖 6 所示:
圖6 模型訓(xùn)結(jié)果(上)和測試集精度(heatmap)(下)
5. 總結(jié)
本文通過引入一維卷積對原始傳感器數(shù)據(jù)進行直接處理,實現(xiàn)了模型訓(xùn)練過程的特征提取,節(jié)省了數(shù)據(jù)前處理中的特征提取工作。在卷積層提取的特征數(shù)據(jù)上應(yīng)用LSTM層捕獲數(shù)據(jù)的動態(tài)特征。這種網(wǎng)絡(luò)結(jié)構(gòu)充分發(fā)揮了各自網(wǎng)絡(luò)層特點,進而實現(xiàn)基于動態(tài)數(shù)據(jù)的故障診斷。本文目的是為讀者在序列數(shù)據(jù)分析方面提供一種思路,所使用的代碼可以通過下方二維碼掃碼下載。文中的模型設(shè)計和訓(xùn)練還有可以優(yōu)化地方,僅為讀者提供參考,也歡迎大家做進一步模型結(jié)構(gòu)調(diào)整和精度提升。
-
傳感器
+關(guān)注
關(guān)注
2564文章
52793瀏覽量
765439 -
matlab
+關(guān)注
關(guān)注
189文章
2999瀏覽量
233650 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5557瀏覽量
122658 -
卷積網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
43瀏覽量
2476
原文標題:傳感器數(shù)據(jù)的深度學(xué)習(xí)模型應(yīng)用(三) —— 一維時間卷積網(wǎng)絡(luò)
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FFT與DFT計算時間的比較及圓周卷積代替線性卷積的有效性實
畢業(yè)設(shè)計_分段卷積MATLAB仿真與DSP實現(xiàn)
卷積神經(jīng)網(wǎng)絡(luò)一維卷積的處理過程
《 AI加速器架構(gòu)設(shè)計與實現(xiàn)》+第一章卷積神經(jīng)網(wǎng)絡(luò)觀后感
卷積神經(jīng)網(wǎng)絡(luò)的權(quán)值反向傳播機制和MATLAB的實現(xiàn)方法
連續(xù)時間系統(tǒng)時域分析的MATLAB實現(xiàn)

一種輕量級時間卷積網(wǎng)絡(luò)設(shè)計方案

MATLAB實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN的源代碼
卷積神經(jīng)網(wǎng)絡(luò)算法代碼matlab
cnn卷積神經(jīng)網(wǎng)絡(luò)matlab代碼
什么是卷積神經(jīng)網(wǎng)絡(luò)?如何MATLAB實現(xiàn)CNN?

評論