今回の論文
今回取り上げるのは、Zhihan Yue、Yujing Wang、Juanyong Duan、Tianmeng Yang、Congrui Huang、Yunhai Tong、Bixiong Xuによる「TS2Vec: Towards Universal Representation of Time Series」です。北京大学とMicrosoftの研究で、2021年6月19日にarXivで初版が公開され、AAAI 2022で発表されました。研究分野は時系列の自己教師あり表現学習です。arXivの書誌情報と、AAAIの会議版・DOIを参照できます。本記事は付録を含むarXiv v4を中心に説明します。
選んだ理由は、センサー値やシステムの稼働指標など、数値の履歴をAIへ取り込む際の設計に役立つからです。「大量の正常・異常ラベルを揃える前に、履歴そのものから使える特徴を学ぶ」という考え方を、分類・予測・異常検知までつなげています。
どんな技術か
TS2Vecは、時間順に並んだ数値から、各時点の状態を表すベクトルを作る技術です。単一の値だけでなく、周囲の変化を踏まえた特徴を学びます。さらに、そのベクトルを区間ごとにまとめることで、短い出来事や系列全体も表現できます。
例えば、CPU使用率が80%という数値でも、急上昇した直後なのか、一定負荷で安定しているのかでは意味が異なります。TS2Vecは、こうした文脈を含む表現を、人が状態名を付けていないデータから学ぶことを狙います。このCPUの例は理解のための応用例で、論文がそのシステムを評価したという意味ではありません。
特徴を学ぶモデルと、その特徴から業務上の答えを出すモデルは別です。分類なら分類器、将来予測なら回帰器を組み合わせます。TS2Vecだけで自然言語の説明や障害原因が出てくるわけではありません。
課題
時系列では、必要な情報の粒度が用途によって変わります。機械の動作種類を判定するなら、1回の運転全体をまとめたいでしょう。一方、異常の発生時刻を見つけるには、各時点の細かな変化を残す必要があります。最初から系列全体を1本のベクトルにすると、局所的な変化が埋もれるおそれがあります。
対照学習に使う「同じと見なす組」の作り方も難しい点です。画像では切り抜いた画像を元画像と同じ対象として扱えますが、時系列を切り抜くと、正常運転の中から異常区間だけを取り出すかもしれません。また、隣接する区間も、故障の前後なら意味が違います。
値の大きさを変えるデータ拡張にも注意が要ります。温度の形が同じでも、絶対値が上限を超えるかどうかが重要な場合があります。「変形しても同じ状態」という仮定が、業務上必要な差を消す可能性があります。
そこでTS2Vecは、系列全体や隣接区間を無条件に同一視せず、同じ時点を異なる周囲情報から見た表現を近づけます。同時に、短い変化から長い区間まで複数の粒度で学びます。原論文の問題設定と文脈整合性
用語解説
- 時系列表現
- 数値の履歴を、モデルが扱いやすい特徴ベクトルへ変換したものです。TS2Vecでは各時点のベクトルを残し、必要に応じて区間や系列全体へまとめることが重要です。
- 対照学習と正例・負例
- 対応する組である正例を近づけ、区別する組である負例から離す学習です。この論文では同じ時点の別の見え方を正例にし、別時点や別系列を負例にします。異常ラベルを正解として使う学習ではありません。
- 文脈整合性(contextual consistency)
- 周囲の一部が隠れたり、切り出す範囲が変わったりしても、同じ時点の表現は一致させたいという考え方です。異なる区間全体が同じ意味だと仮定せず、共通部分だけを対応付けます。
- 拡張畳み込み(dilated convolution)
- 参照する入力の間隔を空けた畳み込みです。層ごとに間隔を広げることで、短い変動と広い範囲の文脈を取り込みます。TS2Vecのエンコーダの中心です。
- 最大値プーリング
- 複数のベクトルを、各次元の最大値でまとめる処理です。TS2Vecでは時間方向に繰り返して粗い粒度を作り、その各段階でも対照学習します。実際の観測値の最大値をそのまま特徴にする処理とは異なります。
技術の仕組み
数値の列から、各時点の特徴を作る
入力は系列数 × 時間長 × 観測変数数のデータです。例えば温度と振動を同時記録した系列なら、各時点の観測変数数は2です。まず全結合層で各時点の観測を潜在ベクトルへ写し、拡張畳み込みで前後の文脈を取り込んだ表現を作ります。
論文のエンコーダには、拡張率を段階的に大きくする10個の隠れ残差ブロックと、出力次元へ写す残差ブロックがあります。各ブロックは2つの1次元畳み込みを持ち、標準の出力表現は各時点320次元です。TransformerのAttentionを使う構造ではありません。
重なる2区間の、同じ位置を対応付ける
学習では、元系列から一部が重なる2つの区間を切り出します。それぞれに独立したマスクを適用し、入力射影後の潜在ベクトルを時点単位でゼロにします。標準設定では、各時点を確率0.5でマスクします。
生の観測値をゼロに置き換えないのは、ゼロ自体が有効な観測値になり得るためです。入力を一度潜在空間へ写してから隠すことで、観測値とマスクを区別する設計です。
両方の区間を同じエンコーダで処理し、重なった範囲の同じ時点を正例にします。片方では直前の情報が多く、もう片方では直後の情報が多い、という違いがあっても、対応位置の表現を近づけます。系列全体と切り出した区間全体を同じと見なす方式ではありません。
文章のSimCSEがドロップアウトで同じ文の2つの表現を作る方法と比べると、共通するのは「何を変えても同じ意味と見なせるか」を設計する点です。TS2Vecでは文全体ではなく、時点の対応を維持する必要があります。
時間方向と系列方向の両方で区別する
損失は2種類あります。時間方向では、同じ系列の別時点を負例とします。系列方向では、同じバッチにある別系列の対応位置を負例とします。類似度にはベクトルの内積を使い、正例のスコアが負例より高くなるよう学習します。
前者は時間による状態の違いを、後者は系列間の違いを捉える役割があります。ただし、負例は人が「意味的に必ず違う」と保証したものではありません。周期的な系列では別時点でも同じ状態が現れるため、この設計が常に業務上の類似性と一致するとは限りません。
時間粒度を粗くしながら、損失を重ねる
時点単位の損失だけで終えず、時間方向に幅2の最大値プーリングをかけます。隣り合う2つの表現をまとめ、短くなった系列に同じ2種類の対照損失を適用します。さらにプーリングを繰り返し、系列全体の表現になるまで学びます。
処理のイメージは各時点 → 短い区間 → 長い区間 → 系列全体です。各階層の損失を平均し、同じエンコーダを更新します。単に出力の解像度を落とすのではなく、細かい粒度と粗い粒度の両方に学習信号を与えることが工夫です。原論文のモデル構造・階層的対照学習
用途に応じて、特徴の読み出し方を変える
分類では全時点を最大値プーリングし、系列全体のベクトルからSVMでクラスを判定します。予測では、予測時点までの履歴から最後の時点の表現を取り出し、リッジ回帰で将来H時点分をまとめて予測します。予測長ごとに回帰器を学びますが、同じデータセット内ではエンコーダを再利用できます。
異常検知では、最新の観測を見せた場合と、その観測だけを隠した場合の表現を2回の推論で作ります。異常スコアは両表現の差の絶対値を次元ごとに合計した値、つまりL1距離です。実測を見た表現と、周囲の文脈だけで作った表現が大きく違う点を異常候補とします。さらに直近の平均スコアで補正し、履歴から決めたしきい値と比較します。
予測やオンライン検知では未来の観測を渡さない必要があります。著者実装の予測評価でも、causal=Trueと1時点ずつのスライド処理を指定しています。通常の区間エンコードをそのまま予測評価へ流用するだけでは不十分です。
実験と結果
論文は、学んだ特徴を分類・将来予測・異常検知に使い、用途をまたいで有効かを検証しています。「自己教師あり」は特徴を学ぶ段階の話で、分類器にはクラスラベル、予測器には実際の将来値を使います。
系列分類では、同じ次元数の特徴を比較した
単変量のUCRと多変量のUEAを使い、表現学習手法の出力を320次元へ揃え、RBFカーネルのSVMで評価しています。主表の比較対象は、共通して比較できる125 UCR・29 UEAデータセットです。欠測などの事情で一部を除いており、アーカイブ全体の128・30件とは区別します。
| 手法 | 125 UCRの平均正解率 | 29 UEAの平均正解率 |
|---|---|---|
| T-Loss | 80.6% | 67.5% |
| TS-TCC | 75.7% | 68.2% |
| TS2Vec | 83.0% | 71.2% |
比較手法中の最良値に対し、UCRで2.4ポイント、UEAで3.0ポイントの改善です。相対改善率ではありません。また、全データセットで勝ったという意味でも、あらゆる教師あり分類器より優れているという意味でもありません。原論文の表1と分類評価
予測では、表現と線形回帰の組み合わせを評価した
ETTh1・ETTh2・ETTm1・Electricityの4データセットを使い、MSEとMAEで将来予測を評価しています。MSEは誤差を二乗して平均するため、大きな外れを重く扱う指標です。論文の数値は標準化した系列上の値です。
例えば、単変量ETTh1の24時点先までの予測では、MSEがTS2Vecで0.039、Informerで0.098でした。一方、Electricityの同じH=24ではTS2Vecが0.260、Informerが0.251で、TS2Vecが劣ります。表2の全条件平均はそれぞれ0.209と0.310です。原論文の予測評価と表2
ここから読めるのは、学習した特徴が良ければ、比較的単純な回帰器でも予測に使えるということです。現在の予測モデル全般への優位性を示す結果ではありません。予測入力には利用可能な暦情報も加えており、値だけを無条件に渡した結果とも区別が必要です。
異常検知の数値は、区間を補正する評価条件とセットで読む
YahooとKPIの単変量データで、通常設定のF1はTS2Vecが0.745・0.677、比較手法SRが0.563・0.622でした。KPIでのTS2Vecの適合率は0.929、再現率は0.533なので、高い適合率でも見逃しは残ります。
ただし、このF1には異常区間に対する補正があります。区間の開始後、毎分データでは7ステップ、毎時データでは3ステップ以内に1点でも検知できれば、その異常区間全体を正しく検知したものとして数えます。無補正の時点単位F1とは比較できません。原論文の異常検知評価と付録C.4の評価手順に条件があります。
また、階層的対照学習を除くアブレーションでは、UCR 128件の平均正解率が82.9%から81.2%へ下がりました。主表とは対象件数が違いますが、細かい粒度と粗い粒度を一緒に学ぶ設計を支持する結果です。
何に使える?
以下は論文の構造から考えられる応用です。自社システムや各業務での効果を原論文が直接検証したわけではありません。
稼働監視で、固定しきい値では拾いにくい変化を探す
レイテンシや処理件数の系列から、周囲の流れに対して不自然な観測を探す用途が考えられます。単に上限を超えたかではなく、観測を見せた場合と隠した場合の特徴の差を使うので、文脈に合わない変化を拾う手がかりになります。
ただし、季節変動やリリース直後の変化もスコアを上げ得ます。まず既存アラートと並行して候補を記録し、1日当たりの誤通知数と検知遅延を測る設計がよいでしょう。
設備の運転パターンを、少量のラベルで分類する
温度・振動・電流などから未ラベルの運転履歴を学び、一部に付けた動作ラベルで分類器を学ぶ使い方です。特徴学習と分類を分けるため、クラス定義を変える際に分類器側から試せる余地があります。
この段階分けは、wav2vec 2.0の未ラベル音声学習とラベル付き適応とも共通します。ただし、TS2Vecは数値系列の特徴を学ぶ方法で、音声認識の文字列対応をそのまま移植するわけではありません。
複数の予測期間を持つダッシュボードに使う
同じ履歴から、翌日までと翌週までの予測を作りたい場合、期間ごとに回帰器を学び、エンコーダを共用する構成が考えられます。大きな予測モデルを期間ごとに独立学習する構成と比べ、共通部分を管理しやすくなります。
ただし、点予測だけでは発注量や設備増強を自動決定する材料として不足する場合があります。予測区間や外部要因を組み込む機能は、別途検証が必要です。
開発や事業へのヒント
共通化するのは特徴、個別化するのは判断です
小規模なプロダクトでも、数値系列をLLMへ文章化して渡す前に、専用の特徴抽出器と軽量な判定器で処理できる部分を検討できます。TS2Vecから学べるのは、特徴の抽出と、予測・分類という用途別の判断を分離する設計です。
ただし、論文の「汎用」は、1つの公開済みモデルをどんな会社のデータにも無調整で使えるという意味ではありません。多くの実験では対象データセットの訓練データで特徴を学びます。異なる機器・変数構成へ展開する際は、入力の互換性と再学習の必要性を確認します。
同じと見なす変化を、業務要件から決めます
運転開始時刻がずれても同じ動作と見なしたいのか、温度が5度上がれば別状態と扱いたいのかを、先に決めると学習データの加工を選びやすくなります。TS2Vecが値の振幅をむやみに変えず、共通の時点を対応付ける設計は、この判断の具体例です。
画像向けに有効だった拡張をそのまま数値系列へ移すより、維持すべき信号を洗い出すことが先です。自社データでは季節性や機器の個体差についても、同一視してよいかを確認します。
最初は単純な基準との比較で価値を測ります
移動平均、季節性を考慮した予測、固定しきい値などを基準に、追加する特徴学習の効果を測るとよいでしょう。分類なら未知の機器、予測なら将来期間、検知なら新しい障害への性能を分けて評価します。
隣接する窓を無作為に訓練・テストへ振り分けると、ほぼ同じ履歴が両方へ入り得ます。期間や機器単位で分割し、標準化の統計も訓練データで決めることが、製品で使える性能を判断する前提になります。これは論文の性能値ではなく、時系列システムを実装する際の設計上の提案です。
限界
計算面では、学習中に2つのビューを処理し、時間方向・系列方向で多数の類似度を計算します。畳み込みのエンコーダだからといって、学習全体が無条件に線形コストになるわけではありません。論文では長い系列を3,000時点の区間へ分割しています。異常検知でも1回の判定に2回のエンコードが必要です。
データ面では、観測間隔、変数の単位、標準化、欠測の扱いに依存します。欠測位置をマスクとして扱えますが、失われた情報を正確に復元できる保証ではありません。不規則な観測間隔や大きな分布変化も、別途評価する必要があります。
意味の面では、別系列や別時点を負例とすることが、周期的な同じ状態まで遠ざける可能性があります。また、最大値プーリングした表現は、時点単位の表現と同じ細かさで順序を保持するものではありません。用途ごとに読み出す粒度を選ぶ必要があります。
実運用では、未来情報の混入、アラートの過剰発火、学習後の分布変化が問題になります。異常スコアが高くても原因は説明されず、異常検知の区間補正付きF1だけで通知品質を判断できません。無補正の適合率・再現率、検知遅延、通知件数も測る必要があります。
再現時には、切り出し方、マスク、バッチサイズ、特徴次元、下流モデルの選択を揃えます。分類器や回帰器の調整にはラベルや検証用データが必要です。「ラベルなしで特徴が学べる」ことと「評価も導入も教師情報なしで済む」ことは分けて考えてください。
よくある質問
Q. ラベルがなくても、故障の種類まで判定できますか?
A. 特徴学習に故障ラベルは不要ですが、故障種類を分類するには対応するラベルと分類器が必要です。表現の差から異常候補を出す方法はありますが、そのスコアだけで原因名は分かりません。
Q. 系列ごとに1本のベクトルを作る方法ですか?
A. 基本出力は各時点のベクトルです。全時点を最大値プーリングすれば系列全体を、指定区間をまとめればその区間を表現できます。予測や異常検知では、最後の時点の表現を使います。
Q. TransformerやLLMは必要ですか?
A. 原論文の特徴抽出器は全結合層と拡張畳み込みを中心とし、LLMは使いません。分類にはSVM、予測にはリッジ回帰を載せます。自然言語の報告機能を付けたい場合は、検知結果と根拠となる数値を別途LLMへ渡す構成が考えられます。
Q. 過去の系列を全部まとめて処理すれば、オンライン予測を評価できますか?
A. そのままでは、予測時点より後の観測が特徴へ入るおそれがあります。著者の予測実装も、因果的なスライド処理を指定しています。各予測時点で実際に利用可能な履歴だけを渡してください。
Q. 論文の異常検知F1を、そのまま導入目標にできますか?
A. 同じデータと区間補正ルールなら比較の参考になりますが、通常の時点単位F1の目標にはできません。まず無補正の評価と、実際に送る通知数・検知遅延を測り、運用担当者が処理できる範囲でしきい値を検討します。
今日の学び
この論文は、用途ごとに必要な時間粒度が異なり、時系列を安易に切り出したり変形したりすると重要な違いを壊す課題を扱いました。同じ時点を異なる文脈で対応付け、時間粒度を変えながら対照学習することで、時点から系列全体まで使える特徴を学んでいます。
得られるヒントは、ラベルを増やす前に、データ自身からどんな共通表現を学べるかを考えることです。同時に、何を同じ状態と見なすか、予測時点で何が見えるか、評価値がどんな補正を含むかを揃えることが、実際の開発での有効性を左右します。