1音だけの入力で次の1音を予測するのは困難だと予想されるので、 入力層の素子数を30個にし、 目的でも述べたように、 音以外にそれぞれの素子に2値のデータをランダムに割り当てることによって決めた 入力信号を同時に入力して、次の音を出力できるようにした。 但し、この割り当ては学習前に一度ランダムに設定するだけで、 学習のたびにランダムに変化させるものではない。
図6.1にこの実験で使用するニューラルネットワークの構造を示す。
これは、
一つの音符を表すために音の長さと高さのデータを入力するニューロンが一つずつ、
0または1のデータを持つニューロンが28個という
計30個の素子を持つ入力層があり、
中間層は50個で、
出力層は1つの音符を表すために2個の素子を、
次の音の2値データの部分のために28個の素子を使用している。
よって入力層には教師信号とあらかじめ2値データをランダムに割り当てたデータを入力して、
出力層の出力と教師信号 とでバックプロパゲーションを行なう。
なお、 使用する教師信号は目的でも述べたように 同じフレーズを繰り返すことが前提であるため、 今回は「チューリップの花」とした。
この曲をニューラルネットに 15万回学習させた時の誤差の経過を図6.2 に示す。 誤差は教師信号とニューロンの出力を比較したものであるが、 前章で述べたようにニューロンで扱われている値は無次元の単純な数値であるため、 縦軸の値は物理量ではないので単位は表記していない。 以下、誤差に関するグラフについては同様である。
学習の結果、
図よりわかるようにどちらの値でも0.00001以下と誤差は充分小さくなった。
その目安として誤差が音符の長さでは 以上、
音符の高さでは
以上で間違った量子化がされるので、
この実験結果では誤差はそれ以下となったため充分学習できたと考えられる。
次に、学習を充分行なわせた後の
ニューラルネットワークが望ましい時系列を想起するかどうか実験してみる。
通常のニューラルネットワークに
学習後の結合荷重 を入力し曲を想起させた。
この結果、
図6.3 のように教師信号と全く同じ形で「チューリップの花」を
想起できることがわかる。