A Time Series is Worth 64 Words: Long-term Forecasting with Transformers

A Time Series is Worth 64 Words: Long-term Forecasting with Transformers は、時系列の各チャネルを固定長の重複パッチに分割してトークンとし、チャネル間で重みを共有しつつ各チャネルを独立に処理する Transformer エンコーダモデル PatchTST を提案する論文である。Princeton University の Yuqi Nie らによって著され (他に IBM Research 所属の著者も)、2022 年に arXiv にプレプリントが発表され、2023 年の ICLR に採択された。

具体的には、長さ L_in の時系列の各チャネルに対して、サンプル内正規化 (ゼロ平均・単位分散) を施した後、パッチ長 P=16、ストライド S=8 でパッチ数 N = floor((L_in - P) / S) + 2 個のパッチに分割して各パッチを線形変換で d_model=128 次元に埋め込み、学習可能な位置エンコーディング (N×d_model 次元のパラメータを学習) を加算し、チャネルごとに独立に同一の Transformer エンコーダ (3 層、d_model=128、16 ヘッド、d_ff=256) を適用する。すると、チャネルごとに N パッチ分の d_model 次元のベクトルが得られるので、これを N×d_model 次元に flatten し、L_out 次元に線形変換し、サンプル内正規化の逆変換を適用してそのチャネルの予測系列とする。また、パッチの 40% をゼロマスクして元のパッチを再構成する自己教師あり事前学習スキームも提案している。

参考文献

paper
Yuqi Nie, Nam H. Nguyen, Phanwadee Sinthong, Jayant Kalagnanam. A time series is worth 64 words: Long-term forecasting with transformers. International Conference on Learning Representations (ICLR), 2023.

PatchTST の構造

以下の記述は2026年4月16日時点での最新リビジョン (204c21e) に基づく。
  • 各チャネルの長さ L_in の時系列に対して、サンプル内・チャネル内標準化を適用する (平均と標準偏差は最後に差し戻すので保存しておく)。
  • 各チャネルの時系列をパッチ長 P=16、ストライド S=8 で分割する。末尾に最終値を S 回繰り返してパディングし、N = floor((L_in - P) / S) + 2 個のパッチを得る。
    • ストライド S が 1 ならパディングしなくてもデータは漏れなくパッチ化できるが、2 以上のときデータが漏れる可能性がある。
  • 各パッチ (P=16 次元) を線形変換で d_model=128 次元に埋め込む。
  • 学習可能な位置エンコーディング (N×d_model 次元のパラメータ) を加算する。(ア)
  • 各チャネルを独立に同一の Transformer エンコーダ (以下) で処理する。
    • エンコーダ層 (以下) を 3 層積み重ねる。
      • N トークンの 128 次元入力を受け取る (イ)。
      • マルチヘッドアテンション層を適用する。
        • 入力をトークンごとに Q, K, V 用に 3×16×8 次元に線形変換して、16 ヘッドに分割する。
        • 16 ヘッド並列に Attention(Q, K, V) := softmax(QK^T/√d)V を適用する。
        • 各ヘッドからの出力を 16×8=128 次元に連結し、128 次元に線形変換する。
      • ドロップアウトする。
      • (イ) から残差接続する。
      • 層正規化する。(ウ)
      • 256 次元に線形変換、GELU 活性化、ドロップアウトする。
      • 再び 128 次元に線形変換、ドロップアウトする。
      • (ウ) から残差接続する。
      • 層正規化する。
  • 各チャネルの N×d_model 次元の出力を N×d_model 次元に flatten し、線形変換 (N×d_model 次元 → L_out 次元) を適用する (全チャネルで重みを共有する)。
  • 各サンプルの各チャネルに保存しておいた平均と標準偏差を差し戻し、予測系列とする。

脚注

backbone
PatchTST_supervised/models/PatchTST.py::Model には decomposition フラグ (True ならトレンド成分と残差成分を分けて別々の PatchTST を適用する) があるが、規定値・実験設定で使用されている形跡はない。実質的なモデル本体は PatchTST_supervised/layers/PatchTST_backbone.py::PatchTST_backbone である (このクラス自体は標準化とパディングをして TSTiEncoder に投げ、その結果を予測長に線形変換して逆標準化し出力するだけである)。