1.InceptionTime: Finding AlexNet for Time Series Classification
2.Github 代碼
3.論文筆記
目錄
時間序列分類和時間序列定義
時間序列分類(TSC)是機器學習的一個研究領域,主要研究如何將標籤分配給時間序列。HIVE-COTE算法精度高但是時間複雜度更高,.其中N爲一個序列的數量,T爲序列的長度。爲了解決精度和時間複雜度的問題,在Inception-v4體系結構的啓發下,提出了一個深度卷積神經網絡(CNN)模型的集合。
InceptionTime由五個深度學習模型的集成,每個模型通過級聯多個Inception模塊創建(Szegedy等人,2015),他們具有相同的架構,但初始權重值不同。如下圖:
時間序列的定義:
M=1就是常見的一維時間序列,M > 1的可以是多個導聯的ECG或者EEG等信號。
其他背景就不一一介紹了。
Iception網絡架構
nception網絡由兩個不同的殘差block組成,而ResNet由三個組成。對於Inception網絡,每個block由3個Inception模塊組成而不是傳統的全連接層。每個殘差block的輸入通過一個快捷的線性連接被傳送到下一個塊的輸入,從而通過允許梯度的直接流動來減輕梯度消失問題。
如下如 Inception 模塊:
當輸入是一個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的結果非常像,應該是因爲隨機初始化權重和隨機優化導致的。集成能夠克服這個問題,如下公式:
表示輸入時間序列屬於類集合的輸出概率, 等價於邏輯斯遆輸出在個隨機初始化模型上的平均值。關於TSC的增強神經網絡的更多細節可以在Ismail-Fawaz等人的論文中找到。
感受野(Receptive field)
對於時間數據,接收野可以被認爲是測量一維空間中神經網絡最大視場的理論值:它越大,網絡在檢測較長模式方面(理論上)變得越好。假設卷積步長爲1,計算網絡中每層的filter大小爲,,深度爲d的感受野
假設當前感受野爲, 增加兩層之後,感受野變爲
當卷積大小增大2時,感受野
下圖分析了在一個2層CNN中的感受野:
實驗建立
爲了能夠控制時間序列數據的長度、類的數量及其在時間上的分佈,使用0.0到0.1之間採樣的均勻分佈噪聲生成一個單變量時間序列。爲了將這個合成的隨機時間序列分配給某一類,我們在時間序列的預定義區域中注入一個振幅等於1的模式。通過更改此模式的位置,我們可以生成無限數量的類,而隨機噪聲將允許我們生成無限數量的時間序列實例。設置模式的持續長度爲一個樣本長度的1/10. 如下圖:
所有時間序列數據均爲z-標準化(包括合成序列),平均值爲零,標準差爲1。所有的模型都使用Adam優化算法進行訓練,所有的權值都使用Glorot的均勻技術進行隨機初始化。我們使用深度學習模型在不同運行中的中位數測試精度。
採用Friedman檢驗來拒絕無效假設;
進行了Benavoli等人推薦的成對事後分析,用Wilcoxon符號秩檢驗(Holmα(5%)修正)代替平均秩比較;
爲了將這種類型的比較可視化,使用了臨界差分圖,其中一條粗水平線顯示了在精度上沒有顯著差異的分類器集羣(一個集團)。
實驗過程
對於UCR數據集,其記過如下:
上圖中Inception Time和當前最好的算法HIVE-COTE在一個集團裏,但是這個模型更容易訓練。下圖能夠看到其精確和HIVE-COTE相比,Win/Tie/Loss = 40/6/39,這種差異在統計學上並不顯著。所以作者認爲他是算法應該是現在最好的。
圖中的Wine和Beef是兩個數據集,這兩個數據集包含來自不同類型牛肉/葡萄酒的光譜數據,目的是使用記錄的時間序列數據確定正確的肉類/葡萄酒類型。
提高精度的幾個方法:
(1)遷移學習
(2)使用變化的卷積核長度而不是固定的
模型的時間複雜度分析
使用 Nvidia Quadro P6000訓練一個由5個分類器集成的InceptionTime, 採用以此訓練的方式。
先研究輸入長度對訓練時間的影響,使用使用經過指數重採樣的InlineSkate數據集,結果如下圖:
InceptionTime的時間複雜度呈線性增長,小於HIVE-COTE2個數量級。在長序列分類中,明顯佔優勢。
在數據集大小方面,使用Satellite Image Time Series數據集,這個數據集中有100萬個數據。相同數量的訓練集下,還是InceptionTime的時間複雜度更優。
成對事後分析
對比了作者自己的模型和集成了5個不同的 ResNet網絡。
Win/Tie/Loss = 53/7/25, p-value < 0.01,作者認爲表明性能的顯著提高主要是由於他們提出的Inception網絡架構的改進。在DiatomSizeReduction數據中,優勢特別明顯。
精確的隨機性排除
InceptionTime集成不同個數的分類器時的性能,InceptionTime(x)表示集成x個分類器。當x>=5時,結果幾乎是差不多的。
超參數研究
使用UCR數據集
默認的參數:batch size = 64; depth = 6; filter length = 40; number of filters = 32.
batch size
粗線跨越的表示沒有顯著差別,所以batch size對結果幾乎沒有影響。
Bottleneck and residual connections
bottleneck 層
包含bottleneck層幾乎和不包含的結果一樣,但是這一層主要減低了特徵維度,減少時間複雜度。
殘差連接
作者發現有沒有殘差連接其實影響也不大…因爲這個連接的作用只是提高收斂程度,而不會改變測試精度。但在個別數據集有很大的影響,比如ShapeletSim。
深度
在模擬的數據集中研究,數據集大小爲128,類別只有2類,數據的長度可變。
對於長序列,深層的網絡精度更高。但太長時,模型基本不起任何作用。
進一步對比一個網絡包含9個inception模塊和3個inception模塊與5個inception模塊的差別,而不是簡單地添加幾個連接層。模塊數少時,感受野小,效果差。對於小數據集,單純增加連接層不能帶來很大的提高。
卷積核大小
訓練集大小爲128,類別爲2.
研究輸入序列的長度在卷積核大小不同時的精度變化:
當序列長度變長時,爲了獲得相同的精確度,需要更長filter。
因爲感受野由depth和filter的大小決定,如前文所述,直接研究感受野對模型的影響,使用仿真數據集,其結果如下圖,越長的模式在識別時需要越大的感受野。
然而,較長的過濾器會顯著增加網絡中參數的數量,可能會使小數據集過擬合。使用真實的數據集看起是否會過擬合。
研究不同長度的filter在UCR數據集下的精確度,這裏作者對比了三種情況,filter長度爲{10,20,40},{16,32,64},和{2,4,8}. 結果如下:
結果發現,很大和很小的filter都會降低模型的表現,只有當有足夠多數據集緩解過擬合時,大的filter可能會更優。
filter的數量
生成新的多個類別的數據,每個類別模式的有3位置不同。設定輸出長度我256.
其結果如下圖,類別越多,模型需要學習更過的特徵,需要更多的濾波器。文中沒有提及的,我覺得當類別超過5種時,模型分類已經吃力了。
文中使用的模型每層32個filter,爲了研究filter數量多少對真實數據的影響,作者增加和減少每層filter數量,觀察其精確度。結果如下:
當filter數量爲默認的兩倍時,模型表現很差,而減少filter數量,模型的表現只發生了輕微的變化。可能是因爲簡單地增加filter數量使得模型複雜度增高,產生過擬合。