時系列データ解析 上級編 其の参 - Prediction: Neural network model (2008年08月24日)

前回の Autoregressive model では R-R Interval データのように本質的にストキャスティック(stochastic)なデータには歯が立たない事を書いた。 今回は、そのようなデータにもある程度応用できる Neural network model について解説する。

今回使用する Neural network model は 典型的なモデルで、下の図-38のようになる。

図-38

図-38では、各レイヤー8個の入力を持つ3レイヤーのニューラルネットワークをあらわしている。

実際の数値計算ではもう少し係数の数が増える。 一般的なレイヤー数及び入力数のモデルについて数式を書くと以下のようになる:

(49)

ここで、L はレイヤーの数、Mk はレイヤー k における入力の数を示す。 フィットする係数は、ηki 及び ωki,m である。 ただし、最後の行の係数 a 及び b は入力の Xn・・・Xn-M1+1 から求める。

(49)を式(13)、(14)で与えられる時系列データ 図-13図-35 に適用した結果が下の図-39になる。 ここで、L=3M1=3, M2=M3=16 とし(各レイヤーのニューロンの数は 16, 16, 1)、データ128点を用いて係数をフィットし、32ステップ再帰的に予測した。 緑の実線がオリジナルのデータであり -127≤τ≤0 の128点を用いて(49)の係数 η1i, η2i, η3, ω1i,m, ω2i,m, ω3,m をフィットした。 赤の実線の -127≤τ≤0 の128点(ただしグラフには32点のみプロット)は 係数 η1i, η2i, η3, ω1i,m, ω2i,m, ω3,m をフィットした結果であり、オリジナルのデータと比較することにより どのくらい精度良く係数がフィットされたかを見ることができる。 赤の実線の 1≤τ≤32 の32点がフィットした係数から予測されたデータだ。 下段のグラフは、フィッティングの誤差(-127≤τ≤0 の128点、ただしグラフには32点のみプロット)と予測誤差(1≤τ≤32 の32点)を示している。

図-39

前回の(48)を用いた場合に比べて フィッティングの精度も予測の精度も高くは無いが(これは当然)、5-10ステップまで ある程度の精度で予測できていることが分かる。 ニューロンの数を増やせば 予測できるステップ数をもう少し伸ばせるかもしれない。

同様に R-R Interval データに適用した結果が下の図-40になる。 ここで、L=3M1=15, M2=M3=32 とし(各レイヤーのニューロンの数は 32, 32, 1)、データ128点を用いて係数をフィットし、32ステップ再帰的に予測した。

図-40

結果は、3-5ステップまで なんとかある程度の精度で予測できており、前回の(48)を用いた場合に比べて 少しだけましなように見える。

特筆すべきは、下段の右図の場合、10ステップ以上にわたってある程度の精度で予測できている事だ。 これを偶然で片付けるのはタコのすること。 こういうデータを精査することにより 新しい発見があるのだ。


Neural network の基本的な働きは、入力パターンを記憶しそれを出力に対応させることだ。 似たようなパターンデータが入力されると 似たようなデータが出力される。 従って、データが本来持っている性質には あまり左右されない。 R-R Interval データのように本質的にストキャスティック(stochastic)に振舞うデータであっても 入力パターンに対してある程度出力のパターンが決まっているのであれば、ステップ数は限られるにしても 予測することができるのだ。

Neural network の基本的な働きを簡単にに説明すると以下のようになる。 まず、入力段の一つのニューロンの動作は以下の数式で表される:

(50)

基本的に(49)と同じだけれでも、余計な添え字を省いて簡潔にした。 まず(50)の第一式は M+1 次元空間の超平面に過ぎない。 2次元でいうと 1次式だ。 これは、M+1 次元空間の中の点を 超平面より上にあるか下にあるかの2つのグループに分ける役割をしている。 2次元の場合について図で書くと以下のようになる。 A, B が2次元空間の異なる直線だ。 それぞれの直線は 点 a, b, c,・・・ を2つのグループに分けているのが分かると思う。

図-42

(50)の第2式は 単純なステップ関数だ。 ξ<0 の時に s=0 となり ξ>0 の時には s=1 となる。 結局ニューロン1つの働きは、「入力パターンデータを2つのグループに分類する」ということだ。

Neural network は、この単純な分類作業を複数のニューロンで別々に行い 入力パターンデータを複数のグループに分類し、それぞれのグループに対して出力を対応させるという動作を行っているに過ぎないのだ。