Transformer頻域消偏提升時序預測準確性
Transformer在時間序列中已經(jīng)應用比較廣泛。但是最近一些針對Transformer的研究工作指出,Transformer的self-attention機制在建模序列數(shù)據(jù)時,比較傾向于學習低頻的信息,而忽略了高頻信息,造成頻率偏差問題,影響了預測效果。
在時間序列預測中,這個問題也存在,為了解決這個問題,在KDD 2024上,大阪大學發(fā)表了一篇相關工作Fredformer,對Transfomrer在時間序列預測中的這種問題進行了解決。
論文標題:Fredformer: Frequency Debiased Transformer for Time Series Forecasting
下載地址:??https://arxiv.org/pdf/2406.09009v4??
1、背景
一些研究指出,transformer模型在進行時間序列預測時,會存在頻率偏差問題,也就是模型只關注到了序列數(shù)據(jù)中的低頻信息,忽略了高頻信息。這個問題在時間序列預測領域同樣存在。比如下圖是一些基于Transformer的預測模型,可以看到在預測結果中,模型的預測是比較平滑的,反映了整體的趨勢。但是對于高頻趨勢卻預測不出來。
為了進一步驗證這個問題,這篇文章首先進行了一些case study。預先設定3個頻率,根據(jù)這些頻率組成人造的時間序列數(shù)據(jù),使用Transformer模型進行訓練并預測。下圖反應了各個頻率的預測效果,訓練到50輪后,k1作為低頻信號已經(jīng)被擬合的loss比較小了,但是k3這個高頻信號卻學得很差,說明Transformer時間序列預測模型也存在這種問題。而右側的圖調整了各個頻率成分的權重后,高頻的k3被擬合的更好了,k1反而擬合的不好。說明造成這種頻率偏差問題的主要原因是各個成分的權重不同。這有點類似于多任務學習中,不同任務的數(shù)據(jù)量或者loss差別大,導致模型側重于某幾個任務的學習。
2、建模方法
為了解決上述的頻率bias問題,本文從平衡各個頻率成分的比例出發(fā),同時又將各個頻率成分的建模拆解開,盡量減小各個成分之間的影響。
整體的模型結構如下圖所示。首先,通過傅里葉變換將時間序列映射到頻域中。在頻域中,將時間序列進行分patch處理,并對每個patch的數(shù)據(jù)進行頻域中的歸一化。通過這種方式,讓每個頻率成分在patch內單獨建模,又讓每個頻率成分的振幅值域歸一化到同一水平上,防止某一頻率主導了模型學習。
對于每一個頻率patch進行獨立的Transfomrer建模。這個過程類似于iTransformer的操作,在變量維度使用Transformer。假設有N個頻域patch,有C個變量,那么會有N個Transformer。每個Transformer在變量維度計算self-attention,每個頻域的patch獨立進行建模。通過這種方式,盡量減小各個頻率之間的干擾。
最終,再將頻域的表征通過逆向傅里葉變換映射回時域,通過一個MLP網(wǎng)絡映射到最終輸出結果。
3、實驗效果
在實驗中,作者對比了不同預測窗口的多變量時間序列預測效果,本文提出的方法取得了顯著的效果提升。
從case分析來看,模型相比其他Transformer模型,在高頻信號的預測上有一個顯著的提升,對于極值點的預估更加準確。
本文轉載自 ??圓圓的算法筆記??,作者: Fareise
