InceptionTime: Finding AlexNet for Time Series Classification

1.InceptionTime: Finding AlexNet for Time Series Classification
2.Github 代碼
3.論文筆記

時間序列分類和時間序列定義

時間序列分類(TSC)是機器學習的一個研究領域,主要研究如何將標籤分配給時間序列。HIVE-COTE算法精度高但是時間複雜度更高,O(N2T4)O(N^2 ·T^4).其中N爲一個序列的數量,T爲序列的長度。爲了解決精度和時間複雜度的問題,在Inception-v4體系結構的啓發下,提出了一個深度卷積神經網絡(CNN)模型的集合。
InceptionTime由五個深度學習模型的集成,每個模型通過級聯多個Inception模塊創建(Szegedy等人,2015),他們具有相同的架構,但初始權重值不同。如下圖:

時間序列的定義:
2
M=1就是常見的一維時間序列,M > 1的可以是多個導聯的ECG或者EEG等信號。

其他背景就不一一介紹了。

Iception網絡架構

3
nception網絡由兩個不同的殘差block組成,而ResNet由三個組成。對於Inception網絡,每個block由3個Inception模塊組成而不是傳統的全連接層。每個殘差block的輸入通過一個快捷的線性連接被傳送到下一個塊的輸入,從而通過允許梯度的直接流動來減輕梯度消失問題。
如下如 Inception 模塊:
1
當輸入是一個M維的多元時間序列,是先經過Inception模塊中的“bottleneck”層。這層中使用長度爲1,步長爲1的m個filter將一個M維的MTS轉爲m維(m<<M),目的是減少維度,同時減低模型複雜度,減輕過擬合問題。這層中使用的filter可以很大,甚至比ResNet的大10倍。這裏同時使用多個不同大小的filter處理輸入。如圖Fig1中3個不同大小的卷積。
爲了使模型對微小變化保持不變,在bottleneck層後添加類似MaxPooling的操作。這樣做同時進一步降低維度。
最後將多個並列的 卷積層-最大池化層合併構成當前Inception模塊輸出。
這篇文章中,作者使用的Inception模塊參數:3組filter,每組32個,長度分別爲{10,20,30}。

集合

作者提出的InceptionTime model 由5個Inception網絡集合而成。單個Inception網絡的精度存在高偏差的問題,與ResNet的結果非常像,應該是因爲隨機初始化權重和隨機優化導致的。集成能夠克服這個問題,如下公式:
4

y^ic\hat{y}_{i,c}表示輸入時間序列xix_{i}屬於類cc,集合的輸出概率, 等價於邏輯斯遆輸出σc\sigma_{c}nn個隨機初始化模型上的平均值。關於TSC的增強神經網絡的更多細節可以在Ismail-Fawaz等人的論文中找到。

感受野(Receptive field)

對於時間數據,接收野可以被認爲是測量一維空間中神經網絡最大視場的理論值:它越大,網絡在檢測較長模式方面(理論上)變得越好。假設卷積步長爲1,計算網絡中每層的filter大小爲kik_ii[1,d]i \in[1, d],深度爲d的感受野
1+i=1d(ki1)1+\sum_{i=1}^{d}\left(k_{i}-1\right)
假設當前感受野爲RFRF', 增加兩層之後,感受野變爲RF+2×(k1).R F^{\prime}+2 \times(k-1).
當卷積大小增大2時,感受野RF+2×d.R F^{\prime}+2 \times d.
下圖分析了在一個2層CNN中的感受野:
5

實驗建立

爲了能夠控制時間序列數據的長度、類的數量及其在時間上的分佈,使用0.0到0.1之間採樣的均勻分佈噪聲生成一個單變量時間序列。爲了將這個合成的隨機時間序列分配給某一類,我們在時間序列的預定義區域中注入一個振幅等於1的模式。通過更改此模式的位置,我們可以生成無限數量的類,而隨機噪聲將允許我們生成無限數量的時間序列實例。設置模式的持續長度爲一個樣本長度的1/10. 如下圖:
6
所有時間序列數據均爲z-標準化(包括合成序列),平均值爲零,標準差爲1。所有的模型都使用Adam優化算法進行訓練,所有的權值都使用Glorot的均勻技術進行隨機初始化。我們使用深度學習模型在不同運行中的中位數測試精度。
採用Friedman檢驗來拒絕無效假設;
進行了Benavoli等人推薦的成對事後分析,用Wilcoxon符號秩檢驗(Holmα(5%)修正)代替平均秩比較;
爲了將這種類型的比較可視化,使用了臨界差分圖,其中一條粗水平線顯示了在精度上沒有顯著差異的分類器集羣(一個集團)。

實驗過程

對於UCR數據集,其記過如下:
6
上圖中Inception Time和當前最好的算法HIVE-COTE在一個集團裏,但是這個模型更容易訓練。下圖能夠看到其精確和HIVE-COTE相比,Win/Tie/Loss = 40/6/39,這種差異在統計學上並不顯著。所以作者認爲他是算法應該是現在最好的。
7圖中的Wine和Beef是兩個數據集,這兩個數據集包含來自不同類型牛肉/葡萄酒的光譜數據,目的是使用記錄的時間序列數據確定正確的肉類/葡萄酒類型。

提高精度的幾個方法:
(1)遷移學習
(2)使用變化的卷積核長度而不是固定的

模型的時間複雜度分析

使用 Nvidia Quadro P6000訓練一個由5個分類器集成的InceptionTime, 採用以此訓練的方式。
先研究輸入長度對訓練時間的影響,使用使用經過指數重採樣的InlineSkate數據集,結果如下圖:
7
InceptionTime的時間複雜度呈線性增長,小於HIVE-COTE2個數量級。在長序列分類中,明顯佔優勢。
在數據集大小方面,使用Satellite Image Time Series數據集,這個數據集中有100萬個數據。相同數量的訓練集下,還是InceptionTime的時間複雜度更優。8

成對事後分析

對比了作者自己的模型和集成了5個不同的 ResNet網絡。
9
Win/Tie/Loss = 53/7/25, p-value < 0.01,作者認爲表明性能的顯著提高主要是由於他們提出的Inception網絡架構的改進。在DiatomSizeReduction數據中,優勢特別明顯。

精確的隨機性排除

InceptionTime集成不同個數的分類器時的性能,InceptionTime(x)表示集成x個分類器。當x>=5時,結果幾乎是差不多的。
10

超參數研究

使用UCR數據集
默認的參數:batch size = 64; depth = 6; filter length = 40; number of filters = 32.

batch size

11
粗線跨越的表示沒有顯著差別,所以batch size對結果幾乎沒有影響。

Bottleneck and residual connections

bottleneck 層

包含bottleneck層幾乎和不包含的結果一樣,但是這一層主要減低了特徵維度,減少時間複雜度。
12

殘差連接

作者發現有沒有殘差連接其實影響也不大…因爲這個連接的作用只是提高收斂程度,而不會改變測試精度。但在個別數據集有很大的影響,比如ShapeletSim。
13

深度

在模擬的數據集中研究,數據集大小爲128,類別只有2類,數據的長度可變。
14
對於長序列,深層的網絡精度更高。但太長時,模型基本不起任何作用。
進一步對比一個網絡包含9個inception模塊和3個inception模塊與5個inception模塊的差別,而不是簡單地添加幾個連接層。模塊數少時,感受野小,效果差。對於小數據集,單純增加連接層不能帶來很大的提高。
15

卷積核大小

訓練集大小爲128,類別爲2.
研究輸入序列的長度在卷積核大小不同時的精度變化:
16
當序列長度變長時,爲了獲得相同的精確度,需要更長filter。
因爲感受野由depth和filter的大小決定,如前文所述,直接研究感受野對模型的影響,使用仿真數據集,其結果如下圖,越長的模式在識別時需要越大的感受野。
17
然而,較長的過濾器會顯著增加網絡中參數的數量,可能會使小數據集過擬合。使用真實的數據集看起是否會過擬合。
研究不同長度的filter在UCR數據集下的精確度,這裏作者對比了三種情況,filter長度爲{10,20,40},{16,32,64},和{2,4,8}. 結果如下:18
結果發現,很大和很小的filter都會降低模型的表現,只有當有足夠多數據集緩解過擬合時,大的filter可能會更優。

filter的數量

生成新的多個類別的數據,每個類別模式的有3位置不同。設定輸出長度我256.
其結果如下圖,類別越多,模型需要學習更過的特徵,需要更多的濾波器。文中沒有提及的,我覺得當類別超過5種時,模型分類已經吃力了。
19
文中使用的模型每層32個filter,爲了研究filter數量多少對真實數據的影響,作者增加和減少每層filter數量,觀察其精確度。結果如下:
20
當filter數量爲默認的兩倍時,模型表現很差,而減少filter數量,模型的表現只發生了輕微的變化。可能是因爲簡單地增加filter數量使得模型複雜度增高,產生過擬合。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章