PatchTST: 基于Transformer的長時間序列預測
本文中了 2023 ICLR。PatchTST 作為 Transformer-based 預測模型,它是和計算機視覺中的 ViT 最相似的一篇論文(文章標題也很像)。
它成功超過了 DLinear,也證明了 DLinear 中 Transformer可能不適合于序列預測任務的聲明是值得商榷的。
論文標題:
A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
論文鏈接:https://arxiv.org/pdf/2211.14730.pdf
代碼鏈接:https://github.com/yuqinie98/patchtst
建議先看一下下面關于 DLinear 的回答和 DLinear 論文:
https://www.zhihu.com/question/493821601/answer/2506641761
https://arxiv.org/pdf/2205.13504.pdf
1.1 Patching
本文的核心思想就是 Patching,這和 Preformer 中的核心思想很相似,只不過效果要比 Preformer 好不少。具體來說,它們都是將時間序列分成若干個時間段(Preformer 里用的術語是 segment,本文用的是 patch,實際上是差不多的),每一個時間段視為一個 token(這不同于很多 Transformer-based 模型將每一個時間點視為一個token)。
Preformer 的論文和詳細解析如下:
https://arxiv.org/pdf/2202.11356.pdf
https://zhuanlan.zhihu.com/p/536398013
分 patch 的結構如下圖所示。對于一個單變量序列(為什么是單變量,可以看下一小節(jié) Channel-independence 中的介紹),將其劃分為 個 patch(可以是有重疊的,也可以是無重疊的,無重疊的情況就相當于 Preformer 中的均勻分段),每個 patch 的長度為 。
然后將每個 patch 視為一個 token,進行 embedding 以及加上位置編碼,即可直接輸入到普通的 Transformer 中(圖中的 Transformer Encoder)。最后將向量展平之后輸入到一個預測頭(Linear Head),得到預測的單變量輸出序列。
分 patch(時間段)的好處主要有四點:
1. 降低復雜度,因為 Attention 的復雜度是和 token 數量成二次方關系。如果每一個 patch 代表一個 token,而不是每一個時間點代表一個 token,這顯然降低了 token 的數量。
2. 保持時間序列的局部性,因為時間序列具有很強的局部性,相鄰的時刻值很接近,以一個 patch 為 Attention 計算的最小單位顯然更合理。
3. 方便之后的自監(jiān)督表示學習,即 Mask 隨機 patch 后重建。
4. 分 patch 還可以減小預測頭(Linear Head)的參數量。如果不分 patch 的話,Linear Head 的大小會是 , 是輸入序列長度, 是序列個數, 是預測序列長度;如果分 patch 的話,Linear Head 的大小是 , 是 patch 個數要遠小于 。因此,分 patch 之后,Linear Head 參數量大大減小,可以防止過擬合。
1.2 Channel-independence
很多 Transformer-based 模型采用了 channel-mixing 的方式,指的是,對于 多元時間序列(相當于多通道信號) ,直接將時間序列的所有維度形成的向量投影到嵌入空間以混合多個通道的信息。Channel-independence 意味著每個輸入 token 只包含來自單個通道的信息。本文就采用了 Channel-independence,DLinear 中也采用了這種方式。
如上圖,本文將多元時間序列(維度為 )中每一維單獨進行處理,即將每一維分別輸入到 Transformer Backbone 中,將所得預測結果再沿維度方向拼接起來。這相當于將不同維度視為獨立的,但 embedding 和 Transformer 的權重在各個維度是共享的。 這樣的話,每個 Transformer Backbone 只需要處理單變量序列。
1.3 自監(jiān)督表示學習
這就很直觀了,直接 mask 掉一些 patch 然后進行重建即可。對于每一個 token(patch),它通過 Transformer Encoder 后輸出維度是 ,由于該 patch 本身的長度是 ,因此要重建它的話,再加上一個 的 Linear 層即可。作者還說明了分 patch 對 mask 重建來進行自監(jiān)督學習的好處: mask 一個時間點的話,直接根據相鄰點插值就可以重建,這就完全沒必要學習了,而 mask 一個 patch 來重建的話則更有意義更有難度。
先進行自監(jiān)督訓練再微調下游預測任務,效果會比直接訓練下游預測任務要好。
實驗結果
可以看到 PatchTST 的效果超過了 DLinear 以及其它的 Transformer-based 模型。
總結
論文最核心的兩點, 分 patch、通道獨立、以及自監(jiān)督 mask 重建 的做法在之前的時間序列相關論文中都已經存在了,所以我認為創(chuàng)新性并不是很強,但是效果不錯。
評論
圖片
表情
