Amazon ForecastのDeepAR+で追加された新しいハイパーパラメータを確認する

2020.02.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の貞松です。 閏日の滑り込み投稿です。

Amazon Forecastで使用可能な時系列予測アルゴリズムの一つであるDeepAR+に対して、設定可能なハイパーパラメータが追加されました。これにより、トレーニング時間の短縮、モデルの安定性と精度の向上を目的としたチューニングが可能となります。

DeepAR+ でのサポートが始まった新しいハイパーパラメータを活用して、Amazon Forecast のトレーニング時間を短縮し、モデルの安定性と精度を向上させる

今回はForecastのDeepAR+で設定可能なハイパーパラメータのおさらいと新しく追加になったハイパーパラメータについて確認します。

従来のForecastのDeepAR+で設定可能なハイパーパラメータ

learning_rate

概要

学習率。 大きい値を設定すると学習が早く進むが、更新幅が大きくなり学習が安定せず、最適な結果に収束しにくくなります。 小さい値を設定すると学習の進みが遅くなるが、小さい幅で更新することを繰り返すので学習が安定し、最適な結果に収束しやすくなります。

有効な値

正の浮動小数点数

一般的な値

0.0001~0.1

デフォルト値

0.001

context_length

概要

予測を生成する前にモデルが読み込む時間ポイントの数(予測モデルの学習時にどの範囲のデータ使用するか) このパラメータの値は、prediction_length(どのくらい先まで予測するか、期間の長さを設定)とほぼ同じである必要があります(短すぎてはいけない)

有効な値

正の整数

一般的な値

ceil(0.1 * prediction_length) to min(200, 10 * prediction_length)

デフォルト値

2 * prediction_length

num_layers

概要

Recurrent Neural Network(以下RNN)の隠れ層の数。 多いほど複雑な関数を近似できます(単純なパターンでない複雑な予測ができます)が、学習時間が増加します。

有効な値

正の整数

一般的な値

1~4

デフォルト値

2

num_cells

概要

RNNの隠れ層ごとに使用するセルの数。 多いほど"学習データに対する"予測の精度向上が見込めますが、学習時間が増加します。 また、上記で敢えて"学習データに対する"と記述している通り、多すぎると過適合(over fitting)が発生しやすくなります。

有効な値

正の整数

一般的な値

30~100

デフォルト値

40

epochs

概要

1つのトレーニングデータを学習させる繰り返し回数の最大値。 最適な値は、データサイズと学習レートによって異なります。

有効な値

正の整数

一般的な値

10~1000

デフォルト値

500

likelihood

概要

データに応じて、不確実性予測に使用される適切な尤度(ノイズモデル)を選択します。 これにより予測モデルは確率予測を生成し、分散の変位値を提供してサンプルを返すことができます。

有効な値

  • gaussian: 実数値のデータに使用します。
  • beta: 0 ~ 1 の範囲内 (0 と 1 を含む) の実数値ターゲットに使用します。
  • student-T: バースト性データの実数値データにこの方法を使用します。
  • negative-binomial: データ (負ではない整数) の合計に使用します。
  • deterministic-L1: 不確実性を予測せず、ポイント予測のみ学習する損失関数。

デフォルト値

student-T

新たに追加になったハイパーパラメータ

新たに追加になったハイパーパラメータは、要約すると学習中に段階的に学習率を減衰させる為のパラメータと複数のモデルの動作を平均化して「良いとこ取り」する為のパラメータです。

learning_rate_decay

概要

学習率の減衰率。 学習中にmax_learning_rate_decaysに設定された回数に応じて学習率を減衰します。 このパラメーターは、max_learning_rate_decaysが0より大きい場合にのみ使用されます。

有効な値

正の浮動小数点数

典型的な値

0.5〜0.8

デフォルト値

0.5

max_learning_rate_decays

概要

学習中に発生する学習率減衰の最大数。 0を設定している場合は、学習中に学習率は減衰されません。

有効な値

正の整数

典型的な値

0〜10

デフォルト値

0

num_averaged_models

概要

設定した数のモデルの動作を平均化して、すべてのモデルの長所を活用できます。

有効な値

正の整数

典型的な値

1〜5

デフォルト値

1

新たに追加になったハイパーパラメータを設定して時系列予測を実行する

新たに追加になったハイパーパラメータを設定して、時系列予測モデルを作成します。 比較の為、ハイパーパラメータがデフォルトのDeepAR+とハイパーパラメータを変更したDeepAR+の予測モデルをそれぞれ作成します。

ハイパーパラメータがデフォルトの予測モデルをfukuoka_influenza_predictor_new_deepar_1、ハイパーパラメータを変更した予測モデルをfukuoka_influenza_predictor_new_deepar_2とします。 どちらもAlgorithm SelectionManualを選択し、AlgorithmはもちろんDeep_AR_Plusを選択します。

こちらがデフォルトの設定です。

こちらが変更したハイパーパラメータです。 max_learning_rate_decaysを2に設定しているので、learning_rate_decayの値に基づいて、最大2回の学習率減衰が発生します。 num_averaged_modelsを3で設定しているので、3つのモデルの平均を取ります。

下図が作成された予測モデルの一覧表示です。 このケースでは、デフォルト設定のモデルと比較して、ハイパーパラメータを変更したモデルはMAPE(Mean Absolute Percentage Error, 平均絶対パーセント誤差)の値が改善していることが確認できます。

まとめ

Amazon ForecastのDeepAR+で新たに使用可能になったハイパーパラメータについて、その概要と実際の使用についてご紹介しました。 今回のアップデートにより、Forecastによる時系列予測の実行をさらに効率化し、精度を向上できる可能性が高まりました。