畳み込みニューラルネットワーク(Convolutional Neural Network)によるモデル予測
ASCMO-DYNAMICでは、CNN(Convolutional Neural Networks)を用いた過渡モデリングが行えます。RNNの場合は、オープンソースの機械学習プラットフォーム「Tensorflow」が基盤となっています。
CNNは、画像ベースのタスクを解決するための最先端のアプローチとして、長い間使用されてきました。近年このCNNは、時系列モデリングのタスクにおける評判が高まってきています。画像のユースケースにおいて2D畳み込みを使用する代わりに、時系列のユースケースにおいて1D畳み込みが使用されます。
ASCMO-DYNAMICにおけるCNNは、配列対配列のモデルです。つまり、時間ステップtごとの新しい入力xtに対して、1つの出力値 yt が計算されます。
いわゆる「因果パディング」(以下の図参照)を用いることで、未来から過去への情報漏洩がないことが保証されます。つまり、出力値yの計算には、現在の入力値と過去の入力値のみが用いられます。
各CNN層はカーネルサイズkのn個のフィルタで構成され(以下の図参照)、nとkは層ごとに設定できます。層数を増やすか、またはnやkを大きくすることで、ネットワークパラメータの数が増加し、ネットワークの計算能力が向上します。CNNの畳み込みフローは、以下の図に示されています。
以下の図は、2つの畳み込み層とそれに続く密な層からなる1D畳み込みネットワークのスキームを示しています。単純化の目的で、インデックスが時間ステップを表す入力配列 x = (x1,....., xn) は1つのフィーチャーしか持たず、2つの畳み込み層はそれぞれ1つのフィルタしか持ちません。出力値を計算する際に未来の時間ステップが考慮されないようにするため、第1層の入力配列と出力配列には因果パディング(先頭にゼロを詰めること)が行われます。
i番目の出力値yiの計算では、第1層のフィルタが(xi, xi-1, xi-2)に適用され、aiが得られます。次に、第2層のサイズ4のフィルタが配列(ai, ai-1, ai-2, ai-3)に適用され(すべての値は過去の時間ステップで計算されていることに注意してください)、biが生成されます。このbiが、最後の「密層(dense layer)」によって出力値yiに変換されます。
各CNNモデルには、モデルが過去のどの時点まで見ることができるかを決める「固定受容野」があります。つまり、入力配列からの情報のうち、受容野でカバーされていないものは、対応する出力の計算時に無視されることになります。受容野の長さは、層の数、各層のカーネルサイズ、各層の膨張率によって影響を受けます(これらの効果については、図25を参照してください)。
因果パディング(causal padding)と膨張(dilation)を用いたCNNは、しばしばTCN(Temporal Convolutional Networks)と呼ばれます。ASCMO-DYNAMICは時間畳み込みネットワーク(TCN:Temporal Convolutional Network)と呼ばれる特別なタイプの層を提供し、これは特に時間シーケンスのモデリングに適しています。これは、同じフィルタ数、サイズ、膨張率を持つ2つの畳み込み層で構成されます。複数のTCN層を持つネットワークでは、膨張率は層ごとに指数関数的に増加し、最少の層とパラメータで最大の受容野を達成します。
図25は、膨張を使用した1D畳み込みネットワークのスキームを示しています。カーネルサイズ(図25の3つのCNN層すべてにおいて、2)と膨張率を用いて、畳み込みネットワークの受容野を広げることができます。図25では、第1層は20=1、第2層は21=2、第3層は22=4の膨張率を用いています。これらの設定により、入力配列の8つの値が出力値yt (xt-7,....., xt)を計算するのに使用され、「受容野の長さは8である」と言うことができます。
参照