圖/文 歐尼克斯實境互動工作室 許哲豪 2020/6/11
在智慧製造領域中,異常偵測(Anomaly Detection, AD)的種類非常多,在上一期「導入AI異常偵測技術讓傳產也能邁向智慧製造」[1]中已初步幫大家介紹了如何在只有正常生產資訊下利用非監督式學習的「一元分類(One Class Classification, OCC)」來進行異常偵測,本期內容將繼續延伸至時序型的異常偵測(Time-Series Anomaly Detection)。
在介紹如何偵測時序型資料異常之前,先幫大家科普一下時序型資料的基本性質。時序型資料是將觀測值依固定時間隔取得並記錄而得,多半具有連續性而非隨機值(如語音資料)組成,如各種感測器(溫度、濕度、亮度、重量、馬達轉速等)、股匯價、零售銷售金額、交通流量等等。當連續取得一定數量(時間長度)資料後,便有機會建立預測模型或分析出異常工作範圍。
時序型資料通常會有「趨勢(Trend)」、「季節性(Seasonality) 」、「週期性(Cycles) 」等特性。如Fig. 1所示為一多年的時序型資料範例,第一列為原始數據。第二列為趨勢圖,主要利用前後N個鄰近點平均而得,可看出長期的變化傾向,可能向上、持平、下降或振盪。第三列為季節性,主要是找出資料重覆變化的週期,如Fig. 1可看出夏、冬季有明顯不同,就像夏天氣溫高、毛衣銷售額低等關係。當然這裡的季節也可視為一個月、一週、一天或一個特定週期性時間長度。而季節性可看成週期性的一個特殊表現,一般指週期性不一定是固定頻度發生,其長度也不一定和季節性相等,亦可以是疊加在季節性上的短週期。透過加法分解(Yt=St+Tt+Rt)或乘法分解(Yt=St*Tt*Rt)就能得到第四列的殘差值(Residual)或稱誤差值(Error)。在許多統計分析的工具中都有提供相關的時間序列分解工具(Time Series Decomposition Tools或Seasonal and Trend decomposition using Loess, STL分解法),這裡就不多做介紹。
Fig. 1 時序型資料及其分解。由上而下分別為原始資料、趨勢、季節性及殘差。[2](點擊圖放大) |
傳統序列型資料可能包括時序型和非時序型(如DNA分析),而時序型資料又可分為單一信號來源及多信號來源。而時序資料類型因不同的用途又可能包含已標註(多元或二元分類)、半標註(多元或二元分類)及未標註(一元分類)資料。其用途可能又分為數值預測及異常偵測。由於這類型的算法及模型相當多[3],接下來本文將重點放在單一信號源未標註分類之時序資料異常偵測進行介紹,主要包括三大技術領域「傳統統計型」、「機器學習聚類型」及「深度學習時序型」。
傳統統計型
傳統上對於時間序列型資料多半通過統計相關手法找出一些變化的規律(或說函數、模型),如此便有機會用來分析合理變化區間,進而作為預測及異常偵測的依據,像是生產數據、原物料消耗、銷售金額、市場預估等領域都經常會用。較常見的有「自迴歸模型(Autoregressive Models, AR)」[4]、「向量自迴歸模型(Vector Autoregression Models, VAR) 」 [5]、「移動平均模型(Moving Average Models, MA) 」[6]、「AR及MA混合模型(Autoregressive Integrated Moving Average Models, ARIMA) 」[7]等。而這些方法多半基於用過去一段時間內曾經發生的事來推估當下即將發生的事,較適合短期變動較不劇烈的資料。若目前值和預測值產生超過臨界值時就代表異常發生。其主要公式如Fig. 2所示,以下就簡單說明之。
AR主要是利用自身的前N筆資料來預測當下這筆資料,並假設這些資料存在一個線性關係(常數項c及隨機誤差ε)且不會有太誇張的變動,是由一般線性迴歸(Linear Regression)所演變而來的。
VAR類似AR,主要改善AR只能有一個變數,可容納多個變數在同一樣本時間內發生的變化,相當於多組數據的線性組合。
MA不同於前兩種方法採用一種平均值μ加q階預測誤差的方式組合而成,隨階數越大則越不受隨機產生的雜訊(數值變動較大)影響,因此較不合適數值變化較快的分析。
ARIMA則整合了AR及MA的特性,p為自迴歸項數(前N筆資料),q為滑動平均項數而d為使之平穩所做的差分次數(階數),而其中L為滯後算子(Lag Operator)。
Fig. 2 統計式時序型異常測模型公式 [4,5,6,7](點擊圖放大) |
在機器學習(Machine Learning, ML)的非監督學習(Unsupervised Learning, UL)領域中有很多聚類(Clustering)的算法,它幾乎不用人的介入就可以幫助大家從一堆資料找出那些資料靠的比較近(聚成一堆),如此便有機會找到異常(離群)者。雖然聚類算法在高維資料時計算複雜度變得極高且當遇到高稀疏矩陣(如影像)時就更難實現,好在這裡要討論的時間序列資料僅為一維連續資料,所以還不算太麻煩。當聚類完成後就能找到簇(或稱叢集)(Cluster)的中心及半徑大小,所以當新的資料再進來時就能計算離這些簇的距離,當超出臨界值時就視為異常資料。接下來就簡單幫大家介紹一下常見的算法,包括「K群平均群聚(K-Mean Clustering)」[8]、「基於密度空間聚類(Density-Based Spatial Clustering of Applications with Noise, DBSCAN)」[9]、「區域離群因子(Local Outlier Factor, LOF)」[10]、「孤立森林(Isolation Forest, IF)」[11]。其主要概念示意圖如Fig. 3所示,以下就簡單說明之。
K-Mean聚類法主要原理是先隨意指定要聚成K個群,再隨意給定K個中心,再對所有點計算和這K個中心的距離並分群。再以新的群重新計算出新的中心,並反覆前項動作,直至K個中心不再移動(或小到一個值)就結束聚類動作。通常一開始就要指定要分幾群會有點難決定,決定錯了可能會造成聚類效果不佳,有時會需要其它方式輔助決定要分多少群。在一維時序型資料中若直接用單點資料去聚類可能會受到雜訊嚴重干擾。如Fig. 3a左圖所示,先將資料分割成一小段(W個點)或稱為視窗(window),再滑動這個視窗取得N筆W維大小資料的集合,最後再以這N筆資料進行K-Mean聚類,就能得出較合的序波形分類(如Fig. 3a右圖)、分類中心及半徑。
DBSCAN是一種基於資料分佈密度進行聚類的算法,主要有二個參數,距離半徑ε(eps)和以自己為中心的半徑內最少有多少個點(minPts),由此即可決定每個點是否和相鄰點為同一類。它不像K-Mean須先指定類別數,也可對分佈不平均的資料進行良好聚類。如Fig. 3b左圖所示,共聚成六類,而3,5,6類距離較遠,則可視為離群(異常)者。如[9]文中提及是把整年溫度的記錄值,先去除季節性素,再用DBSCAN,當設定適當的eps及minPts後就能得到不錯的離群點偵測結果,如Fig. 3b右圖所示。
LOF不是基於資料密度的算法,它採用找最靠近的第K個點的距離(k-distance)作為基準,而可達距離則視k-distance和指定點距離何者為大做為基準。如Fig. 3c左圖所示,k=4時,k-distance(o)為虛線圓所包圍範圍。而o對p2的可達距離因大於k-distance(o),所以即為兩點之間的距離,而對p1其距離較小,所以可達距離則為k-distance(o)。接著計算局部可達密度(local rechability density),即小於k-distance內的點的平均可達距離合的倒數。藉此就能反過來得知局部異常因子(local outlier factor),如果點比較疏遠則異常的程度就越高,和DBSCAN只能分是或不是異常點不一樣。如Fig. 3c右圖所示,若想知道p點和C簇同群的程度有多高時,若指定p點最少鄰近點數為3時,則透過指定d的最小距離和最大距離的倍數,就能得到p點異常(距離較遠)的程度。
IF主要是假設數據空間中分佈稀疏的區域若有數據落在此區域時即可視為異常。實施時任意分割成兩個區域,再一直分割直到每個區域都只有一個點,得到一顆獨立樹,再將所有樹連結在一起就變成孤立森林。當樹越矮(分支越短)時,則表示越早被孤立,是異常點的機會越大。如Fig. 3d左圖上,x1切很12次才被分割出來,而x0則4次就被分割出來,則x0為異常點的機會就較大。而Fig. 3d右圖則以異常得分的等高線及色彩表示,很容易就可看出大於0.6的區即為異常潛在區。
Fig. 3 常見機器學習之非監督學習聚類法[8,9,10,11](點擊圖放大)
深度學習時序型
近年來深度學習(神經網路)技術崛起,除了可用於找出空間特徵關係外,在分析時序型資料特徵時亦表現不錯,主要依賴大量參數去記憶及擬合。一般深度學習需要大量標註過的資料來進行監督式學習,但時序型資料則有個好處,可利用連續資料的前面60%作為訓練,接下來的20%作為驗證,最後的20%當成測試(分配比例可依需求不同調整),如此就可省去標註的人力及時間,變相成為非監督式學習,如此就更精準的進行預測及偵測異常。接下來就簡單幫大家介紹一下常見的算法,包括「卷積神經網路(Convolutional Neural Networks, CNN)」[12]、「長短期記憶(Long Short Term Memory, LSTM)」[13]、「門控循環單元(Gated recurrent unit, GRU)」[14]及「自動編碼器(Autoencoder, AE)」[15]。
CNN是一種整合卷積層(Convolution Layer)、最大池化層(Max. Pooling Layer)、稠密層(Dense Layer)及輸出層(Output Layer)的多層神經網路架構(如Fig. 4a下方所示)。一般常用於影像分類、物件偵測等應用,這裡則是先把時序信號先變成一小段向量如同一維影像方式處理。如Fig. 4a上方所示,藍色線為原始時序資料,黃色線為對訓練集的預測的結果,而紅色線則是對測試集的預測結果,藍色垂直虛線則為真實發生異常的位置,當實際值和預測值有很大落差時即為異常發生。
LSTM屬於循環神經網路(Recurrent Neural Network, RNN)的一種變形應用。每個節點有一個輸入Xt,同時會接收上一個節點傳來的節點狀態(cell state,Ct-1)及隱藏狀態(hidden state, Ht-1),計算後除輸出Yt以外,還會將節點狀態(Ct)和隱藏狀態(Ht)傳遞到下一個節點。透過遺忘門(Forget Gate)來選擇忘記不重要的,而重要的就會透過輸入門(Input Gate)決定保留多少,同時決定輸出門(Output Gate)最終輸出結果,如Fig. 4b所示。
GRU是LSTM演化出來的,主要改善其計算量,更加容易訓練,其得到結果接近LSTM。由Fig. 4c中可看出其結構已簡化許多,精簡到只剩重置門(Reset Gate)及更新門(Update Gate)。
AE是一種將高維資料經過編碼後得到低維特徵,再透過解碼後還原回高維資料的手段。透過此種方式就能找出正常數據的主要表徵參數,當異常內容出現時便無法重新還原出來。Fig. 4d是一種概念示意圖,至於要用多少層、多少參數量才能正確還原則視不同應用而有不同。
最後用一個簡單的案例[16]來比較ARIMA和LSTM的預測的效果。如Fig. 5所示,藍色線為原始資料,而紅色線是訓練資料預測結果,而綠色線是測試資料預測結果。可看出ARIMA雖然大致變化方向正確,但實際誤差值仍偏大,而LSTM則非常接近。若是用這樣的預測結果來和目前值比對,即可精準令超出臨界值的內容發出警報。
Fig. 5 ARIMA及LSTM預測結果比較圖[16](點擊圖放大) |
小結
時序型資料在智慧製造是不可或缺的資料來源。對於大部份時間都是工作正常的情況,若有這些算法來幫忙偵測異常狀態,相信對時序型資料的異常偵測會有明顯助益。由於不同型態的時序型資料可能要有不同的算法協助,這裡無法一一說明,亦無法完全涵蓋所有應用,希望藉由這篇文章能幫大家多一點概念,讓智慧製造的異常偵測不再是無從下手。
*本文同步發行於歐尼克斯實境互動工作室部落格及AI HUB,歡迎連結至AI HUB網站【社群互動】下【AI技術交流區】瀏覽更多精采文章*
參考文獻
[1] 許哲豪,“導入AI異常偵測技術讓傳產也能邁向智慧製造”
https://omnixri.blogspot.com/2020/06/ai-hubai.html
[2] Daitan, "Follow A Visual Guide to Time Series Decomposition Analysis"
https://medium.com/better-programming/a-visual-guide-to-time-series-decomposition-analysis-a1472bb9c930
[3] Lee hoseong (Hoya012), Github - awesome anomaly detection
https://github.com/hoya012/awesome-anomaly-detection?fbclid=IwAR1MQQ5DK91EeuPvhnv1MnTQ70ObJvkdEQCvEeNz3R2BWq6lYgCMXJYKViQ
[4] 維基百科,自迴歸模型(AR)
https://zh.wikipedia.org/wiki/%E8%87%AA%E8%BF%B4%E6%AD%B8%E6%A8%A1%E5%9E%8B
[5] 維基百科,向量自迴歸模型(VAR)
https://zh.wikipedia.org/wiki/%E5%90%91%E9%87%8F%E8%87%AA%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B
[6] 維基百科,移動平均模型(MA)
https://zh.wikipedia.org/wiki/%E7%A7%BB%E5%8A%A8%E5%B9%B3%E5%9D%87%E6%A8%A1%E5%9E%8B
[7] 維基百科,AR及MA混合模型(ARIMA)
https://zh.wikipedia.org/wiki/ARIMA%E6%A8%A1%E5%9E%8B
[8] Tsuyoshi Id´e, “Why does Subsequence Time-Series Clustering Produce Sine Waves?”
https://ide-research.net/papers/2006_PKDD_Ide.pdf
[9] Mete ÇELİK,"Anomaly Detection in Temperature Data Using DBSCAN Algorithm"
https://www.researchgate.net/publication/233919690_Anomaly_Detection_in_Temperature_Data_Using_DBSCAN_Algorithm
[10] Markus M. Breunig,"LOF: Identifying Density-Based Local Outliers"
https://www.dbs.ifi.lmu.de/Publikationen/Papers/LOF.pdf
[11] Fei Tony Liu, "Isolation Forest"
https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf
[12] MOHSIN MUNIR, "DeepAnT: A Deep Learning Approach for Unsupervised Anomaly Detection in Time Series"
https://www.dfki.de/fileadmin/user_upload/import/10175_DeepAnt.pdf
[13] Sepp Hochreiter,"Long Short-Term Memory"
https://www.researchgate.net/publication/13853244_Long_Short-term_Memory
[14] Kyunghyun Cho,"Learning Phrase Representations Using RNN Encoder-Decoder for Statistical Machine Translation"
https://arxiv.org/abs/1406.1078
[15] Mayu Sakurada, "Anomaly Detection Using Autoencoders with Nonlinear Dimensionality Reduction"
https://dl.acm.org/doi/10.1145/2689746.2689747
[16] Sonam Srivastava, "Sonam SrivastavaDeep Learning in Finance"
https://towardsdatascience.com/deep-learning-in-finance-9e088cb17c03
沒有留言:
張貼留言