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

卷積神經網絡算法代碼matlab
cnn卷積神經網絡matlab代碼
什么是卷積神經網絡?如何MATLAB實現CNN?

評論