時系列予測で深層学習が話題になる理由は、単に「ニューラルネットワークが強いから」ではありません。手作業の特徴量設計だけでは拾いにくい時間依存や、複数系列にまたがる共通パターンを、モデル側でまとめて学習しやすいからです。
一方で、深層学習を使えば自動的に精度が上がるわけでもありません。データ量が少ない、説明可能性が強く求められる、あるいは外生変数中心で十分に説明できる場面では、Prophet や LightGBM の方が扱いやすいこともあります。
この記事では、時系列予測でよく登場する LSTM、DeepAR、MQRNN、WaveNet を、初学者にもイメージしやすい形で整理します。モデル名を覚えることよりも、「どの問題に、どの考え方が合うのか」をつかむことを重視しています。
1. この記事でわかること
- 時系列予測で深層学習を使う意味と、その向き不向き。
- LSTM、DeepAR、MQRNN、WaveNet の違いと使いどころ。
- Prophet や LightGBM と比べたときの深層学習の立ち位置。
2. 先に押さえたい結論
- 深層学習は、生の系列パターンを直接扱いやすく、複数系列をまとめて学習したいときに強い。
- LSTM は時間方向の依存関係を扱いやすく、時系列向け深層学習の基本になる。
- DeepAR は予測値だけでなく予測分布を扱えるため、不確実性を見たい場面で有力である。
- MQRNN は多ホライズンの分位点予測に強く、将来の幅を見たい実務と相性が良い。
- WaveNet は拡張畳み込みにより、局所パターンと長い依存関係を両立しやすい。
- ただし、データ量が少ない場合や説明可能性が重い場合は、必ずしも深層学習が第一選択ではない。
3. なぜ時系列予測に深層学習を使うのか
3.1 手作業の特徴量設計だけでは拾いきれない情報がある
従来の機械学習では、時系列をそのまま入れるのではなく、ラグ特徴量や移動平均、曜日や祝日情報などを人手で作ることが一般的です。このやり方は強力ですが、どの情報を切り出すかをあらかじめ決めなければならないため、重要なパターンを取りこぼすことがあります。
深層学習は、こうした系列構造そのものから表現を学習しやすいのが特徴です。
| 分野 | 機械学習で主に使う入力 | 深層学習で主に使う入力 |
|---|---|---|
| NLP | 単語頻度、品詞タグ、固有表現など | 生の文やトークン列 |
| 画像 | SIFT、LBP などの手設計特徴量 | 生の画像 |
| 時系列 | ラグ、移動平均、集約特徴量 | 生の系列や時系列ウィンドウ |
従来の機械学習:
生データ → 特徴量設計 → モデル学習 → 予測
深層学習:
生データ → 表現を自動学習 → 予測
初学者向けメモ
「深層学習なら特徴量設計が完全に不要」というわけではありません。実務では、外生変数、カレンダー情報、販促フラグなどを一緒に入れた方が精度が上がる場面が多くあります。違いは、系列そのものの表現を人手で作り込みすぎなくてもよい点にあります。
3.2 時系列と相性のよいネットワーク構造がある
時系列では、過去の値が未来に影響するという順序構造が本質です。この構造に合いやすい代表が RNN 系と CNN 系です。
RNN / LSTM のイメージ
時刻 1 時刻 2 時刻 3 時刻 T
x1 ──▶ [RNN] ─▶ [RNN] ─▶ [RNN] ─▶ ... ─▶ [RNN]
│ │ │ │
h1 h2 h3 hT
- 隠れ状態を時間方向へ受け渡しながら情報を保持する
- 過去と現在の依存関係を学習しやすい
この図は、RNN 系モデルの流れをつかむための概念図です。LSTM 固有の入力ゲート、忘却ゲート、出力ゲートは省略しています。実務では、単純 RNN よりも勾配消失に強い LSTM や GRU が使われることが多くあります。
1 次元 CNN / WaveNet のイメージ
入力系列: y1, y2, y3, ..., yT
│
1 次元の畳み込み窓を時間方向へ適用
│
局所パターンを抽出
│
層を重ねて受容野を広げ、より長い依存も扱う
│
予測
- 近い時点どうしの局所パターンを捉えやすい
- 構造によっては長期依存も効率よく扱える
時系列予測では、未来の値を見ないように因果畳み込みを使う設計が重要です。単なる 1 次元 CNN と、未来情報を遮断した因果的な CNN は同じではない点に注意が必要です。
初学者向けメモ
RNN は「時間順に読み進める」イメージ、CNN は「窓をずらしながらパターンを拾う」イメージで考えると入りやすくなります。
4. LSTM を使った時系列予測
4.1 まずは 1 ステップ予測と多ステップ予測を区別する
LSTM を使うときに最初に整理したいのは、次のどちらをやりたいのかです。
- 1 ステップ予測: 次の 1 時点だけを予測する
- 多ステップ予測: 未来の複数時点をまとめて予測する
この違いで、モデルの出力設計も、外生変数の入れ方も変わります。
4.2 LSTM による 1 ステップ予測
基本の考え方
過去の観測値と、その時点までにわかっている外生変数を使って、次の 1 点を予測します。
ここでは、予測時点の外生変数があらかじめ得られる場合を想定しています。たとえば祝日フラグや販促予定のように、未来時点でも事前にわかる情報です。
入力: 過去の観測値 y_{1:T} と外生変数 x_{1:T+1}
出力: y_{T+1}
構造イメージ
過去の系列 + 外生変数 ─▶ LSTM ─▶ 出力層 ─▶ y_{T+1}
初学者向けメモ
1 ステップ予測は構造が比較的単純なので、最初のベースラインとして試しやすい設計です。まずはここで、ウィンドウ長や外生変数の効き方を確認すると進めやすくなります。
4.3 LSTM による多ステップ予測
基本の考え方
未来の複数時点をまとめて予測する場合は、将来時点で既知の外生変数も重要になります。
逆に、将来の外生変数がわからない場合は、その変数自体を別途予測するか、未知のまま扱える設計に変える必要があります。
出力: y_{T+1}, y_{T+2}, ..., y_{T+h}
構造イメージ
履歴系列 + 将来の既知変数 ─▶ LSTM ─▶ 多ステップ出力
├─▶ y_{T+1}
├─▶ y_{T+2}
└─▶ y_{T+h}
初学者向けメモ
販促計画や価格改定のように、将来の入力があらかじめわかっている場合は、その情報を未来側へ入れないと予測の精度が大きく落ちることがあります。
5. 不確実性まで扱う RNN 系モデル
点予測だけでは足りず、「どれくらいぶれそうか」まで見たい場面では、確率的な予測や分位点予測が重要になります。ここで代表的なのが DeepAR と MQRNN です。
5.1 DeepAR の考え方
DeepAR の特徴
- 点予測ではなく、将来値の予測分布を扱える。
- 関連する複数系列をまとめて学習するグローバルモデルとして使いやすい。
- 区間予測や需要のばらつきを見たい場面と相性が良い。
直感的な理解
通常の点予測:
入力系列 → モデル → 予測値 y_hat
DeepAR:
入力系列 → モデル → 予測分布 P(z)
DeepAR は、「未来値を 1 個の数字として当てる」のではなく、「どのあたりに出そうかを分布として表す」発想です。需要予測や在庫管理のように、外したときのリスクが左右非対称な場面では、とても実務的です。
学習と予測の流れ
学習時:
各時点の実測値 z_t と既知の共変量 x_t を順に入力
│
▼
RNN / LSTM が隠れ状態 h_t を更新
│
▼
h_t から P(z_{t+1} | z_{1:t}, x_{1:t+1}) を出力
│
▼
実測値 z_{t+1} に対する尤度を最大化
予測時:
履歴系列 z_{1:T} と既知の将来共変量 x_{T+1:T+h}
│
▼
P(z_{T+1}) を出力
│
▼
z_{T+1} のサンプル値または代表値を次段へ渡す
│
├─▶ P(z_{T+2})
├─▶ P(z_{T+3})
└─▶ ...
初学者向けメモ
需要や件数のようなカウントデータでは、ガウス分布よりも負の二項分布などの方が合いやすいことがあります。DeepAR の強みは、こうした分布設計まで含めて不確実性を扱える点です。
もう一つ大事なのは、DeepAR が自己回帰的に将来を伸ばしていく点です。学習時は実測値を次時点の入力に使えますが、予測時は自分が出した予測を次の入力へ回すため、ホライズンが長いほど誤差が蓄積しやすくなります。
5.2 MQRNN の考え方
MQRNN の特徴
- 複数の将来時点を同時に扱いやすい。
- 将来値の確率分布を直接出すというより、複数の分位点を直接予測する設計と相性が良い。
- LSTM と MLP を組み合わせ、共有情報と時点別情報を分けて扱える。
MQRNN は「多ホライズンの分位点予測モデル」として理解するとつかみやすくなります。たとえば、P10、P50、P90 のような複数の分位点を一度に出せれば、将来の中央値だけでなく、楽観ケースと悲観ケースも同時に見られます。
構造イメージ
履歴系列入力 ─▶ LSTM エンコーダ
│
├─▶ C_a: 将来全体で共有する文脈情報
│
将来時点で既知の共変量 ─┼─▶ C_t: 予測ステップごとの個別文脈
│ (ホライズンごとの差を持たせる)
▼
MLP で予測
│
├─▶ y_{T+1} の分位点
├─▶ y_{T+2} の分位点
└─▶ y_{T+h} の分位点
この図も概念図であり、実装では将来時点で既知の共変量が各ホライズンの出力形成に効くよう設計されることが多くあります。ポイントは、履歴系列だけでなく、将来にわかっている情報も予測ステップごとの差を作る材料になることです。
用語の見方
| 要素 | 役割 |
|---|---|
| LSTM | 履歴系列から時間情報を抽出する |
| MLP | 各予測時点の出力へ変換する |
C_a |
将来時点に共通する傾向を表す |
C_t |
予測時点ごとの差を表す |
| forking-sequences training | 学習効率を上げるための学習設計 |
初学者向けメモ
DeepAR と MQRNN はどちらも不確実性を扱えますが、考え方は少し違います。DeepAR は「分布をモデリングする」寄り、MQRNN は「必要な分位点を直接当てにいく」寄りです。
5.3 LSTM、DeepAR、MQRNN の使い分け
| モデル | 向いている場面 | ひとことで言うと |
|---|---|---|
| LSTM | まず系列モデルの基本を試したい | 深層学習の基本形 |
| DeepAR | 不確実性を分布で見たい、複数系列をまとめて学習したい | 確率予測に強い |
| MQRNN | 複数ホライズンの分位点をまとめて出したい | 多ホライズン分位点予測に強い |
6. CNN と WaveNet を使った時系列予測
6.1 なぜ CNN が時系列でも使えるのか
CNN は画像だけの手法と思われがちですが、時系列でも有効です。理由は、時系列にも「近い時点どうしで似たパターンが繰り返される」という局所構造があるからです。
たとえば、短い周期の波、急な立ち上がり、直近数時間の反動といったパターンは、畳み込みで捉えやすいことがあります。
6.2 WaveNet の基本アイデア
WaveNet で重要なのは、因果畳み込みと拡張畳み込みです。
- 因果畳み込み: 未来の情報を見ずに過去だけで予測する
- 拡張畳み込み: 間引いた位置までまとめて見て、受容野を広げる
通常の因果 CNN では、層を深くしても受容野の広がりは比較的ゆるやかです。一方、WaveNet のように dilation を段階的に大きくすると、少ない層でもずっと長い履歴を見られるようになります。
典型例: kernel size = 2, dilation = 1, 2, 4, ...
第 1 層: 直近 2 時点を見る
第 2 層: 直近 4 時点を見る
第 3 層: 直近 8 時点を見る
イメージ比較
通常の因果 CNN:
層が深くなるほど、受容野が少しずつ広がる
WaveNet:
層が深くなるほど、受容野が急速に広がる
補足
「第 N 層で 2^N 個見える」といった説明は、カーネルサイズ 2、dilation を 1, 2, 4, ... と増やす典型例を単純化したものです。実際の受容野はカーネルサイズや層構成で変わります。
また、元祖 WaveNet は拡張畳み込みだけでなく、gated activation、residual connection、skip connection も含む構造です。この記事では、時系列予測で最も誤解されやすい「因果性」と「受容野の広がり」に絞って説明しています。
6.3 WaveNet による 1 ステップ予測
過去の系列 + 外生変数 ─▶ WaveNet ─▶ 出力層 ─▶ y_{T+1}
LSTM と同じく、1 ステップ先だけを出すなら構造は比較的わかりやすく、モデル比較もしやすくなります。
6.4 WaveNet による多ステップ予測
履歴系列 + 将来の既知変数 ─▶ WaveNet ─▶ 多ステップ出力
├─▶ y_{T+1}
├─▶ y_{T+2}
└─▶ y_{T+h}
初学者向けメモ
WaveNet 系は局所パターンをうまく拾える一方で、データ前処理や系列長の設計が雑だと強みが出にくいことがあります。まずは LSTM と同じ入力条件で比較し、どちらが自分のデータに合うかを見るのが実践的です。
7. Prophet、LightGBM、深層学習はどう使い分けるか
深層学習が有力でも、常に最良とは限りません。実務では、精度、実装コスト、説明可能性、データ量をまとめて見て判断する必要があります。
| 比較項目 | Prophet | LightGBM | 深層学習 |
|---|---|---|---|
| 学習サンプルの作り方 | 各時点ベース | スライディングウィンドウ | スライディングウィンドウ |
| 解釈しやすさ | 高い | 中程度 | 低め |
| 複数系列をまとめて予測 | あまり向かない | 向いている | 向いている |
| 特徴量設計の必要性 | 外生変数次第 | 比較的大きい | 相対的に少ない |
| 少量データへの強さ | 比較的強い | 強いことが多い | 不利になりやすい |
初学者向けメモ
最初から深層学習だけに絞るより、Prophet や LightGBM も同じ分割で比較した方が、モデルの強みと弱みが見えやすくなります。深層学習は、十分なデータ量と複数系列があるときに真価が出やすい、という感覚を持っておくと判断しやすくなります。
8. 初学者向けの進め方
時系列予測で深層学習を試すときは、次の順番で整理すると失敗しにくくなります。
- 予測ホライズンを明確にする。
- 1 ステップ予測か多ステップ予測かを決める。
- 外生変数のうち、将来時点で本当に使えるものを切り分ける。
- Prophet や LightGBM でベースラインを作る。
- LSTM、DeepAR、WaveNet などを同条件で比較する。
- 点予測だけでなく、区間や分位点も必要かを判断する。
この手順を踏むと、「なぜ深層学習が効いたのか」「なぜ効かなかったのか」を後から説明しやすくなります。
9. まとめ
- 深層学習は、時系列の生データから表現を学びやすく、複数系列の共通パターンも取り込みやすい。
- LSTM は時系列向け深層学習の基本であり、1 ステップ予測と多ステップ予測の設計差を理解する入口になる。
- DeepAR は分布予測、MQRNN は多ホライズン分位点予測という形で、不確実性を扱うのに向いている。
- WaveNet は拡張畳み込みにより、局所パターンと長い依存関係の両方を扱いやすい。
- 深層学習は強力だが、少量データや説明可能性重視の場面では、Prophet や LightGBM も十分有力である。
10. チェックリスト
- 深層学習が時系列予測で有利になりやすい理由を、特徴量設計の観点から説明できるか。
- 1 ステップ予測と多ステップ予測で、モデル設計のどこが変わるか説明できるか。
- DeepAR が点予測ではなく分布予測を行う意味を説明できるか。
- MQRNN が分位点予測に向いている理由を説明できるか。
- WaveNet が通常の因果 CNN より長い依存関係を扱いやすい理由を説明できるか。
- Prophet、LightGBM、深層学習を、データ量、解釈性、複数系列対応の観点から使い分けられるか。
11. 参考になる資料
- 深層学習の入門解説: http://neuralnetworksanddeeplearning.com/chap1.html
- LSTM の解説: https://colah.github.io/posts/2015-08-Understanding-LSTMs/
- LSTM による時系列予測のサンプル実装: https://github.com/JEddy92/TimeSeries_Seq2Seq/blob/master/notebooks/TS_Seq2Seq_Intro.ipynb
- CNN の解説: http://colah.github.io/posts/2014-07-Understanding-Convolutions/
- CNN による時系列予測のサンプル実装: https://github.com/JEddy92/TimeSeries_Seq2Seq/blob/master/notebooks/TS_Seq2Seq_Conv_Intro.ipynb
- DeepAR の論文: https://arxiv.org/abs/1704.04110
- MQRNN の論文: https://assets.amazon.science/e2/53/153ad5064cf2b95ba4d73d659527/a-multi-horizonquantile-recurrent-forecaster.pdf