Autoformer – Transformersは時系列予測に効果的
はじめに
Hugging Faceは、Autoformerモデルが🤗 Transformersライブラリで今利用可能になったことを発表しました。この投稿は、Transformerベースのモデルが時系列予測に効果的であることを示し、DLinearなどの単純な線形モデルが優れているという主張に反論しています。
ベンチマーク - Transformers vs. DLinear
Traffic、Exchange‑Rate、Electricityデータセットにおいて、AutoformerモデルはDLinearモデルよりも低いMASEを達成します。具体的には、AutoformerのMASE値はTrafficで0.910、Exchange‑Rateで1.087、Electricityで0.751であり、DLinearのMASE値はそれぞれ0.965、1.690、0.831です。これにより、Autoformerはすべての3つのデータセットでDLinearを上回っていることが示されます。
Autoformer - 内部構造
Autoformerは、Decomposition LayerとAutocorrelation Mechanismを組み込むことで時系列予測を改善します。
分解レイヤー
Decomposition Layerは、移動平均プーリングを使用して入力系列をトレンド成分と季節成分に分割します。入力 $\mathcal{X} \in \mathbb{R}^{L \times d}$ に対して、トレンドは $\mathcal{X}{\text{trend}} = \text{AvgPool}(\text{Padding}(\mathcal{X}))$ であり、季節部分は $\mathcal{X}{\text{seasonal}} = \mathcal{X} - \mathcal{X}_{\text{trend}}$ です。PyTorchの実装では、系列にパディングを施し、平均プーリングを適用し、2つの成分を返します。
Attention (自己相関) メカニズム
Autoformerは、標準の自己注意を周波数領域で動作する自己相関メカニズムに置き換えます。クエリとキーの自己相関はFFTによって計算され、$O(L \log L)$の計算量になります。その結果得られる重みは時間遅延によって集約されます:上位kの遅延が選択され、ソフトマックス正規化され、ロールされた値状態の重み付けに使用されます。このメカニズムは周期ベースの依存関係を捉えます。
DLinear - 内部構造
DLinearは、Autoformerと同じDecomposition Layerを適用し、その後季節部分とトレンド部分を別々の線形層に通して出力を合計するシンプルなフィードフォワードネットワークです。確率的な設定では、線形層はprediction-length * hidden次元に射影され、その後確率的ヘッドが分布パラメータにマッピングされます。
例: Traffic データセット
Trafficデータセットには、2015‑2016年のサンフランシスコの高速道路占有率(範囲[0,1])の862件の時系列データが含まれます。実験では、予測長を24、コンテキスト長を48、バッチサイズを128に設定し、小規模なTransformer設定(encoder_layers=2、decoder_layers=2、d_model=16)でモデルを50エポック訓練します。Autoformerおよびその他のモデルの事前学習済みチェックポイントは、Hugging Face Hubで利用可能です。
データセットのロード
データセットは、gluonts.dataset.repository.datasets.get_dataset("traffic" を介してロードされます。周波数と予測長はデータセットのメタデータから取得されます。
変換の定義
GluonTSコンポーネントで構築された変換チェーンは、データを準備します:未使用の静的/動的フィールドを削除し、NumPyにキャストし、観測インディケータ、時間特徴、年齢特徴を追加し、時間特徴をスタックし、フィールド名をHugging Faceの期待に合わせて変更します。
InstanceSplitter の定義
InstanceSplitter は、データから context_length と prediction_length のウィンドウをサンプリングします。トレイン、バリデーション、テストのモードで動作でき、モデル入力に適した過去/未来のキーを返します。
PyTorch DataLoaderの作成
トレーニング、バリデーション、テストのDataLoaderは、変換チェーンとインスタンススプリッターを適用し、as_stacked_batchesでバッチングすることで作成されます。トレーニングローダーはデータをシャッフルし、サイクルします;バリデーションおよびテストローダーは、バックテストと予測のために最後のコンテキストウィンドウを使用します。
Autoformerでの評価
事前にトレースされたAutoformerチェックポイント(kashif/autoformer-traffic-hourly)を使用し、モデルのgenerate()メソッドで予測を生成します。サンプル全体の中央値予測は、🤗 EvaluateライブラリのMASEメトリックを使用してグランドトゥルースと比較されます。テストセット全体の平均MASEは0.910です。
DLinearでの評価
DLinear推定器は、Autoformerの実験と同じハイパーパラメータで設定されます(予測長24、コンテキスト長48、スケーリングstd、隠れ次元2)。トレーニングセットでのトレーニング後、テストセットでの評価によりMASE 0.965が得られます。
結論
バニラTransformer、Informer、Autoformerを含むTransformerベースのモデルは、TrafficデータセットにおいてDLinearよりも低いMASEを達成します(バニラTransformer 0.876、Autoformer 0.910、DLinear 0.965)。この小さなデータセットでは、クロスシリーズ相関の推定が難しいため、多変量バリアントは単変量バリアントよりも性能が劣る傾向があります。結果は、特に大規模な汎用時系列データセットが事前学習に利用可能になると、Transformerが時系列予測において依然として効果的であることを確認しています。
謝辞
このプロジェクトでの洞察に満ちたコメントと支援に対して、Lysandre DebutとPedro Cuencaに感謝します。