時系列の「変動」をどうモデル化するか ―― これは時系列解析の根本問題だ。RNN は状態遷移で、TCN は時間方向の畳み込みで、Transformer は注意機構で、いずれも時間軸に沿った1次元の並びとして変動を捉えてきた。だが現実の時系列には、もっと豊かな構造がある。周期性 だ。日次・週次・年次の周期が重なり、しかも「1周期の中での形(周期内変動)」と「周期をまたいだ変化(周期間変動)」という2種類の変動が同時に存在する。1次元の並びを見るだけでは、この2つを切り分けて捉えにくい。
ここに発想の転換を持ち込んだのが TimesNet(Wu et al., “TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis,” ICLR 2023)である。TimesNet は、周期を使って1次元時系列を2次元テンソルに折りたたみ、画像認識で実績のある2D畳み込みで時間変動をモデル化する。これにより周期内変動と周期間変動を同時に捉えられる。そしてこの汎用設計のまま、予測・補間・分類・異常検知 の5タスクすべてで最先端を達成した ―― だからこそ、本シリーズで扱った多くの異常検知論文が TimesNet をベースラインに据えている。
本記事は論文(ICLR 2023)の方法論を一次情報から読み込み、FFT による周期抽出・1D→2D 変換・inception block・adaptive aggregation を数式と図で深掘りする。なぜこれを学ぶのか ―― 「時間軸の並び」という固定観念を超えて、周期を構造として使う発想を掴むためだ。

出発点はシンプルな問いだ ―― 時系列を「時間方向の1次元の並び」ではなく、「周期で折りたたんだ2次元の構造」として見たらどうなるか。すると、画像で絶大な成功を収めた2D畳み込みがそのまま使える。鍵は「どの周期で折りたたむか」を決めることだ。
周期の抽出 ― FFTで主要な周期を見つける
折りたたむ周期は、データから自動で見つける。TimesNet は FFT(高速フーリエ変換)で周波数領域の振幅を計算し、振幅の大きい周波数 ―― つまり目立つ周期 ―― を選ぶ。

左の周期24を持つ時系列を FFT にかけると、右の振幅スペクトルが得られる。各周波数 $j$ の振幅 $A_j$ は「周波数 $j$ の周期成分の強さ」を表し、周期長 $\lceil T/j \rceil$ に対応する。実際に上の信号を解析すると、最大振幅の周波数から 周期24が正しく抽出 された。ノイズの多い高周波を避けるため、TimesNet は振幅上位 $k$ 個の周波数 $\{f_1, \dots, f_k\}$ とその周期 $\{p_1, \dots, p_k\}$ だけを選ぶ。
$$ \begin{equation} A, \{f_1, \dots, f_k\}, \{p_1, \dots, p_k\} = \mathrm{Period}(X_{1D}) \end{equation} $$
ここで $A$ は各周波数の振幅(全変量で平均したもの)、$k$ はハイパーパラメータだ。こうして得た周期で、いよいよ時系列を折りたたむ。
1D→2D変換 ― 周期で折りたたむ
選んだ周期長 $p_i$ ごとに、1次元時系列 $X_{1D} \in \mathbb{R}^{T \times C}$ を2次元テンソル $X^i_{2D} \in \mathbb{R}^{p_i \times f_i \times C}$ に変形する。
$$ \begin{equation} X^i_{2D} = \mathrm{Reshape}_{p_i, f_i}(\mathrm{Padding}(X_{1D})), \quad i \in \{1, \dots, k\} \end{equation} $$

左が周期24で区切った1次元時系列、右がそれを折りたたんだ2次元テンソル(6行×24列)だ。各行が1周期に対応する。ここで2つの軸が、2種類の時間変動を表すようになる。

列方向(intraperiod-variation) は「1周期の中での形」 ―― 周期内のどの位置でどんな値を取るか。行方向(interperiod-variation) は「周期をまたぐ変化」 ―― 周期が進むにつれてどう推移するか(上の図でトレンドが色のグラデーションとして現れている)。1次元の並びでは隣り合っていなかった「1周期前の同じ位相の点」が、2次元では真上に来る。これが折りたたみの妙だ。では、この2次元構造をどう処理するか。
inception block ― マルチスケール2D畳み込み
2次元テンソルになれば、画像認識の道具がそのまま使える。TimesNet は inception block(GoogLeNet で知られるマルチスケール2D畳み込み)で各2Dテンソルを処理する。

$$ \begin{equation} \hat{X}^{l,i}_{2D} = \mathrm{Inception}(X^{l,i}_{2D}), \quad i \in \{1, \dots, k\} \end{equation} $$
inception block は $1\times1, 3\times3, 5\times5$ など複数サイズの畳み込みカーネルを並べ、様々な時間スケールの変動を同時に捉える。2D畳み込みなので、隣接時刻(列方向)と隣接周期(行方向)の局所パターンを同時に 集約できる ―― これが2D化の最大の恩恵だ。さらに、$k$ 個の2Dテンソルすべてで 同じ inception block を共有 する。これでモデルサイズがハイパーパラメータ $k$ の選択に依存しなくなり、パラメータ効率がよい。処理後は2Dテンソルを1Dに戻し、$k$ 個の表現を融合する段階に入る。
adaptive aggregation ― 振幅で重み付けて融合
$k$ 個の周期それぞれで作った2D表現を、ひとつにまとめなければならない。TimesNet は、各周期の 振幅 をその周期の重要度とみなし、振幅で重み付けて融合する。

$$ \begin{equation} \hat{A}_{f_1}, \dots, \hat{A}_{f_k} = \mathrm{Softmax}(A_{f_1}, \dots, A_{f_k}), \qquad X^l_{1D} = \sum_{i=1}^{k} \hat{A}_{f_i} \times \hat{X}^{l,i}_{1D} \end{equation} $$
振幅 $A$ が大きい(=スペクトル上で目立つ)周期ほど、その表現を大きく寄与させる。これは「どの周期が今のデータで重要か」をデータ自身に語らせる仕組みだ。この一連の処理 ―― 周期抽出→2D変換→inception→振幅集約 ―― をまとめたのが TimesBlock で、TimesNet はこれを残差接続で積み重ねる。
全体アーキテクチャと異常検知への適用

TimesNet は TimesBlock を残差接続で積み重ねた構造だ。各 TimesBlock が周期ごとの2D変動を学習し、層を重ねるごとに階層的な表現を得る。重要なのは、この同じバックボーンが 5つのタスク(予測・補間・分類・異常検知) に共通で使えることだ ―― タスクごとに入出力の頭(head)を替えるだけでよい。
異常検知タスクでは、再構成 を使う。入力時系列を TimesNet で再構成し、再構成誤差 $\lVert X – X’ \rVert$ を異常スコアとする。正常な周期パターンはうまく再構成できるが、周期構造を乱す異常は再構成しにくく、大きな誤差として現れる。周期性を2D構造として明示的にモデル化しているぶん、周期の乱れ(周期内・周期間の異常)を捉えやすい、という狙いだ。
評価 ― 汎用モデルが専用手法を上回る
論文は SMD・MSL・SMAP・SWaT・PSM の5つの異常検知ベンチマークで、Anomaly Transformer をはじめ15以上の手法と比較している。

F1スコアで見ると、TimesNet は SMD 85.81・MSL 85.15・SMAP 71.52・SWaT 91.74・PSM 97.47、平均 86.34% を達成し、異常検知専用に設計された Anomaly Transformer(平均 80.50%)をはじめとする全ベースラインを上回った。注目すべきは、TimesNet が 異常検知専用ではない汎用基盤モデル だという点だ。周期性を2D構造として捉えるという一般的な設計が、特定タスクに最適化された手法をも凌ぐ ―― これが「task-general foundation model」を標榜する所以である。同じモデルが長期・短期予測、補間、分類でも同時に最先端を取っている。
なお、TimesNet の強みは周期性が明確なデータで最も発揮される。周期構造が薄い、あるいは強い非定常性で周期が崩れるデータでは、FFT による周期抽出の信頼性が下がり、2D化の恩恵が薄れる。異常検知では再構成ベースであるため、再構成しやすい巧妙な異常(point-adjust 評価の落とし穴とも絡む)には注意が要る ―― この点は評価指標の記事も参照してほしい。
まとめ
TimesNet のエッセンスを整理する。
- 発想の転換:時系列を「時間軸の1次元の並び」でなく「周期で折りたたんだ2次元構造」として捉える。画像で実績ある2D畳み込みが使えるようになる。
- 周期抽出:FFT で振幅を計算し、$\mathrm{Period}(X_{1D})$ で振幅上位 $k$ 個の周波数とその周期を選ぶ。デモでは周期24を正しく抽出。
- 1D→2D変換:周期長 $p_i$ ごとに reshape し、列方向=周期内変動(intraperiod)、行方向=周期間変動(interperiod) を持つ2Dテンソルに。両変動を2D畳み込みで同時に捉える。
- inception + adaptive aggregation:マルチスケール2D畳み込み(共有で省パラメータ)で変動を学び、振幅の softmax 重みで $k$ 個の周期表現を融合。これを TimesBlock として残差で積む。
- 汎用性と異常検知:同じバックボーンで予測・補間・分類・異常検知の5タスクに対応。異常検知は再構成誤差で判定し、平均F1 86.34% で Anomaly Transformer など専用手法を上回る。
TimesNet は、周期性という時系列固有の構造を「2次元への折りたたみ」で活かし、汎用モデルでありながら異常検知でも最先端に立った。CATCH が周波数を「帯域のパッチ」として扱うのに対し、TimesNet は周波数(周期)を「2次元の軸」として使う ―― 周波数・周期を異常検知にどう活かすかの設計の幅が、両者を読み比べると見えてくる。


