ICLR'25 | 基于記憶網(wǎng)絡(luò)和混合Prototype的時(shí)間序列異常檢測(cè)方法
今天給大家介紹一篇ICLR 2025中關(guān)于時(shí)間序列異常檢測(cè)的工作。這篇文章采用基于Memory Bank和Prototype的異常檢測(cè)方法,提出在此基礎(chǔ)上引入多尺度patch和多周期性的建模方法,進(jìn)一步提升時(shí)間序列異常檢測(cè)效果。
論文標(biāo)題:LEARN HYBRID PROTOTYPES FOR MULTIVARIATE TIME SERIES ANOMALY DETECTION
下載地址:??https://openreview.net/pdf?id=8TBGdH3t6a??
1.研究背景
時(shí)間序列異常檢測(cè)的主流方法,是使用正常的時(shí)間序列訓(xùn)練一個(gè)自編碼器,序列過(guò)一個(gè)Encoder生成表征,再經(jīng)過(guò)一個(gè)Decoder還原,通過(guò)reconstruction loss讓這個(gè)自編碼器能夠重構(gòu)正常的輸入序列。當(dāng)輸入一個(gè)異常序列時(shí),異常點(diǎn)位置的重構(gòu)loss會(huì)比較大,根據(jù)這個(gè)重構(gòu)loss判斷時(shí)間序列是否有異常。
這種方法的問(wèn)題在于,經(jīng)常會(huì)出現(xiàn)過(guò)泛化的現(xiàn)象。由于使用了大量時(shí)間序列數(shù)據(jù)進(jìn)行深度模型訓(xùn)練,模型的擬合解碼能力比較強(qiáng),即使是一個(gè)異常序列,使用上述方法得到的重構(gòu)loss可能也會(huì)比較小,影響了異常檢測(cè)的效果。比如下圖中粉色部分,第一行是異常序列,第二行是重構(gòu)序列,重構(gòu)序列將序列中異常的部分也還原出來(lái)了,重構(gòu)loss較小,誤判了異常序列。
為了解決這種問(wèn)題,業(yè)內(nèi)的一種做法是引入了memory network和prototype的異常檢測(cè)方法。下面首先介紹這種基礎(chǔ)方法,然后介紹ICLR 2025這篇文章在該方案基礎(chǔ)上的改進(jìn)。
2.基于Memory和Prototype的異常檢測(cè)
這種方法是在MEMTO: Memory-guided Transformer for Multivariate Time Series Anomaly Detection(NIPS 2023)中提出的。該方法的核心思路是通過(guò)記憶網(wǎng)絡(luò)加到自編碼器對(duì)于異常序列的還原難度。
設(shè)置多個(gè)prototype,每個(gè)prototype對(duì)應(yīng)一個(gè)embedding,隨機(jī)初始化。對(duì)于原始序列,使用Transformer Encoder生成每個(gè)時(shí)間點(diǎn)的embedding,和prototype embedding計(jì)算softmax后,加權(quán)融合到各個(gè)prototype embedding中,這是一個(gè)比較基礎(chǔ)的記憶網(wǎng)絡(luò)建模方法。這里使用滑動(dòng)更新的方式,用上一次prototype embedding和當(dāng)次加權(quán)融合的prototype embedding加權(quán)求和,公式如下:
通過(guò)上述方式,各個(gè)prototype embedding存儲(chǔ)了全量數(shù)據(jù)(正常序列)中不同類型的序列信息。接下來(lái),再利用類似的方式,利用query和prototype embedding計(jì)算softmax,對(duì)prototype embedding加權(quán)求和,得到每個(gè)時(shí)間步新的表征,再基于這個(gè)表征輸入Decoder進(jìn)行重構(gòu)。
通過(guò)這種方式,異常序列的還原難度變高了。因?yàn)閜rototype通過(guò)滑動(dòng)平均存儲(chǔ)了所有序列的表征,Decoder輸入的表征基于prototype embedding匯聚得到,這樣模型在解碼的時(shí)候,輸入的不只是當(dāng)前序列信息,而是所有序列和當(dāng)前序列類似的正常序列,增加了對(duì)異常點(diǎn)的還原難度。
3.混合Prototype引入
下面介紹ICLR2025這篇文章針對(duì)上述建模方法的改造。之前的方法主要生成每個(gè)時(shí)間步的表征,prototype也都是每個(gè)時(shí)間步表征生成的,無(wú)法有效涵蓋所有類型的時(shí)序片段。文中的核心是引入了多尺度patch粒度的表征和周期性的表征,進(jìn)而生成混合prototype,相當(dāng)于將prototype的類型變多,加強(qiáng)了prototype的豐富度,進(jìn)而使異常序列的還原難道進(jìn)一步提升了。
具體來(lái)說(shuō),文中引入了包括兩種類型的prototype表征,一種是基于多尺度patch的表征,另一種是基于多周期性的表征。多尺度patch的建模思路已經(jīng)比較常見,對(duì)于輸入的多變量序列,本文中通過(guò)不同尺寸大小的average pooling,得到不同尺度的patch embedding。每種尺度的patch,都使用前面提到的類似方法,基于softmax、滑動(dòng)平均進(jìn)行prototype embedding更新,以及輸入表征的重構(gòu)。
由于引入了不同尺度的patch,對(duì)于原始序列每個(gè)時(shí)間步的異常判斷,會(huì)使用包含該位置的所有尺度對(duì)應(yīng)的patch作為輸入,使用一個(gè)MLP進(jìn)行多尺度表征融合,得到最終每個(gè)時(shí)間步的最終表征。
此外,文中也引入了多周期的prototype,重點(diǎn)刻畫序列周期性。對(duì)原始序列進(jìn)行傅里葉變換后,選擇topK個(gè)頻率作為周期項(xiàng)窗口,根據(jù)該頻率進(jìn)行原始序列劃分,每個(gè)變量的時(shí)間序列周期性變化規(guī)律不同,因此每個(gè)變量的周期性prototype進(jìn)行單獨(dú)的學(xué)習(xí)。整體的prototype更新和表征重構(gòu)方式和多尺度patch類似,核心區(qū)別是周期性模塊是每個(gè)變量單獨(dú)學(xué)prototype embedding,而前面的多尺度patch是多變量不同尺度學(xué)一個(gè)prototype embedding。
4.實(shí)驗(yàn)效果
通過(guò)實(shí)驗(yàn)效果可以看出,本文提出的時(shí)間序列異常檢測(cè)方法在整體的效果上有顯著提升。
從可視化圖可以看到,文中的方法可以很清晰的將異常數(shù)據(jù)和正常數(shù)據(jù)分離開?;谟洃浘W(wǎng)絡(luò)重構(gòu)的表征也能更容易和異常數(shù)據(jù)分離開。
本文轉(zhuǎn)載自???圓圓的算法筆記??
