Gateformer: Advancing Multivariate Time Series Forecasting through Temporal and Variate-Wise Attention with Gated Representations

Gateformer: Advancing Multivariate Time Series Forecasting through Temporal and Variate-Wise Attention with Gated Representations [paper] は、各変量の系列から「時間依存性埋め込み」と「グローバル時間埋め込み」をゲート結合して「変量埋め込み」を構築し、変量間セルフアテンション層の出力と「変量埋め込み」を再びゲートで結合して予測を生成する多変量時系列予測モデル Gateformer を提案する論文である。New York University (ニューヨーク大学) の Yu-Hsiang Lan らによって著された (他に同大学 Department of Neurosurgery 所属の著者も)。2025 年の FMSD @ ICML に採択された。

各変量の系列を RevIN で正規化し、2 つの経路で独立に処理する。(1) 系列をパッチ列に分割し線形変換で埋め込んだ後、パッチ間セルフアテンション層と FFN を適用して「時間依存性埋め込み」を得る。(2) 系列全体を共有 MLP で変換して「グローバル時間埋め込み」を得る。2 つの埋め込みをシグモイド関数を用いたゲートで凸結合することで「変量埋め込み」を生成する。次に、全変量の「変量埋め込み」を積み上げた行列に変量間セルフアテンション層を適用して「変量交互作用埋め込み」を得、同様のゲート機構で「変量埋め込み」(交互作用なし) と結合する。最後に線形層で予測を出力する。

13 の実世界ベンチマークデータセットで最先端の性能を達成し、130 設定中 91 設定で 1 位、122 設定で 2 位以内の性能を示した。他の Transformer ベースおよび LLM ベースの予測モデルに組み込んだ場合、元のモデルに対して最大 20.7% の性能向上をもたらした。

著者らは、多変量時系列予測において時間方向 (系列内) と変量間 (系列間) の両依存性を Transformer アーキテクチャで効果的に統合する方法が不明確であるという問題意識をもっている。点ごとのトークンを用いる先行手法は意味情報を欠き単純な線形モデルに劣ることが示されており、PatchTST はパッチ単位で時間方向依存性のみを捉え変量間依存性を無視し、iTransformer は変量全体を 1 ベクトルに線形変換して変量間依存性のみを捉え時間方向依存性を無視する。

参考文献

paper
Yu-Hsiang Lan, Eric K. Oermann. Gateformer: Advancing multivariate time series forecasting through temporal and variate-wise attention with gated representations. Workshop on Foundation Models for Structured Data (FMSD) at ICML 2025, 2025.

Gateformer の構造

以下の記述は 2025 年 5 月 2 日時点での最新リビジョン (298fd10) に基づく。主要なモジュールは以下である。

「グローバル時間埋め込み」層は (C, L_in) 次元の入力を受け取り、チャネルごとに Linear(L_in → d_model) で変換し、ドロップアウトして (C, d_model) を出力する。

「パッチ埋め込み」層は (C, L_in) 次元の入力を受け取り、右端に stride ステップ分の複製パディングを施した後、サイズ patch_len、ストライド stride の窓で unfold してパッチ列 (C, P, patch_len) を作り、バッチ次元と C 次元を統合して (C×P, patch_len) とし、Linear(patch_len → d_model) と正弦コサイン位置符号化を加算して d_model 次元に変換し、ドロップアウトして (C×P, d_model) を出力する。パッチ数 P = (L_in − patch_len) / stride + 2 である。

ハイパーパラメータ規定値は d_model = 512、FFN 中間次元数 2048、ヘッド数 8 (各ヘッド次元 64)、TransformerEncoder 層数 e_layers = 2、patch_len = 8、stride = 8、ドロップアウト率 0.1 である。

Gateformer 全体

  • (L_in, C) 次元の入力時系列を受け取る。
  • チャネルごとに時間方向の平均と標準偏差を計算し、入力を正規化する (ア)。
  • 「グローバル時間埋め込み」層を適用して (C, 512) 次元の vG を得る (イ)。
  • チャネル次元と時間次元を転置して (C, L_in) とし、「パッチ埋め込み」層を適用して (C×P, 512) のパッチ系列を得る。
  • 時間方向 TransformerEncoder (以下) を適用して (C×P, 512) を得る。
  • (C, P, 512) に reshape し最後の 2 次元を転置して (C, 512, P) とし、以下を適用して (C, 512) 次元の vT を得る (ウ)。
    • 最後の 2 次元を平坦化して (C, 512×P) とする。
    • Linear(512×P → 512) を適用して (C, 512) とする。
    • ドロップアウトする。
  • gate = σ(gate_w1(vG) + gate_w2(vT)) を計算する。
  • 「変量埋め込み」s = gate ⊙ vG + (1−gate) ⊙ vT を得る (エ)。
  • 変量間 TransformerEncoder (以下) を適用して Ocv (C, 512) を得る (オ)。
  • gate = σ(gate_w3(s) + gate_w4(Ocv)) を計算する。
  • enc_out = gate ⊙ s + (1−gate) ⊙ Ocv を得る。
  • Linear(512 → L_out) を適用して (C, L_out) とし、転置して (L_out, C) とする。
  • (ア) で計算した平均・標準偏差で逆正規化し、最終出力 (L_out, C) とする。

TransformerEncoder 層

  • TransformerEncoderLayer (Pre-LN、以下) を 2 層積み重ねる。時間方向では (C×P, 512)、変量間では (C, 512) に適用する。
    • (N, 512) 次元の入力を受け取る (ア)。
    • 層正規化を適用する。
    • 8 ヘッドマルチヘッドアテンション (ヘッド次元 64) を適用する。
    • ドロップアウトする。
    • (ア) から残差接続する (イ)。
    • 層正規化を適用する。
    • 2048 次元に線形変換し、ReLU 活性化する。
    • ドロップアウトする。
    • 再び 512 次元に線形変換する。
    • ドロップアウトする。
    • (イ) から残差接続する。